FR-140 STATE(living,就地改,只描述此刻)

更新:2026-10-17 00:05 首腦:[R1]大流程重構首腦-3(第四棒,驗收與修正模式) 母卡:CM-2765

§1

現況一句話

FR-140 已結案(2026-10-17):母卡 CM-2765 與全部子卡 Done,收口卡 CM-2834 Done。文件(SPEC 11 頁、手冊 4.1)首腦復核過,FR-141 重寫 ap-authoring 時保留了 FR-140 段落。下次出安裝包才做:四支套件還原固定版號並發版、八支主線 migration 重產出貨基線。上 STG/POC 要決策者放行,並 pybabel compile。三 repo 未 push。收尾文件:SUMMARY、analysis。

  • 劇本對照(DEV 唯讀核過):稽核次三筆 pass_no/nature_seq/prev_pass_id 照 design;時間軸十筆含一筆 return;redo_log 4 筆;通知 job_due(due_3d 2/due_today 4)與 stage_entered 都有紀錄。兩個沒驗到:①覆核輪新卡帶期限(第 2 輪只開到規劃站卡、任務卡尚未生成);②第 5 步手改期限(due_at_manual 全為 false)。另 MP.L1-3.8.3 兩張退回卡無期限,是該控制項 POA&M 里程碑「123」沒填日期,資料空白非 bug。
  • 🔴 決策者 2026-10-16 裁:測試回報的問題一律開新卡、歸「測試修正」,不退回原卡原 session(「不然沒完沒了」)。Notion 狀態欄無「測試」選項,分類用需求編號 FR-140.T<n> +標題「測試修正 T」前綴,接著 T3 往下編。
  • 🟡 待決策者裁(本棒末):總覽「控制項導航」三行堆疊版面決策者覺得「跑掉」。首腦查明是 FR-140 之前 2026-10-12 FE commit 4953c199(style:群組列改三行堆疊)造成,本 arc 無人動過該區塊;兩條路:還原該 commit(首腦傾向)/收緊成兩行。決策者未回,接手者問一次再開卡(T7)。
  • 待裁(收口前):①資源庫終身一對一(FR-139 T-8)使刪掉的專案仍鎖資源庫,決策者裁先順流程、記錄;②(已消失).17「閘道前兩邊都畫 pending」待裁項隨 T3 重做進度條而不存在——七站本來就全畫。
  • 已裁要記得:進度條「以稽核次為單位」(推翻前裁「跳過站顯綠維持」);跨稽核次退回=刪目前次、上一次重開;「提交稽核」改「完成本次稽核」(.18)。
  • DEV 髒輪次 f00c5dc3(專案 1547 已軟刪)留當樣本不修。
§2

任務卡總表(問 map 只給這張)

卡 做什麼 依賴 狀態
.1 CM-2786 稽核次表+舊輪次搬第 1 次 — Done:復核過
.2 CM-2787 範本站「稽核性質」下拉+新公版範本 — Done:復核過
.3 CM-2788 走到稽核計畫站開新稽核次 1、2 Done:復核過
.4 CM-2789 其餘三站改綁稽核次+回規劃 3 Done:復核過
.5 CM-2790 回同站開新任務卡 4 Done:復核過
.6 CM-2791 任務卡期限欄後端全鏈 — Done:復核過
.7 CM-2792 我的任務+抽屜顯示期限 6 Done:復核過,runner 未點畫面
.8 CM-2793 內稽不合格自動退回原卡+退回卡系統留言 4、5、6 Done:補裁復核過(BE 434bbd592/pkg cc6f742d)
.9 CM-2794 到期提醒(前 3 天、當天)+我的任務期限欄排序 8 Done:復核過
.10 CM-2795 總覽頁切第幾次稽核+標題帶次數 4 Done:復核過
.11 CM-2796 覆核輪新卡帶期限 6 Done:復核過
.12 CM-2797 流程進度條 5 Done:復核過,沿用既有進度條,只補 tooltip
.13 CM-2811 推進按鈕文字改讀下一站站名(修正卡) — Done:復核過(337027269/bfb361566/FE f4fd9cc2,schema 補在 .16)
.14 CM-2812 進稽核站通知稽核員+參與人「可稽核性質」三選一+鈴鐺(修正卡) — Done:復核過(c496961a2/3023fe7d+81a5ec43/58836164)
.16 CM-2815 閘道分支三處同根因:按鈕旗標 schema/進度條看實際站卡/通知用實際新站卡(修正卡) 13、14 Done:復核過(ac071b937),A/B 已實打;C 由決策者劇本實走
.17 CM-2816 有回流範本的退回與進度重設計:退回沿實際軌跡(含跨稽核次刪目前次、上一次重開)、進度條以稽核次為單位、時間軸站名與回流標示(修正卡;一支主線 migration) 16 Done:復核過(BE 77e9ee2c3/FE fec523e1/pkg 735185d6),閘道待裁項隨 T3 消失
.18 CM-2817 稽核站推進按鈕「提交稽核」改「完成本次稽核」(一筆 stage_objects seed) 16 Done:復核過(e2f48753f,DEV 已套)
.15 CM-2813 專案規劃頁可設任務卡期限:表單欄、清單、批次(修正卡;BE control-tree 補 due_at) — Done:復核過(BE 21ec82d1a/FE 1379e427)
T1 CM-2820 測試修正:進度條在規劃站只剩一顆(.17 回歸,pending 推算誤把這次的計畫站當下一次) 17 Done:復核過(BE a39f4b4f9,實打四顆)
T3 CM-2822 測試修正:進度條重做——七站全畫位置固定、顏色只講這一次稽核、加 skipped 第四態(取代 .17/T1 的「只畫這次路徑」設計) 17、T1 Done:復核過(BE 888d6d08d/FE 789ee3f2,實打+截圖)
T4 CM-2830 測試修正:公版回流線 Flow_internal_poam_planning 的名字拿掉,按鈕印下一站站名「前往 任務規劃與執行」(seed;第一版「進入重做」be7fa6dec 被決策者改判) — Done:復核過(be7fa6dec 改字 → d2249eb13 拿掉線名,實打按鈕為「任務規劃與執行」)
T5 CM-2831 測試修正:專案管理清單與首頁卡「狀態」格改兩行——目前站名+「第 N 輪 · 第 N 次內部/外部稽核」,與橫幅同源 T3 Done:復核過(BE b890afefd+7576f89f2/pkg 3b94ad67/FE 7796818e,首腦實打+截圖)
T6 CM-2832 測試修正:總覽稽核次切換器補推算的「進行中」那一次、「目前」掛它、內稽結束顯「已完成」(三處統一「第 N 次 · 站名」) T3、T5 Done:復核過(BE e4cb1693c/FE 785a6db4,兩向突變+實打+截圖;推算項被真實項取代已 live 驗到)
C1 CM-2834 收口:SPEC、使用手冊、守衛補登記、整個 arc 規範審查 全部 Done:復核過(BE 5bfddf750/ddc069c3a/60b366dfc;DI 拆檔 922→797 行)
T2 CM-2821 測試修正:建專案預覽稽核人員補內外稽後綴(.14 漏)+資源庫模式 SSP 頁籤收掉匯出樣板與匯入(FR-139 T-9 漏) — Done:復核過(FE 3d06e89c)

互斥:3、4、11 同改 audit_round_app_service.py;5、8 同改主專案 workflow_execution_service.py。各組內不同時派。.13/.14 都碰 stage_advance_service.py 但不同段(.13 改 label 函式、.14 只加一行呼叫+DI 參數),可同派、各 add 自己的 hunk。 下一批:.8 與 .12 可同派(.8 改 handler 掛點+新退卡 service,.12 純 FE);.8 過 → .9;全過 → 端到端驗收(design 第九節劇本)。

  • 不變式:輪次 status 與四槽位永遠=目前稽核次,由 audit_round_pass_app_service.sync_round 維持,每個狀態轉換後必呼叫。縮範圍只有一份 clone_ap_for_next_pass(FR-141.B4 改名,規則在 pass_scope_rule)。
§3

接手指引(驗收與修正模式,第四棒)

  1. 讀本檔 → design.md 第九節 11 步劇本與第四節 D1~D6/P1~P6;.17 卡 CM-2816 的六步手測是目前的補充劇本。討論稿只在查「為什麼」時看。
  2. 接手後停下等決策者發令,不自派、不改檔、不重啟服務。
  3. 決策者回報問題(通常是截圖+專案 URL)→ 先用唯讀 SQL 對 DEV 實況(稽核次 compliance.audit_round_passes、主流程站卡 compliance.job_executions 以 workflow_execution_id、通知 compliance.task_alert_notifications、時間軸 compliance.round_stage_transitions)+ log/app.log 找請求 → 分清「資料對顯示錯」「設計洞」「使用者操作」三類 → 給根因+建議 → 決策者裁 → 開卡。
  4. 開卡:屬既有卡範圍 → append 到該卡尾「決策者複測問題」段並改 In progress(Notion 沒有「修正後仍有問題」選項,打了 400);跨卡或新語意 → 新 FR-140.N 卡照 docs/claude/notion-card-templates.md ③。派工 prompt 送出前與決策者說派出後都 fetch 卡確認狀態與卡尾只有一段作業中(.14 被貼兩次撞車)。prompt 薄:model/卡號+URL/三 repo 分支/一句範圍/紀律尾。
  5. 復核:fetch 卡回寫 → git show --stat 核檔案清單 → 開檔核關鍵段 → DEV 唯讀 SQL 核資料 → BE 行程啟動時間必須晚於最後存檔(否則 kill -9 重啟 8000)→ 新 API 欄位必查 serializer 有宣告(.16 A 教訓)→ 更新本檔總表與 LOG → commit(commit 前看 git status 第一欄有無他人 staged 的檔)。不信 runner 自報。
  6. 首腦自己 commit 只 add 兩個 handoff 檔;主 repo 工作樹的 pyproject.toml path dependency 改動與 FR-133 未追蹤 html 不是你的。
  7. 收口分兩段:已做(首腦,2026-10-16)=24 子卡 Done、母卡收尾彙整、SUMMARY、analysis、design.md 變更紀錄與三處推翻標註、frontend-overview §3.6 補 Dropdown tooltip、memory 兩條;CM-2834 待派=SPEC、手冊、守衛補登記、ddd-compliance-reviewer 掃 arc(BE 從 96cfaab01、FE 從 983cf2b7^、套件從 06bca836^)。CM-2834 回來復核過 → 母卡 CM-2765 改 Done。下次出安裝包才做:四支套件還原 pin 並發版、八支主線 migration 重產出貨基線。
  8. 決策者偏好:問 map 只回任務卡總表;先口頭講做法再動文件;白話;產品面取捨先問決策者不自裁;回報問題必附根因與建議。
  9. T7 候選 已由首腦直接做掉(FE fd63b703):導航控制項列減重+群組短進度條;稽核紀錄文案(「稽核紀錄」標題、第 N 次內部稽核、內稽已完成/外稽此輪結束、已結束不標目前位置)統一在 useAuditPasses.closedLabel。
  10. runner 登入方式固定寫進卡:test repo .env.e2e 的 TEST_ADMIN_USERNAME/TEST_PASSWORD,login payload {username, password, cf_turnstile_token:"mock-test-token"};T5 runner 因沒這資訊打折了 UI 驗證。
  11. CM-2834 收口派工 prompt(決策者下令即貼):
    model:opus/effort:medium/理由:規格與行為規則都已寫在卡上,主要是照規則寫 SPEC 與手冊、處理審查報告。
    
    你是 runner,做 Notion 卡 CM-2834(FR-140.C1):
    https://app.notion.com/p/FR-140-SPEC-arc-3fb346da4cd0818b9abbfab4077d4dca
    先用 `python3 scripts/notion_case.py get 2834` 讀整張卡,卡是自足的,照卡做。
    
    repo:BE ~/Projects/Billows/Audit-Manager/compliance-manager-be、FE ~/Projects/Billows/Audit-Manager/compliance-manager-fe、套件 ~/Projects/Jedicogy/module/jedi-python-package,都在 feature/FR-139(開工各查,不切)。
    範圍:守衛測試補登記一條路由、派 ddd-compliance-reviewer 掃整個 arc 並處理、SPEC 十二頁+使用手冊補一輪內內外稽。不發版、不重產基線、不寫 e2e、不動母卡。
    
    紀律:只動 DEV;顯式 git add 只加自己的檔;做完立刻各 repo commit+卡尾 append+狀態改「修正待驗證」,不等令;push 等令。
  12. 監控卡狀態用 Monitor 腳本每 3 分鐘 scripts/notion_case.py get <no> --props-only 盯狀態欄,30 分鐘到期要續;runner 待裁時會改 In progress 並在卡尾標「待首腦裁決」。
§4

環境

  • 三 repo 都在 feature/FR-139(決策者未開 FR-140 分支);FR-139 未提交修改仍在工作樹,不要 stage。
  • 未 push。DB 只動 DEV(localhost:5432)。
  • 三支套件 path dependency 皆已啟用(主專案 pyproject.toml :123-126),改動未 commit,收口時還原 pin。
  • 🔴 收口前小補:守衛 test_fr132_t42_route_capability_mounts 紅 1 條——.14 的 MyStageNotificationsRoute(GET /flow-engine/stage-notifications/mine,掛 grc.job.read)沒登記進 a1-capability-tree.md 附錄 A 與測試的 MOUNTS 表。合併前就紅、屬 .14 範圍,收口時補。
  • 🔴 新 error code GRC_412062(GRC_ROUND_ROLLBACK_PASS_AP_EDITED)已同步 FE error-code.json 與凍結基準表。
  • 🔴 這三支套件(compliance-audit、flow-engine、task-platform)在 FR-140 收口前不可發版:FR-139 收尾發版時已告知跳過(2026-10-15),其餘套件不受影響。
  • 出貨基線待重產:2026-10-15-fr140-audit-round-passes.sql、2026-10-15-fr140-job-executions-due-at.sql、2026-10-16-fr140-job-executions-attempt-no.sql、2026-10-16-fr140-job-execution-redo-log.sql、2026-10-16-fr140-task-alert-job-due.sql、2026-10-16-fr140-participant-audit-scope.sql、2026-10-16-fr140-task-alert-stage-entered.sql、2026-10-16-fr140-stage-transitions-station-labels.sql(主線 active,共八支);seed 五支 audit-nature-menu/audit-scope-menu/stage-audit-button-label/internal-poam-return-flow-label/internal-poam-return-flow-label-2(T4 兩支,拿掉回流線名)。套件 jedi-task-platform 多一支 migrations/005-participant-audit-scope.sql。
  • 定案欄名:due_at/due_at_manual,寫入走既有 PUT job。里程碑日期→期限一律經 job_due_date_service.due_at_from_milestone_date(當天 23:59:59),.8 必共用。
  • 🔴 .mo 不入版控:.8 加了九個 redo_comment.* 翻譯 key,其他環境/出包要 pybabel compile -d config/translations,否則留言顯示英文 key。
  • 清單與橫幅的「目前站/第幾次」推算只有一份(app/flow_engine/service/stage_pass_progress.py 公開函式),之後任何頁要顯示同樣資訊一律呼叫它。
  • FE npm run lint 指到別的目錄跑不了、repo 無 eslint 設定(T2 runner 發現)——FE 基建問題,不在本 arc 修,收口時決定要不要開卡。
  • 既有紅測 15 條(test_fr112_job_force_start 14 條撞 FR-139 T-18 輪次凍結查詢、test_job_detection_tool_binding 1 條)非 FR-140 造成,待 FR-139 側處理。