FR-140 收尾彙整

FR-140 一輪內走完內稽與外稽:收尾彙整(2026-10-16)

母卡 CM-2765|收口卡 CM-2834|交接 STATE/LOG|設計 design.md|推翻紀錄 analysis

§1

為什麼做

PM 定義「一輪=一條完整流程」,內部稽核與外部稽核要在同一輪內走完;系統原本一輪只能稽核一次,輪次上的 AP/AR/POA&M/SSP 快照四個欄位是單值,第二次稽核會蓋掉第一次,內稽不合格也沒有「退回原卡重做」的路。

§2

做完後的行為

  • 流程範本的「稽核計畫填寫」站可標內部或外部;新公版「內外稽核流程」含一條從內部缺失改善回規劃的線(不取名,按鈕印下一站站名)。
  • 每走到一次稽核計畫填寫站就建一筆稽核紀錄,分內外與第幾次,各自凍一組 SSP 快照、AP、AR、POA&M。第 2 次起的內稽 AP 只列上次不合格與未判定項;外稽全範圍。
  • 內部缺失改善完成,不合格控制項的原任務卡退回原指派人,期限取 POA&M 最早里程碑,卡上留系統留言;重做紀錄保留歷次完成時間。內稽無缺失才進外稽,不提早結案;外稽不過照舊開覆核輪,新卡帶期限。
  • 任務卡有完成期限:任務抽屜、我的任務、專案規劃頁(單張與批次)可看可改,手改標「手動調整」;到期前 3 天與當天提醒指派人與 PM。
  • 參與人可設可稽核性質,進稽核站時只通知對應稽核員並出現在鈴鐺。
  • 專案橫幅、專案清單、總覽稽核紀錄切換列三處統一顯示「第 N 次內部/外部稽核 · 站名」,回規劃後用推算補上正在進行的那一次。
  • 流程進度條七站全畫、顏色只講這一次;退回沿實際軌跡、可跨稽核次;時間軸顯示站名並標「退回」;推進按鈕印下一站站名,內部稽核站印「完成本次稽核」。
  • 總覽左側控制項導航:群組列短進度條,控制項列外框徽章+名稱兩行、無進度條、樹狀縮排線。
§3

規模

repo commit 數(含 FR-140) 範圍
BE 48(另有首腦 docs commit) git log 96cfaab01..HEAD --grep=FR-140
FE 19 git log 983cf2b7^..HEAD --grep=FR-140
套件 16 jedi-compliance-audit/jedi-flow-engine/jedi-task-platform

卡片:實作 12(CM-2786~2797)、修正 7(CM-2811~2817,缺號 2814)、測試修正 6(T1~T6,CM-2820/2821/2822/2830/2831/2832)、收口 1(CM-2834)。另有決策者複測時直接裁、首腦自做的 FE 小修 fd63b703(導航與稽核紀錄文案)。

§4

推翻了什麼

design.md 定稿的三條規則在複測時被推翻:進度條上色、退回目標、尚未建立的那一次怎麼顯示。理由與反悔條件寫在 analysis。決策者另裁:測試回報的問題一律開新卡歸「測試修正」,不退回原卡。

§5

端到端驗收

決策者用 DEV 專案 1548 走完:內稽 1(不合格、退 4 張卡)→ 回規劃 → 內稽 2(無缺失、未結案)→ 外稽 1(有缺失)→ 外部改善完成 → 輪次待覆核、第 2 輪已開。未走到兩項,決策者裁不補:覆核輪新卡帶期限(第 2 輪只到規劃站)、手改期限。

§6

還沒做(已知 follow-up)

項目 何時做
SPEC、使用手冊、守衛測試補登記、整個 arc 規範審查 收口卡 CM-2834
四支套件(compliance-audit/flow-engine/task-platform/oscal-v2)還原固定版號並發版 下次出安裝包時;目前主專案 pyproject.toml 維持 path dependency、不 commit
出貨基線重產:主線 migration 八支(audit-round-passes、job-executions-due-at、job-executions-attempt-no、job-execution-redo-log、task-alert-job-due、participant-audit-scope、task-alert-stage-entered、stage-transitions-station-labels);seed 六支照 manifest 跑 下次出安裝包時,決策者裁示
.mo 不入版控:退回留言的翻譯 key 在其他環境要 pybabel compile -d config/translations 部署 STG/POC 時
資源庫終身一對一(FR-139)讓已刪專案仍鎖住資源庫 決策者記錄、未裁
FE npm run lint 指錯目錄、無 eslint 設定 另案
既有紅測 15 條(FR-139 輪次凍結查詢相關),非 FR-140 造成 FR-139 側
§7

部署交接

只套 DEV(localhost:5432);STG/POC 未動,上版前需決策者放行。三 repo 都在 feature/FR-139、未 push。

§8

教訓(濃縮自 LOG)

  1. UI 規則先畫正常路徑每一步,再定上色、文字與退回;只對著出錯截圖裁會反覆返工(進度條改了三版)。
  2. 凡「猜下一站」的程式在系統判定閘道前都不可信,退回、進度、通知三處同根因,要看實際站卡。
  3. 同一個語意只能有一份實作:「第幾次」推算收成 current_pass_info、結束文案收成 closedLabel。
  4. 新 API 欄位要查 serializer 有沒有宣告;marshmallow 會靜默丟掉。
  5. 範本連線名會直接變成按鈕文字,建範本時要當動作名取或不取。
  6. 狀態判斷先判終態:「先看是不是目前、再看有沒有結束」在整輪結束時會把剛結束的那次說成進行中。
  7. 派工 prompt 送出前後都 fetch 卡;STATE 寫「未派」不可信,決策者會自己貼。