Project

General

Profile

CR #226 » CR-025_授權稽核軌跡查詢端點.md

內容更新:內部稱謂去識別化(2026-10-18) - Redmine Admin, 10/18/2026 05:32 AM

 

CR-025 授權稽核軌跡查詢端點(補既有缺口)

項目 內容
文件編號 CR-025
版本 1.0
提出日 2026-09-29
提出者 WorkBuddy AI(開發團隊)
緣起 BEAM PMO 指示「桶 C 盤點後開工」。SDD-007 §5.1.2.3 之桶 C「稽核軌跡查詢」(/system/audit)原記「表存在但無查詢端點」——本 CR 即為該缺口之補實作
影響範圍 tools/gen_openapi.py → contracts/openapi/authorization-service.yaml(+1 端點、+2 schemas);SCS-001 §7.9(新增);SDD-007 §5.4.25(新增);AuthorizationRepository/JdbcAuthorizationRepository/AuthorizationController;前端 api/authorizations.ts/pages/AuditConsole.tsx/App.tsx
狀態 ✅ 已執行(2026-09-29)——規格先行:立 SCS-001 §7.9 → 改產生器 → 重生契約(79 端點、0 錯誤)→ 實作 → SDD-007 §5.4.25 → 頁面

1. 缺口之證據

兩張稽核表早已存在且有資料(CC_AUTH):

表 產生者 欄位 資料
AUTH_OVERRIDES 人工/強制核決(§7.8,#A-98) ID/AUTH_NO/DECISION/FORCE_FLAG/OPERATOR_ID/REASON/CREATED_AT 2 筆
AUTH_REVERSALS 沖正(§7.6,#A-95/96) ID/AUTH_NO/REVERSAL_TYPE/AMOUNT/REASON/HOLD_ID/CREATED_AT 2 筆

但無任何查詢端點——資料寫得進去、讀不出來(稽核留痕形同虛設:出事時查不到)。

佐證:contracts/openapi/authorization-service.yaml 原 8 端點中無稽核相關端點;
AuthorizationRepository 亦無稽核查詢埠。

2. 變更內容

2.1 新增端點(1 支)

方法 路徑 語意 回應
GET /api/v1/authorizations/audits?eventType=&limit= 稽核軌跡查詢(統一時間軸) 200 AuthAuditEventList

eventType:ALL(預設)/OVERRIDE/REVERSAL。limit:預設 20、上限 200(程式中 Math.min(Math.max(limit,1),200) 硬性夾擠)。

2.2 新增 schema(2 支)

  • AuthAuditEvent:auditId/eventType/authNo/actor/action/amountMinor/reason/occurredAt
  • AuthAuditEventList:AuthAuditEvent[]

2.3 設計決策

決策 理由
統一時間軸(兩表 UNION ALL 後依時間遞減) 使用者關心「這筆授權發生過什麼」,而非「它屬於哪張表」;分開兩頁會迫使使用者自行拼湊時間序
action 值域正規化(reversal_type || '_REVERSAL') 使兩類事件之動作欄位同一值域(APPROVE/DECLINE/FULL_REVERSAL/PARTIAL_REVERSAL),畫面得以統一呈現
actor 對沖正回 null AUTH_REVERSALS 無操作者欄位——如實呈現,不臆造(CSP-001 §8 B2);畫面顯示「未記錄」
append-only 唯讀 稽核紀錄一旦可竄改即失去證據力,故不提供修改/刪除端點

3. 範圍(誠實揭露)

本端點涵蓋「授權服務」之稽核軌跡。其餘服務之稽核(如 party 管制碼異動、card 生命週期)
尚無查詢端點 → 已登記 C-46,待各自就緒後擴充。
→ 頁面須明載此範圍,不得讓使用者誤以為這是「全系統稽核」。

另:AUTH_REVERSALS 若要補「操作者」,須於沖正路徑加 operator_id 欄位(另立 CR,本次未做)。

4. 驗證

項 結果
契約重生 ✅ 79 端點、0 錯誤(authorization-service 8 → 9)
單元測試 ✅ BUILD SUCCESSFUL
真機驗證 見 HANDOVER §3.A #A-102

5. 修訂記錄

版本 日期 說明
1.0 2026-09-29 初版:缺口證據(表有資料、端點全無);新增 1 端點+2 schemas;設計決策(統一時間軸/值域正規化/actor 如實 null/唯讀);範圍揭露
    (1-1/1)