OAuth2 存取令牌(Access Token)的資料模型
Request-level 代行稽核 capability(ADR-013 稽核章節)。
代理/模擬的 JWT claim wire 契約(見 ADR-013)。
以 ServiceLoader 向 Hibernate 註冊框架提供的基本型別映射。
有界、可遺失的事件入口。呼叫者只做快照與 tryLock admission,不執行 I/O 或 logger。
關閉與 batch-start 共用短 gate;已標記 in-flight 的 batch 可以完成。
一次持久化 changeset 的身份與關聯脈絡。
與目標 DataSource/pool 相符的連線處置接點。
正常返回必須表示 lease 已從 pool 淘汰,不能以普通 close 歸還;無法確認時必須拋錯。
實例級稽核開關。FAILED、STOPPING、CLOSED 無法透過 enable 復原。
稽核事件表 Repository 基底。search 對映 Actuator AuditEventRepository.find
(principal / after / type 三參數皆可為 null,null 即不篩該條件)。
稽核事件持久列的欄位基類——Spring Boot Actuator AuditEvent 的通用持久落點(框架 opt-in 服務)。
入列前固定的純值快照;不保留可變 payload、Entity 或執行緒 context。
應用擁有的表/欄位映射。只接受簡單 SQL identifier;事件值永遠以參數綁定。
安全維運狀態;不含事件、SQL、連線資訊或原始例外。
應用選用的儲存 adapter;writeBatch 只由非同步工作者呼叫,不得歸還不安全連線。
只攜帶固定分類,不保留 SQL、原始 throwable 或事件資料。
非同步稽核的有界資源設定;不修改應用擁有的連線池。
已驗證 AuthPrincipal 的 Authentication adapter。
Azure Blob Storage 檔案儲存實作
AzureBlobFileStorage 的建構器
AzureStagingCleanupTask 的建構器
頁面上定位完成的繪製單位;座標以 pt 為單位、原點在頁面左上
營業行事曆——日期可選性的單一事實來源(ADR-012)
以具 TTI/TTL 的整數 Cache 實作 M2M token 端點限流。
同一連線 IP+trim/lowercase(ROOT) username 的滾動視窗限流。
cache 值是有界的不可變接受時間快照,不含 IP、username 或憑證。
必要的 cache state store 無法服務。
儲存格四邊框線覆寫;null 繼承上一層,零線寬明確不畫。
線條位於儲存格外緣,不增加內距或列高;跨欄只畫合併後的外緣。
每個跨頁實體片段重複指定的四邊,相鄰邊各自繪製。一般格依列由上到下、格由左到右;
跨列格於整筆其他列之後,依起始列及欄位順序繪製。
不提供 CSS border-collapse;共用邊需一致外觀時指定相同樣式或僅保留其中一邊。
M2M 憑證發放 capability——登入引擎的第四操作(
ADR-025)
RSQL 比較節點,表示一個欄位與預期值之間的比較條件。
組合多個 TenantIdResolver 的複合解析器
設定屬性值的遮蔽規則——「什麼算敏感」的單一事實來源。
內容類型檢測器,用於自動偵測檔案的 MIME 類型。
已認證的持久化憑證攜帶其發行環境;入口 gate 在認證之後驗證,不取代 principal 的授權。
Converts a value from any type to the target type T.
DB-backed 通知偏好過濾(Phase 2 預設,opt-out 模型)
DB 範本解析器(Phase 2):查一張範本表,指定語系 → 不分語系(wildcard)兩層,查無委派 fallback
Hard-disabled 的 No-Op CacheManager。
將已知下游錯誤契約轉譯為應用程式安全例外的擴充點。
JPA Entity 欄位型別規範中可機械判定的單一政策實作。
環境配置工具類,提供應用程式環境屬性的存取與管理功能。
決定完整錯誤診斷如何投影成 HTTP response 的最後一道政策接點。
點陣圖(image/png、image/jpeg),在 Figure 的框內等比置中;供外部圖表函式庫的輸出使用
圖表產生的 Figure 的識別、尺寸、替代文字與圖說
Figure 的繪圖清單;座標為 Figure 空間(pt,原點在 Figure 左上、y 向下),文字已量測
路徑;fill/stroke 為 null 表示不填或不畫線
一段文字;x、baseline 為使用者座標;fill/stroke 為 null 表示不填或不描邊
檔案交易日誌 SPI(append-only,best-effort)
檔案參照解析 SPI(選用,升級 sweep 為策略 B)
RSQL 查詢字串解析器,將 RSQL 語法轉換為
Filter 物件。
固定版面文件;幾何為 mm(左上原點,x 向右、y 向下),文字、字距、線寬與虛線長度為 pt。
頁面、明細容量及續頁由模板明確建立,不自動流動或分頁;元素依清單順序繪製。
黑白向量條碼。moduleMm 不縮放;一維碼 heightMm 為條高,QR 高度由模組數決定。
quietModules 為每側靜區,QR 至少 4、一維碼至少 10。payload 的業務檢查碼由應用提供。
不自動加入人眼可讀文字,需另建 Text。
PNG/JPEG 於框中等比置中,不拉伸;位元組防禦複製。
STATIC 為框線/底圖等預印內容;VARIABLE 為每份資料。套印只輸出 VARIABLE。
建立者判定的幾何問題,例如區塊重疊;不可用此接點表示權限、資料或版本錯誤。
自訂 code 應使用應用自己的穩定命名空間。嚴格政策拒絕,警示政策完整繪製。
任意方向線段,可用於撕線、點線或虛線分隔。
dashPatternPt 為交替的線段與空白長度(pt,與線寬同單位);空清單為實線,奇數個元素由 PDF 重複兩次形成週期。
dashPhasePt 為週期起點偏移,實線必須為 0。整條線以單一路徑繪製,不需拆段。
固定頁;同頁 ID 不得重複。嚴格政策要求框線筆畫也位於紙張內。
PDF 頁面外觀底稿,固定為 STATIC 層。頁碼從 1 起,不匯入註解、AcroForm 或動作。
來源頁面須無旋轉、CropBox 原點為 0、UserUnit 為 1,尺寸與目標頁相同;不自動縮放。
fillRgb 為 null 表示不填色;線寬必須大於 0。
CRLF/CR 正規化為 LF,Tab 展開成四個空格(非 tab stop);其他控制字元拒絕。
lineHeightPt 為基線間距;使用整個文字框所用字型的最大 ascent/descent 檢查上下界,不以裁切掩蓋超框。
letterSpacingPt 為同一行相鄰 code point 之間額外加的距離(非負,預設 0);行尾不加,
對齊、換行與超框檢查都以含字距的寬度計算。不做字距微調(kerning)。
超框依 LayoutPolicy 回報警示或拒絕;不靜默縮字或截斷。
固定版面無法依契約輸出;建構期 location 為元件 ID,render 期為頁碼/元件。
code/location 供持有例外的呼叫端診斷,不包含業務資料值。
ReportStatus.Failed 對外只保留通用 report.invalid,不傳送內部定位資訊。
公開量測器的實作;與 FixedRenderer 共用 PdfTextMeasurer 與 FixedTextMetrics。
固定版面 PDF 公開入口,與流式 ReportDocument/ReportArtifact 無關。
共用已驗證的字型登錄與 PDFBox runtime;renderer 可跨執行緒重用。
只處理幾何排版異常;字型、資產、容量與生成錯誤仍拒絕。
預設 OUTPUT_WITH_WARNINGS;只有明確選用 STRICT 才拒絕幾何異常。
平移校準以 mm,作用於全部輸出元素;不更改紙張尺寸。overlayOnly 略過 STATIC 層。
與流式排版分離;只共用 PDF runtime、字型量測及圖片嵌入。
以與
FixedPdfRenderer 相同的字型登錄、fallback 鏈與字距規則量測單行文字,
供應用在建立
FixedDocument 前自行計算座標(例如逐字定位、置中或拉伸標籤)。
同一份
ReportFonts 下,量得的寬度等於 renderer 對齊與超框檢查使用的寬度。
字體建構器,提供流暢的 API 來建立和配置字體。
ReportFonts.Builder#build() 的字型檢查
字型檔的來源;登錄時只記錄來源,render 時才讀取
由應用提供位元組;每次讀取都呼叫 supplier
Internationalization (I18n) utility class for handling translations and
locale-specific formatting.
圖片下載 Response 建構器(支援伺服端縮圖 + 條件式下載)
站內信通知的欄位 / 行為基類(Phase 3 IN_APP 通道的遞送載體)
IN_APP 通道(Phase 3):遞送即寫一列站內信
站內信資料存取基底(讀取面供 app REST API 使用)
應用提供資料表映射與連線池;寫入直接擁有 lease,永不加入呼叫者交易。
不安全的 lease 必須先移出池;無法確認時保留隔離,禁止一般 close。
認證入口點,回傳 RFC 7807 格式的 JSON 錯誤回應
從 OAuth2 JWT 的 claims 中解析租戶 ID
盡量不跨頁的區塊;高於整頁時 renderer 回報 WARNING 後照常跨頁
排版、字型、圖片與資源的 diagnostic 代碼(REP-03 契約)
一次 render 的 diagnostic 收集器
折線圖:每個系列一條折線與資料點,null 使線段中斷
LINE 推播遞送 SPI(LINE 通道的應用層接縫)
LocalFileStorage 的 staging 清理任務。
LocalStagingCleanupTask 建構器。
代行登入的結果。身份仍是登入者本人(sub 不變),只是多了授權人的權限。
登入保護專用的 cache 邊界;不得包住密碼、帳號政策或 SQL 操作。
source 只由引擎在驗證 opaque Refresh Credential 後填入,不能由 wire model 提供。
登入結果(引擎級——wire DTO 由消費端殼自 principal/acting 組裝)
Refresh 成功後的引擎結果;replacement credential 由 HTTP 殼寫入 Cookie,不放入 wire body。
讓 HTTP 層的 enum wire 值一律小寫
OAuth2 認證(client_credentials)
外寄郵件的安全政策——環境層、對所有 Mailer 一律生效
無可用的郵件服務——
RoutingMailer 解析不到任何郵件設定(provider 給不出 spec、
亦無系統預設 Mailer)時,於寄信/組信當下拋出。
只輸出呼叫端採取行動所需之穩定錯誤投影的應用政策範例。
Vite/Host 共用的 Mock Access Session 護欄;不是產品營運政策。
Native HTTP adapter for process-scoped MSW authentication sessions.
預設範本解析器:Spring MessageSource 訊息束 + ${...} 具名插值
遞送嘗試回呼 hook(選用;Phase 2 稽核)
通知遞送 Outbox 列的欄位基類(每收件人 × 每通道一列)
Outbox 遞送器:fast-path 非同步遞送 + 輪詢重試/補送
使用者通知偏好的欄位基類(Phase 2 opt-out)
通知偏好過濾 SPI(選用;Phase 2 opt-out)
一則通知請求(描述「發生了什麼」,不描述「怎麼遞送」)
可客製通知範本的欄位基類(per-locale 覆寫某通知型別×通道的主旨 / 內文)
OAuth 2 認證服務
負責處理 OAuth 2 Client Credentials Flow 的核心邏輯
OAuth 2 郵件認證器 - 專注於 JavaMail 認證橋接
使用 OAuth2Authenticator 進行實際的 OAuth 2 認證邏輯
總頁數;只能用在固定頁首頁尾或文件的每頁摘要,完成排版後由 renderer 回填
頁首或頁尾;左、中、右三格,v1 全部頁面共用同一組
接收排版完成的頁面;PDF 實作繪製後即可釋放 box
密碼登入請求配額;成功與失敗的認證請求都計數,與 LoginLockout 的失敗鎖定分開。
resetAt 是下一個名額可用時間;retryAfterSeconds 是向上取整的等待秒數。
degraded=true 時配額未知(remaining=-1、resetAt=null),仍需執行所有認證與 SQL 檢查。
使用者座標中的路徑,只含移動、直線、三次貝茲與封閉;其他 SVG 指令在解析時轉換
diagnostic 的節點路徑,例如 body/2[table:orders]/row/1523;驗證器與 renderer 共用同一格式
與 authoring model 無關的完成 PDF;呼叫端擁有並負責 close。
關閉後不可再開串流;已開串流可讀完,最後一個串流關閉時刪除暫存檔。
close 可重複呼叫,清理失敗只記 WARN,不取代產生或保存結果。
固定 PDF 的幾何排版診斷;頁碼為原始 PDF 的實體頁碼(從 1 起)。
識別與訊息由建立者提供,對外傳送前應用須確認不含私密資料。
PDFBox 實作的 ReportRenderer
兩階段輸出(REP-03 契約「輸出語意」):產生階段排版、繪製並把完整 PDF 序列化到暫存檔;最後一次取消檢查通過後,
寫出階段才把暫存檔複製到 out。產生階段的任何失敗或取消都不寫出任何位元組。
從已保存的 PDF 擷取選取的頁面(REP-08)
從已保存的 PDF 擷取選取的頁面(REP-08)
選用的 PDFBox 相依:確認存在後才載入 internal.pdf 的類別
應用持久化資料的 purpose-scoped 可逆加密能力。
Actuator
AuditEventRepository 的
持久實作:把稽核事件寫入應用宣告的稽核表,取代消費端
可選的 in-memory ring buffer(易失)。
領域無關的框架 opt-in 服務(見 ADR-013「界線修訂 R1」)。
本類保留原同步 JPA 契約;新版 audit feature 改用
AsyncAuditEventRepository 與 storage provider,
不會以本類作非同步寫入失敗時的 fallback。
DB-backed 遞送稽核 listener(Phase 2 預設):每次嘗試寫一列遞送稽核 log
主體目錄視圖(唯讀)——feature 對「他人」的全部合法認知
(
ADR-024 決策三)
RFC 7807/9457 ProblemDetail 工廠類別
維運受控入口。scopeId 為消費端的 opaque 識別,null 表示平台;不賦予 scope 權限。
應用即時裁決具名 scope 是否可提供入口;不假定租戶 entity 或 repository。
協定/credential 保存的不可變入口快照;消費時仍須核對 current entry 與身分。
HTTP protocol 的已驗證入口接點;沒有 bean 或停用時維持單一入口行為。
實作只能讀取受信任 ingress 所綁定的 request attribute,不得據此授權或建立租戶 context。
不可變入口目錄;origin 唯一,path 不作識別。沒有 DB、Entity 或自動組態。
只保存 request attribute,不使用 ThreadLocal、不解析 Host、不改認證 scope。
canonical HTTP(S) origin;與 public path 分離,不提供認證或代理信任判斷。
已驗證的 Server 對外基底;不依 Servlet context、request 或應用設定推算。
應用已確認可信的 scope,非原始 Host 或其他未驗證的 request header。
無 scope(含登入前或固定部署的背景工作)明示使用 unspecified()。
依顯式可信業務脈絡選擇對外位址;實作由應用組裝,不負責認證/授權。
沒有 Range,或語法不合法、多個 range:回完整內容
Opaque Refresh Credential 的產生與單向摘要 primitive。
Refresh Session 被拒絕時保留具體技術原因的認證例外。
Refresh Credential 的使用協定。
Refresh Session persistence SPI。
供 identity switch 等會立即替換或撤銷 family 的流程,原子驗證 credential 並滑動 idle window。
同一 credential 的並行使用可依序成功;logout/expiry/rotation 與本操作以相同 row lock 排序。
compare-and-rotate command。expectedGeneration 與 currentCredentialHash 必須同時吻合。
render 完成的報表產物(REP-05);以 renderer 的暫存檔承載,關閉後刪除
與 renderer 無關的報表文件:資料已套入、尚未分頁
Section 建構器;摘要的線、間距及文字預設沿用文件 PageSummary。
renderer 使用的字型登錄;不可變,可在多執行緒共用
字型家族;每個字面是一條 fallback 鏈,regular 必填
家族的字面設定;每個方法依序列出 fallback 字型
文件 metadata;除 keywords 外皆為選填
建構時驗證;ReportDocument.Builder#build() 呼叫
選取的 PDF physical pages(REP-08)
連續頁的區間(1 <= from <= to <= MAX_PAGE)
選頁不合法(REP-08);經 StandardRestExceptionHandler 轉為 400
render 在產生階段被取消;已開啟的列來源與暫存資源都已釋放,out 未被寫入
報表產生的狀態值型別;status() 對齊前端 ReportViewer 的 generating/ready/failed/expired
報表模型不合法;建構時由 ReportDocument.Builder#build() 丟出,讀取延遲列時由 renderer 丟出
雙模式資源伺服器的組裝核心(ADR-009 點 1、機制上框架)
Stateless JWT resource server 的固定安全組裝機制。
寄信當下解析目標的
Mailer(比照 Spring 的 routing DataSource 模式)
表格列在群組結構中的角色;renderer 依此產生續接列與避免群組標題孤立於頁尾
表格列的驗證規則;建構時檢查記憶體中的列,讀取時檢查延遲來源的列,兩者共用本類別
RSA key pair 的建立與標準 wire encoding 解析。
scaling can be set with one of these five values:
FEDERATED 模式的 JWT → Authentication 轉換器
目前分節實際總頁數,排版完成後回填;可用於分節每頁頁首尾,及頂層 pageBreakBefore 分節內頁面的 PageSummary。
目前分節頁碼,從 1 開始;可用於分節每頁頁首尾,及頂層 pageBreakBefore 分節內頁面的 PageSummary。
分節每頁頁首尾;全寬區塊或左中右行內內容自動換行,保留實際高度與指定最小高度的較大值。
未設定的分節頁首/頁尾各自沿用文件區域;設定者取代該文件區域。
從 Spring Security、
ActingContext 與當前 HTTP request 建立 Entity audit changeset 脈絡。
有效 credential 與已知 family 不符;HTTP 殼須回 409 session-changed 且保留 Cookie。
不透明的憑證使用環境綁定;框架不解讀 domain/tenant/入口目錄。
activationExpiresAt 非空的 family 只能經一次性 activation 後使用。
應用提供憑證使用環境政策。只有登入引擎驗過目前 family 後,才提供切換來源。
Refresh Session 的應用政策重新驗證 hook。
由可信組裝共用的固定期限政策;不依 browser app 字串選擇。
僅由 HTTP 殼讀取實際 Cookie;缺 Cookie 時仍明示傳入 null。
驗簽並與 authoritative family 對照後的 wire 組裝資料。
綁定於 Refresh Session family 的應用政策識別。
應用明示每個 principal type 的 immutable application account ID 契約;不能由反射推定資料不變性。
bounded Session profile 需要的 authoritative store 能力。
建立供檔案儲存、交易 journal 與暫存清理共用的 SSH client。
工具類別用於從 Filter 建構 Spring JPA Specification
標準 REST API 異常處理器基類 (RFC 7807)
已保存的 PDF 中性描述;保存期限以 storedAt 起算。
把 PdfArtifact 保存到 FileStorage
StoredPdf stored = StoredPdfs.save(fileStorage, partition, renderer.render(document, options, "form.pdf"));
partition 必須是經應用驗證的可信分區識別,不可直接接受外部輸入或路徑片段(如 ..)。
partition 由應用決定:tenant 模組傳目前 tenant ID,tenantless 模組傳應用常數或依資料範圍設計的值。
保存期限由應用以 StoredPdf.storedAt() 計算並自行刪除;框架不排程刪除。
把 ReportArtifact 保存到 FileStorage
StoredReport stored = StoredReports.save(fileStorage, partition, renderer.render(document, options));
partition 由應用決定:tenant 模組傳目前 tenant ID,tenantless 模組傳應用常數或依資料範圍設計的值。
保存期限由應用以 StoredReport.storedAt() 計算並自行刪除;框架不排程刪除。
字串 → enum 的大小寫不敏感轉換(查詢參數/路徑變數)
把覆寫值依合併順序解析成完整樣式;renderer 使用
解析並通過政策檢查的 SVG:viewBox 與依文件順序排列的繪圖項目(使用者座標)
preserveAspectRatio 的九種對齊;數值為水平、垂直的比例位置
繪圖項目;transform 為祖先與自身 transform 的累積(不含 viewBox 映射)
一段同樣式的文字;x/y 為 null 表示接續前一段的位置
一個 text 元素;runs 為其文字與 tspan 依序展開
SVG 不符合受限子集;由模型驗證轉成 report.model.figure.svg-* diagnostic
解析受限 SVG 子集(REP-04 契約):白名單元素與屬性、禁止 DOCTYPE 與外部資源、複雜度上限
計算後的樣式;依 SVG 規則由祖先繼承(opacity 除外,另以累乘的群組不透明度處理)
單列樣式;null 內距/下線繼承表格,上線 null 表示不畫。
線寬為零明確表示不畫線;與 null 的繼承不同。線畫在列邊緣,不增加列高。
可拆列的每個實體片段都使用相同線條與內距。
表格樣式覆寫值;每個欄位為 null 時繼承上一層
renderer 的暫存檔:序列化完成的 PDF 與 PDFBox 的頁面內容暫存(scratch)
Deprecated, for removal: This API element is subject to removal in a future version.
明確啟用的文字流配置;未在 ParagraphStyle 設定時,原有排版及 bytes 不變。
字寬量測;排版引擎只透過此介面取得字型資訊,因此不相依 PDF 實作
字型的不透明識別;繪製時由對應的 PDF 實作解讀
二維仿射轉換:x' = a·x + c·y + e、y' = b·x + d·y + f(與 SVG matrix(a b c d e f) 相同)
A translation container that stores key-value pairs for internationalization.
讀取延遲列時逐列驗證的游標;renderer 以它包裝 RowSource#open() 的結果
YearMonth 的 Hibernate 基本型別映射:以 ISO 8601
YYYY-MM 字串存成
VARCHAR(7)。
ZIP 檔案下載 Response 建構器(支援 Range Request)
TenantContextIdentifierResolver與 ADR-016)。 本類別的手動 enable/disable 模式正是 ADR-016 所修正的缺陷根源:它要求有人在「Session 已綁定」的時機呼叫,實際只有 OSIV 綁定時成立,且失敗被自身 catch 吞掉。 跨租戶存取請改走 root session,而非關閉 filter。預計於 4.2.0 移除。