CR #495 » CR-050_需求評定揭露之契約與追溯對映兩處漂移(待裁定).md
CR-050 需求評定揭露之「契約 ↔ 追溯對映」兩處漂移(已裁定並執行)
| 項目 | 內容 |
|---|---|
| 文件編號 | CR-050 |
| 版本 | 1.2 |
| 狀態 | 已裁定並執行+後續開立 CR-051/CR-052(2026-10-17) |
| 觸發 |
#A-273 需求落地狀態評定(ops/redmine/req_assess.py,145 筆逐項以「服務+契約路徑+測試」可證偽評定) |
| 需求依據 |
GOV-004 §5(追溯矩陣)、BRD-002(FR 追蹤)、SDD-006(契約)、RFP FR.md §2.4/§4.3(原文證據) |
| 影響模組 | 文件(BRD-002 v1.1/GOV-004 v1.2,經 gen_traceability.py)+評定器(req_assess.py GAPS 機制)——契約與程式零變更
|
1. 問題陳述
以可證偽方式評定 145 筆需求之落地狀態時,揭露 2 筆 FR 之「追溯對映所載 API」
與「契約實際路徑」不一致:
| FR | 追溯對映所載 API | 服務 | 契約實際 |
|---|---|---|---|
ACQ-4.3 |
GET /api/v1/merchant-statements |
merchant-service |
僅有 /api/v1/merchants、/api/v1/merchants/{merchantId}、/api/v1/merchant-settlements
|
ISS-2.4 |
GET /api/v1/cards/{id}/limits |
limit-service |
帳戶層級 /api/v1/accounts/{accountId}/limits、/special-limits、/special-limit-policies…;無卡片級路徑 |
2. 裁定結果(2026-10-17)
2.1 ACQ-4.3——拒絕方案 A 之「改對映 merchant-settlements」;採「對映誠實化+缺口揭露」
證據(RFP FR.md 原文):
-
ACQ-4.2=§4.2 商店請款(EDC/非 EDC 請款處理、商店多批請款)→ 契約POST /api/v1/merchant-settlements(「商店請款」)語意吻合。 -
ACQ-4.3=§4.3 商店對帳單——需求描述:①列印週期(每日/兩日/月結)②種類(全額發票/全收據(自然人))③郵寄方式(掛號/限時/平信)④補印 ⑤電子發票。
裁定:merchant-settlements(請款)≠ merchant-statements(對帳單)——兩者為不同業務域。
若改對映,等於把「請款」謊報為「對帳單」,正是本專案最忌之「有 API、沒有需求語意」型假綠;
且對帳單含列印/發票/郵寄/電子發票完整業務域,不是單一 GET 端點可承載,貿然補端點(方案 B)
違反「規格先行」鐵則。
→ 處置:追溯對映誠實化——ACQ-4.3 之「主要 API」欄改記 —(未涵蓋:商店對帳單待另立 CR,CR-050)、
驗收測試欄改 —(原 UT-ACQ-003 為虛構,測試檔實際不存在);
需求狀態=In Progress(真實缺口),待 SA/SD 語意凍結後另立 CR。
2.2 ISS-2.4——對映改指向實際已交付之帳戶級端點;卡片級維持缺口
證據:
- 原對映
GET /api/v1/cards/{id}/limits為CR-043已清除之 stale 路徑(CR-043 §10.5判例:禁止恢復)。 - 帳戶級端點
GET /api/v1/accounts/{accountId}/limits契約+limit-service 實作+測試三重證據齊備。
→ 處置:對映改為 GET /api/v1/accounts/{accountId}/limits(如實反映已交付部分);
「卡片級」調額/查詢之缺口以 GAPS 機制揭露——即使三重證據齊備仍記 In Progress,
待額度多維度與共享池分攤語意凍結後另立 CR(GOV-006 2.4.4 追蹤)。
3. 執行紀錄(2026-10-17)
| # | 動作 | 結果 |
|---|---|---|
| 1 |
tools/gen_traceability.py:M 兩列誠實化+新增 GAPS 缺口登錄(單一真實來源);BRD-002 §3 表下印缺口註記;GOV-004 §7 評定節/§8 修訂記錄 |
✅ |
| 2 | ★ GOV-004 原手工加註之內容(§3 dispute-service 列與註記、§6 檢核列、修訂記錄、評定節)全部移植入產生器——重跑不再遺失(產生器紀律:文件為單一真實來源) |
✅ |
| 3 | 重生 BRD-002 v1.1/GOV-004 v1.2(FR=68 斷言通過;diff 驗證手工內容零遺失) |
✅ |
| 4 |
ops/redmine/req_assess.py:assess_fr 增 GAPS 優先——已揭露缺口即使三重證據齊備亦記 In Progress(反假綠) |
✅ |
| 5 | 重跑評定並 --apply:145 筆判定依據 note 已更新;分佈 Closed 51/In Progress 79/Feedback 15(不變——修正的是理由,不是狀態) |
✅ |
| 6 | 關卡:verify_contract_dto.py 不符 0/需確認 0(契約與程式零變更,符合預期) |
✅ |
| 7 | Redmine 議題 320(FR-ACQ-4.3)/327(FR-ISS-2.4)note 實查確認已帶新判定依據 |
✅ |
4. ★ 執行中之新發現(已裁定——BEAM PMO 2026-10-17 核准)
RFP FR.md §2.4(信用卡額度管理)第 1 點原文為「歸戶、持卡人、卡片調額/查詢」——
即「卡片級查詢」白紙黑字列於 RFP。此前 CR-045/GOV-006 2.4.4 將卡片級可用額度查詢
定性為「預期需求(未列 RFP)」,與 RFP 原文不符。
BEAM PMO 裁定與執行(2026-10-17):
- ✅ 定性更正:
GOV-006 2.4.4→ 1.77 更正為「RFP 已列需求:卡片級額度調額/查詢
(RFPFR.md §2.4(1)明列;語意待凍結CR-052)」。 - ✅ 開立
CR-051:商店對帳單(RFP FR §4.3)語意凍結清單 S-1~S-7(含 RFP §4.4
「衛星系統供料」邊界線索)。 - ✅ 開立
CR-052:卡片級額度調額與查詢語意凍結清單 C-1~C-6(含 ACL 實查:
card-service僅允許 authorization、limit-service允許清單不含 card/party——同步直呼
路徑不存在,投影為既有先例)。 - 兩 CR 均為規格先行、不動程式、不補端點;
GAPS已改指向 CR-051/CR-052。
5. 驗收
- ✅ 裁定後重跑
python3 ops/redmine/req_assess.py --apply→ 145 筆 note 更新、狀態由事實推導(不變:51/79/15); - ✅
verify_contract_dto.py0 不符(契約未動); - 兩筆缺口之閉合各自待:
ACQ-4.3另立 CR(SA/SD 語意凍結後)、ISS-2.4卡片級另立 CR(GOV-006 2.4.4依賴閉合後)。
6. 修訂紀錄
| 版本 | 日期 | 內容 |
|---|---|---|
| 1.2 | 2026-10-17 |
BEAM PMO 裁定:§4 定性更正核准(GOV-006 2.4.4 → 1.77:RFP 已列、語意待凍結);兩筆缺口開立 CR-051(商店對帳單 S-1~S-7)/CR-052(卡片級 C-1~C-6);GAPS 改指向新 CR |
| 1.1 | 2026-10-17 |
裁定並執行:ACQ-4.3 對映誠實化(拒絕混用請款語意)、ISS-2.4 改對映帳戶級端點+GAPS 缺口機制;GOV-004 手工內容移植入產生器;145 筆 Redmine note 更新;揭露「卡片級查詢實為 RFP 已列」(§4,待覆核) |
| 1.0 | 2026-10-17 | 初版:評定揭露兩處漂移,候選方案待裁 |
- « Previous
- 1
- 2
- Next »