Project

General

Profile

CR #201 » SCS-019_批次框架與作業程式設計規格.md

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

 

SCS-019 批次框架與作業(common-batch)程式設計規格(跨域)

項目 內容
文件編號 SCS-019
版本 1.0
狀態 已核定(規格先行·跨域)
對應需求 批次相關 FR(ISS-2.8 帳單批次、ISS-2.13 清算、SYS-2.8 遷移、ISS-2.7 分期結清等)+ BRD-003 效能測試/容量規劃 NFR
套件根 com.beam.cardcore.batch(平台函式庫 common-batch)
關聯文件 CSP-001 §8、SDD-001~007、BRD-002、GOV-005

1. 對應需求

FR 編號 需求名稱 批次作業
ISS-2.8 信用卡帳單管理 帳單週期產生批次
ISS-2.13 / ACQ-4.6 / DEB-3.6 清算結算 清算檔解析/結算批次
SYS-2.8 / SYS-3 資料遷移 遷移波次批次(W0–W4)
ISS-2.7 分期 分期到期/提前清償批次
RWD-5.1 點數 點數到期批次(POINTS_EXPIRY_BUCKETS)

另含:SETTLEMENT_BATCH_JOB(結算)、INTEREST/FEE 計提批次。


2. 框架職責(引用 common-batch 實測類別)

依 common-batch 函式庫(已交付,3 測試 0 失敗):

類別 職責
BatchJob 批次定義(名稱、參數、排程)
JobStatus 狀態(PENDING/RUNNING/COMPLETED/FAILED)
JobExecution JobExecutionRepository InMemoryJobExecutionRepository 執行實例與儲存(可續跑依據)
BatchOrchestrator 編排與調度
ScheduledBatchRunner 排程觸發(Spring @Scheduled 或 Quartz)
SettlementBatchJob 結算範例作業

設計原則:冪等(同參數重跑安全)、可續跑(檢查點)、容錯(單筆失敗不中斷整批,錯誤隔離)。


3. 批次作業清單(設計意圖,待各服務 SCS 凍結)

作業 所屬服務 頻率 關鍵邏輯
帳單週期產生 statement-service 月 取當期交易/餘額產生 STATEMENTS
清算檔解析/結算 clearing-service 日 解析 VCF/EMS,對帳後請款
遷移波次 migration-service 專案期 W0–W4,可暫停/回退
分期到期 installment-service 日 標 OVERDUE、影響 DEFAULTED
點數到期 rewards-service 日 POINTS_EXPIRY_BUCKETS → EXPIRE
利息/費用計提 pricing-service+posting-service 日 ADB 計息、費用入帳
繳款分配 payment-service 即時+批次 自扣批次

4. 關鍵邏輯

  • 分塊(Chunk):大批量分塊處理,降低記憶體與鎖定。
  • 續跑:經 JobExecution 檢查點,中斷後從斷點續跑(遷移/清算必須)。
  • 補償:失敗批次經冪等重試;遷移須支援回退(SCS-015)。
  • 排程:ScheduledBatchRunner 觸發;時區與銀行營業日曆須納入。

5. 外部依賴與降級

依賴 失敗處理
各領域服務(資料來源/入帳目標) 批次失敗重跑(冪等);不影響線上即時交易

6. 測試案例(對應 TRP-001)

  • 批次冪等(重跑無副作用)、可續跑(中斷續跑正確)、錯誤隔離(單筆失敗整批續行)
  • 各作業對應 FR 驗收(見 §1)

7. 已知限制(誠實揭露)

  • 各批次作業之具體參數與排程頻率待對應領域 SCS(SCS-011/013/015 等)凍結。
  • common-batch 為函式庫,實際作業類別須由各服務實作並註冊。
  • 排程協調器(避免重複觸發、分散式鎖)設計待基礎設施確認。
(61-61/67)