Project

General

Profile

CR #201 » SDD-002_DFD與流程分解.md

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

 

SDD-002 DFD 與流程分解

項目 內容
文件編號 SDD-002
版本 1.0
狀態 已核定
撰寫者 SD
審查者 SA / BA
對應需求 AUT-1.11.3、ISS-2.32.13、ACQ-4.1~4.6、SYS-3

1. 說明

本文件以**資料流圖(Data Flow Diagram)**分解系統流程,層級如下:

層級 內容 用途
L0 系統上下文(與外部實體之資料流) 界定系統邊界
L1 主要處理程序(7 個) 界定服務群組
L2 關鍵處理程序細分 對應用例與 Sequence

符號約定:本文件以 Mermaid flowchart 表達 DFD。
圓角節點=處理程序(Process);方形節點=外部實體(External Entity);
資料庫柱狀節點以 [( )] 表達資料存放(Data Store)。


2. DFD Level 0 系統上下文

flowchart LR
  CUST(["持卡人"])
  MERC(["特店 / 收單機構"])
  ORG(["卡組織"])
  TICK(["票證公司"])
  CH(["數位通路"])
  CRED(["徵審系統"])
  CORE(["銀行核心"])
  GLS(["總帳系統"])
  HSM(["HSM"])
  NOTI(["通知通道"])

  P0["信用卡核心系統"]

  CH -->|"申請、查詢、繳款指令"| P0
  P0 -->|"帳務、點數、額度查詢結果"| CH
  CUST -->|"交易"| MERC
  MERC -->|"授權 / 請款"| P0
  P0 -->|"授權回應 / 撥款"| MERC
  ORG -->|"授權 / 清算檔"| P0
  P0 -->|"授權請求 / 清算結果"| ORG
  TICK -->|"加值 / 餘額"| P0
  P0 -->|"加值指令"| TICK
  P0 -->|"徵信查詢"| CRED
  CRED -->|"評分 / 核決"| P0
  P0 <-->|"CIF / 存款帳號"| CORE
  P0 -->|"會計分錄"| GLS
  P0 <-->|"金鑰 / PIN 驗證"| HSM
  P0 -->|"通知內容"| NOTI

3. DFD Level 1 主要處理程序

flowchart TD
  E1(["持卡人 / 特店 / 卡組織"])

  P1["P1 授權處理"]
  P2["P2 帳務處理"]
  P3["P3 額度處理"]
  P4["P4 卡片與客戶處理"]
  P5["P5 帳單與繳款處理"]
  P6["P6 權益與分期處理"]
  P7["P7 清算與爭議處理"]

  D1[("D1 授權資料")]
  D2[("D2 帳務資料")]
  D3[("D3 額度資料")]
  D4[("D4 卡片與客戶資料")]
  D5[("D5 帳單與繳款資料")]
  D6[("D6 點數與分期資料")]
  D7[("D7 清算與爭議資料")]

  E1 -->|"授權請求"| P1
  P1 -->|"授權回應"| E1
  P1 -->|"佔用請求"| P3
  P1 -->|"授權紀錄"| D1
  P1 -->|"授權核准事件"| P2

  E1 -->|"請款檔"| P2
  P2 -->|"入帳結果"| D2
  P2 -->|"釋放佔用"| P3
  P2 -->|"帳務事件"| P5
  P2 -->|"帳務事件"| P6
  P2 -->|"帳務事件"| P7

  P3 -->|"額度異動"| D3
  P3 -->|"額度快照"| P1

  P4 -->|"卡片 / 客戶主檔"| D4
  D4 -->|"卡片狀態"| P1
  D4 -->|"歸戶資訊"| P5

  P5 -->|"帳單資料"| D5
  P5 -->|"繳款結果"| E1
  P5 -->|"恢復額度"| P3
  P5 -->|"繳款入帳"| P2

  P6 -->|"點數 / 分期"| D6
  P6 -->|"佔用請求"| P3
  P6 -->|"攤還入帳"| P2

  P7 -->|"清算 / 爭議"| D7
  P7 -->|"沖正請求"| P2

3.1 處理程序與服務對照

處理程序 服務 主要資料存放
P1 授權處理 authorization-service D1 auth.*
P2 帳務處理 posting-service、pricing-service D2 posting.*、pricing.*
P3 額度處理 limit-service D3 lim.*
P4 卡片與客戶處理 card-service、party-service、product-service D4 card.*、party.*、product.*
P5 帳單與繳款處理 statement-service、payment-service D5 statement.*、payment.*
P6 權益與分期處理 rewards-service、installment-service D6 rewards.*、installment.*
P7 清算與爭議處理 clearing-service、dispute-service、merchant-service D7 clearing.*、dispute.*、merchant.*

4. DFD Level 2 關鍵處理程序

4.1 P1.1 授權檢核(發卡授權)

flowchart TD
  IN(["授權請求"])
  C1["P1.1.1 電文解析與欄位校驗"]
  C2["P1.1.2 卡片狀態與管制碼檢核"]
  C3["P1.1.3 黑名單檢核"]
  C4["P1.1.4 可用額度檢核"]
  C5["P1.1.5 風險參數評分"]
  C6["P1.1.6 EMV 驗證"]
  C7["P1.1.7 專用額度與通路限額檢核"]
  DEC{"P1.1.8 決策彙總"}
  OUT(["授權回應"])

  D1[("D4 卡片與客戶")]
  D2[("D3 額度")]
  D3[("D1 授權")]
  PRM[("D4 參數與規則")]

  IN --> C1 --> C2
  C2 --> C3 --> C4 --> C5 --> C6 --> C7 --> DEC
  D1 --> C2
  D2 --> C4
  PRM --> C2
  PRM --> C4
  PRM --> C5
  PRM --> C7
  DEC -->|"核准"| OUT
  DEC -->|"拒絕"| OUT
  DEC -->|"核准"| D3
  C4 -->|"佔用請求"| D2

檢核順序為參數驅動:product.rule_sets 中 rule_type='AUTH_CHECK' 之 priority 決定執行順序;
status='INACTIVE' 之規則不執行。不得以程式碼硬寫順序(BRD-001 BR-02-01)。

4.2 P2.1 請款入帳

flowchart TD
  IN(["請款檔 / 即時請款"])
  C1["P2.1.1 檔案接收與格式檢核"]
  C2["P2.1.2 冪等鍵檢核"]
  DEC1{"P2.1.3 是否重複"}
  C3["P2.1.4 授權請款比對"]
  DEC2{"P2.1.5 比對結果"}
  C4["P2.1.6 產生入帳交易"]
  C5["P2.1.7 分欄位入帳"]
  C6["P2.1.8 釋放授權佔用"]
  C7["P2.1.9 更新餘額與帳齡"]
  C8["P2.1.10 產生帳務明細"]
  EXC["P2.1.11 異常處理"]
  OUT(["入帳結果與通知"])

  D1[("D2 帳務")]
  D2[("D1 授權")]
  D3[("D3 額度")]

  IN --> C1 --> C2 --> DEC1
  DEC1 -->|"是"| EXC
  DEC1 -->|"否"| C3
  D2 --> C3
  C3 --> DEC2
  DEC2 -->|"金額不符 / 授權失效"| EXC
  DEC2 -->|"相符"| C4
  C4 --> C5 --> C6 --> C7 --> C8 --> OUT
  C5 --> D1
  C7 --> D1
  C6 --> D3
  EXC --> OUT
  EXC --> D1

4.3 P5.1 繳款與即時恢復額度

flowchart TD
  IN(["繳款指令 / 自扣檔"])
  C1["P5.1.1 繳款受理"]
  C2["P5.1.2 銷帳檢核"]
  C3["P5.1.3 繳款分配"]
  C4["P5.1.4 帳務入帳"]
  C5["P5.1.5 即時恢復額度"]
  T1["P5.1.6 三日未銷帳計時器"]
  DEC{"P5.1.7 是否收到銷帳檔"}
  R1["P5.1.8 重新佔額"]
  OUT(["繳款結果與通知"])

  D1[("D5 繳款")]
  D2[("D2 帳務")]
  D3[("D3 額度")]

  IN --> C1 --> C2 --> C3 --> C4 --> C5 --> OUT
  C1 --> D1
  C3 --> D1
  C4 --> D2
  C5 --> D3
  C5 --> T1
  T1 --> DEC
  DEC -->|"是"| OUT
  DEC -->|"否,逾三日"| R1
  R1 --> D3
  R1 --> D1

時序要求:C5 即時恢復額度 必須在繳款入帳後 1 秒內完成,
不得等日終批次(BRD-001 BR-05-01、POC-11)。

4.4 P5.2 帳單批次產製

flowchart TD
  IN(["帳單週期到達"])
  C1["P5.2.1 週期判定與分流"]
  C2["P5.2.2 歸戶與統編合併"]
  C3["P5.2.3 計算本期應繳"]
  C4["P5.2.4 產生帳單資料"]
  C5["P5.2.5 套用帳彩"]
  C6["P5.2.6 產生各形式帳單"]
  C7["P5.2.7 帳單發送"]
  C8["P5.2.8 歸檔與稽核"]
  CKPT[("D5 Checkpoint")]
  OUT(["帳單檔與通知"])

  D1[("D2 帳務")]
  D2[("D4 客戶")]
  D3[("D5 帳單")]

  IN --> C1 --> C2 --> C3 --> C4 --> C5 --> C6 --> C7 --> C8 --> OUT
  D2 --> C2
  D1 --> C3
  D3 --> C4
  C4 --> CKPT
  C7 --> D3
  CKPT -->|"異常後自 Checkpoint 續跑"| C4

效能要求(POC-16):1,000 萬筆交易資料之帳單批次須於 1 小時內完成;
批次期間 ONLINE 至少維持 200 TPS;第 135 萬筆異常後可自該筆續跑。

4.5 P2.2 沖正處理

flowchart TD
  IN(["沖正申請"])
  C1["P2.2.1 建立沖正案件"]
  C2["P2.2.2 鎖定原始交易"]
  DEC1{"P2.2.3 原始交易狀態"}
  B1["P2.2.4 直接反向沖銷"]
  B2["P2.2.5 產生調整交易"]
  B3["P2.2.6 提出清算調整"]
  C3["P2.2.7 產生反向分錄"]
  C4["P2.2.8 更新餘額與額度"]
  C5["P2.2.9 還原授權佔用"]
  C6["P2.2.10 留存沖正軌跡"]
  APR{"P2.2.11 是否需覆核"}
  OUT(["沖正結果"])

  D1[("D2 帳務")]
  D2[("D3 額度")]
  D3[("D7 清算")]

  IN --> C1 --> C2 --> DEC1
  DEC1 -->|"已入帳未出帳"| B1
  DEC1 -->|"已出帳"| B2
  DEC1 -->|"已清算"| B3
  B1 --> C3
  B2 --> C3
  B3 --> C3
  C3 --> APR
  APR -->|"是"| C6
  APR -->|"否"| C4
  C4 --> C5 --> C6 --> OUT
  C3 --> D1
  C4 --> D1
  C5 --> D2
  B3 --> D3

4.6 P3.1 額度調整

flowchart TD
  IN(["額度異動申請"])
  C1["P3.1.1 類型判定"]
  C2["P3.1.2 權限與客層檢核"]
  DEC1{"P3.1.3 是否超限"}
  C3["P3.1.4 覆核"]
  DEC2{"P3.1.5 覆核結果"}
  C4["P3.1.6 生效"]
  C5["P3.1.7 同步授權服務"]
  C6["P3.1.8 寫入稽核"]
  REJ["P3.1.9 拒絕並回覆"]
  OUT(["額度結果"])

  D1[("D3 額度")]
  D2[("D4 參數")]

  IN --> C1 --> C2 --> DEC1
  D2 --> C2
  DEC1 -->|"是"| C3
  DEC1 -->|"否"| C3
  C3 --> DEC2
  DEC2 -->|"核准"| C4
  DEC2 -->|"駁回"| REJ
  C4 --> C5 --> C6 --> OUT
  C4 --> D1
  C5 -->|"額度同步事件"| OUT
  REJ --> OUT

4.7 P7.1 清算比對

flowchart TD
  IN(["交易日終批次"])
  C1["P7.1.1 清分作業"]
  C2["P7.1.2 依卡組織分派"]
  C3["P7.1.3 依幣別分組與匯率轉換"]
  C4["P7.1.4 產生本行清算檔"]
  C5["P7.1.5 與卡組織清算檔比對"]
  DEC{"P7.1.6 差異筆數為零"}
  C6["P7.1.7 差異明細產出"]
  C7["P7.1.8 差異分類與處理"]
  C8["P7.1.9 調扣與撥款"]
  C9["P7.1.10 會計分錄"]
  OUT(["清算報表"])

  D1[("D2 帳務")]
  D2[("D7 清算")]

  IN --> C1 --> C2 --> C3 --> C4 --> C5 --> DEC
  D1 --> C1
  C4 --> D2
  DEC -->|"是"| C8
  DEC -->|"否"| C6 --> C7 --> C5
  C8 --> C9 --> OUT
  C9 --> D2

4.8 P7.2 爭議處理

flowchart TD
  IN(["爭議申請"])
  C1["P7.2.1 案件建檔"]
  C2["P7.2.2 類型分流"]
  C3["P7.2.3 調單請求"]
  DEC1{"P7.2.4 證據完整"}
  C4["P7.2.5 補充資料"]
  DEC2{"P7.2.6 逾時未回覆"}
  C5["P7.2.7 裁決"]
  DEC3{"P7.2.8 責任歸屬"}
  C6["P7.2.9 卡組織仲裁"]
  C7["P7.2.10 帳務調整"]
  C8["P7.2.11 額度恢復"]
  C9["P7.2.12 結案通知"]
  OUT(["爭議結果"])

  D1[("D7 爭議")]
  D2[("D2 帳務")]

  IN --> C1 --> C2 --> C3 --> DEC1
  DEC1 -->|"否"| C4 --> DEC1
  DEC1 -->|"是"| DEC2
  DEC2 -->|"是"| C5
  DEC2 -->|"否"| C5
  C5 --> DEC3
  DEC3 -->|"需仲裁"| C6 --> C7
  DEC3 -->|"發卡行 / 收單行責任"| C7
  C7 --> C8 --> C9 --> OUT
  C1 --> D1
  C7 --> D2
  C9 --> D1

5. 流程分解對照表

DFD 處理程序 用例 Sequence API FR
P1.1 授權檢核 AuthorizeTransaction SDD-003 §3 POST /api/v1/authorizations AUT-1.1
P1.1 授權檢核(收單分流) AuthorizeTransaction SDD-003 §4 同上 AUT-1.2
P1.1 授權檢核(路由) RouteTransaction SDD-003 §4 同上 AUT-1.3
P2.1 請款入帳 PostTransaction SDD-003 §5 POST /api/v1/postings ISS-2.3
P2.2 沖正處理 ReverseTransaction SDD-003 §11 POST /api/v1/postings/{id}/reversals ISS-2.3
P3.1 額度調整 AdjustLimit SDD-003 §6 POST /api/v1/limit-adjustments ISS-2.4
P4.1 卡片生命週期 TransitionCardStatus SDD-005 §3 POST /api/v1/cards/{id}/lifecycle-transitions ISS-2.2
P4.2 快發快綁 InstantIssuance SDD-003 §10 POST /api/v1/cards/{id}/instant-issuance ISS-2.2
P5.1 繳款 ReceivePayment SDD-003 §7 POST /api/v1/payments ISS-2.6
P5.1 三日未銷帳 ReoccupyIfUnmatched SDD-003 §8 系統排程 ISS-2.6
P5.2 帳單批次 RunStatementCycle SDD-003 §9 POST /api/v1/statement-cycles/{id}/runs ISS-2.8
P6.1 分期建立 CreateInstallmentPlan SDD-003 §12 POST /api/v1/installments ISS-2.7
P6.2 點數兌換 RedeemPoints SDD-003 §13 POST /api/v1/rewards/redemptions RWD-5.2
P7.1 清算比對 RunClearing SDD-003 §14 POST /api/v1/clearing/runs ISS-2.13
P7.2 爭議處理 OpenDispute SDD-003 §15 POST /api/v1/disputes —
P2.3 重複入帳防範 DetectDuplicatePosting SDD-003 §5 系統內部 ISS-2.3
P4.3 舊資料轉換 RunMigration — POST /api/v1/migration-jobs SYS-3

6. 資料流完整性檢核

檢核項 標準
每個處理程序有輸入與輸出 100%
每個資料存放有寫入者與讀取者 100%
無「黑洞」處理程序(有輸入無輸出) 0
無「奇蹟」處理程序(有輸出無輸入) 0
每個 L2 處理程序對應一個用例 100%
每個用例對應一支 API 或排程 100%
(7-7/67)