這份是 living 檔:每棒就地 Edit,只描述「此刻」。歷史脈絡看同資料夾的
FR-143-LOG.md。
| 項目 | 值 |
|---|---|
| 最後更新 | 2026-10-17 傍晚(第二棒首腦:八棒全部驗收通過(含 CM-2862 三次追加、CM-2844 的 FR-145.6 開關);下一棒=決策者在 DEV 做全流程測試,首腦接「測試→查根因→開修正卡→復核」循環) |
| branch | 三 repo 都在主工作樹 feature/FR-139(BE ~/Projects/Billows/Audit-Manager/compliance-manager-be、FE …/compliance-manager-fe、套件 ~/Projects/Jedicogy/module/jedi-python-package);test repo 同名 branch,本案未動 |
| 母案卡 | CM-2840 https://app.notion.com/p/FR-143-POA-M-Excel-OSCAL-3fc346da4cd081acb7a5df86530a073d |
| 本棒角色 | 首腦(分析決策/開卡/派工/驗收),不自己實作、不開 subagent。工作形態=決策者在 DEV 手測 → 回報問題 → 首腦查 log/DB/code 找根因 → 開修正卡 → 另開 session 當 runner 修 → 首腦實際核對 |
| Notion 回寫規範 | docs/claude/notion-issue-tracker.md、派工卡骨架 docs/claude/notion-card-templates.md,開卡用 scripts/notion_create_case.py、讀寫用 scripts/notion_case.py |
| 接手前必讀 | §0 讀序 |
due_at、第一站指派人換成執行人員、後續站指派人不變;外稽進待覆核。側邊選單「改善計畫」表格入口(我是 PM 的輪次,依專案分組展開)。Excel 與前兩階段同一份往右延伸,一列一任務、同評估目標合併儲存格。匯出只有 Excel 與 OSCAL JSON。資料照 OSCAL POA&M 落點(poam-item→risk→response lifecycle=planned→task 一筆對一個任務),並修 jedi-oscal-v2 匯出四處不合規。舊資料不管。docs/features/FR-143-2610-poam-ao-worksheet-and-excel/design.md:分工概述、決策定案 D1~D12、端到端驗收(八條)、坑與陷阱四節全讀。驗收八條就是下一棒的測試腳本。python3 scripts/notion_case.py get CM-28xx,卡號見 §1 表)——每段末行是該棒的複測步驟與首腦沒實測的打折處,決策者回報的 bug 先對這裡看是不是已知打折FR-143-LOG.md 最後 2 個 blockprototype/index.html(三畫面:清單、規劃頁、Excel)——決策者說「畫面跟雛形不一樣」時對照用。開法:BE 根目錄 python3 -m http.server 8765,開 http://localhost:8765/docs/features/FR-143-2610-poam-ao-worksheet-and-excel/prototype/index.htmlsrc/views/project/RoundPoamPlanView.vue(217 行,舊 RoundPoamView.vue 改一行導向)+ src/components/grc/poam/(9 支子元件)+ src/composables/usePoamPlan.js/usePoamXlsxImport.js;BE app/flow_control/service/poam_objective_app_service.py(讀/整條存/送出守門+鎖定+推進)、poam_objective_view.py、poam_workbook_{export,import,layout}.py(Excel)、job_restart_service.py(退卡第一站重跑)、not_met_job_redo_service.py/reverify_inheritance_service.py(改接);route api/project/routes/poam_objective_route.py/poam_workbook_route.py;error code common/code/flow_control_error_code.py(GRC_POAM_SUBMITTED_LOCKED 409042 等)src/views/project/MyPoamsView.vue+共用 src/composables/useAuditWorkGroups.js(與稽核作業頁同用);BE infra/readmodel/audit/poam_dashboard_query.py(狀態 CASE、todo/done)、app/readmodel/service/poam_dashboard_service.py、route poam_dashboard_route.py(POST /api/1.0/grc/poams/my/list)app/service/io/poam_export_parts.py(新檔,四處合規)、app/service/poam/remediation_service.py;jedi-compliance-audit app/service/poam_plan_rules.py(守門「計畫齊全」)、poam_app_service.py、audit_round_pass_transitions.pyissue-investigation skill(bug 調查 SOP);BE log log/app.log| 項目 | 值 |
|---|---|
BE feature/FR-139 |
HEAD 為本交接 commit,領先 origin 約 55 個 commit 未 push(FR-142/143/144/145 多 session 混在一起)。未 commit 的 pyproject.toml/poetry.lock 是四支套件 path dependency(oscal-v2、compliance-audit、task-platform、flow-engine,開發期狀態,不 commit);FR-133/144/145 文件與 project_summary_report 四支 BE 檔是別案的 |
FE feature/FR-139 |
領先 origin 約 22 個 commit 未 push。本案:94bc5597(棒 3 頁面)、b452b7b3(棒 4 錯誤碼)、49adb748(棒 6 清單)、c7593673(棒 7 分組)、140f58d5(字級)、0f0ce577(改善期限文案)、dfa8a3ba/5bf2c238/b0674082(棒 8) |
套件 feature/FR-139 |
76d6b243(棒 1:jedi-oscal-v2 2.6.0、jedi-compliance-audit 1.3.7 兩支都動了,版號未 bump)。未發版、未推 Nexus;主工作樹 venv 以 path dependency 吃這棵樹 |
DEV guidant_ai_dev(本機 5432) |
主線 migration 只有 2026-10-17-fr143-poam-manage-route.sql(phase=seed 路由,已套已登記,不需重產出貨基線)。套件無新 migration。資料:改善計畫稽核次 4 筆(待處理 1:「測測權限有沒有問題」第 2 輪第 1 次;已完成 3) |
| 正式服務 | 2026-10-17 16:37 另一 session 重啟:BE API 8000(pid 50904,含 worker 子程序)、FE vite 5180(打本機 8000,.env.development.local)。BE 跑到 b9f2391d6 之後;之後若 BE 有新 commit 要再重啟 |
| 測試基線 | test/test_module_boundaries.py 118 passed(10-17);test/test_fr143_poam_workbook_import.py、test_job_restart_service.py 隨棒 4/5 commit;套件 tests/test_poam_all_items_planned.py、tests/io_export/test_poam_export_contract.py |
Notion 卡(母卡 CM-2840 Not started,等收尾令才收 Done):
| 卡 | 做什麼 | 狀態 |
|---|---|---|
| CM-2841 | 套件:POA&M 匯出四處合規、task 對應任務、守門改計畫齊全 | Done |
| CM-2842 | BE 逐評估目標端點 | Done |
| CM-2843 | FE 改善計畫頁重做(含字級加大補記) | Done |
| CM-2844 | Excel 一列一任務匯出匯入與預覽(含 FR-145.6 追加的「列全部評估目標」開關) | Done |
| CM-2845 | 退卡第一站整條重跑、改善期限寫每一站 | Done |
| CM-2846 | 側邊「改善計畫」入口清單 | Done |
| CM-2851 | 清單依專案分組展開 | Done |
| CM-2862 | 清單待辦視角+每頁筆數下拉+拿掉全部展開鈕+風格對齊稽核作業頁 | 修正待驗證(三次追加首腦全部復核通過,待決策者複測) |
🔴 下一個動作:決策者在 DEV 走 design.md 端到端驗收八條。DEV 現有唯一待規劃那筆是 FR-142 前的舊形狀,只能測 1(入口);2~8 全部要先從 FR-140 開新輪次走到稽核結案造新資料——見 §4 第一條。
issue-investigation skill 查 log/DB/code 找根因 → 開修正卡(用 docs/claude/card-templates/fix-card.json 骨架,母卡 CM-2840)→ 印派工 prompt 等令 → runner 修 → 首腦實際核對 → 卡尾 append 復核 → 回報時附任務總表。docs/spec-site/current/,writing-feature-specs skill)、使用手冊、e2e(test repo 另開棒)、兩支套件發版(jedi-package-dev skill,oscal-v2 與 compliance-audit 都要 bump)、主專案進版(version-bump)、母卡 Done。⚠️ 這節是建議清單,不是執行授權。接手方讀完盤點完即停,等 user 發令。
FR-145 帶上(2026-10-17 留言):重寫 audit-execution/poam.md 時一併寫進 FR-145.6——匯出 Excel 旁勾選「列全部評估目標」預設勾,端點 query all_objectives=1,符合與不適用列改善欄灰底唯讀、匯入略過。見 FR-145 design.md 詳細設計⑥。
🔴 DEV 唯一待規劃稽核次是舊形狀:「測測權限有沒有問題」第 2 輪第 1 次的 AR 只有一條控制項層 finding(target_id=IA.L1-3.5.1,無 _obj.N,FR-142 前的資料)。拿它測驗收 2/4/6/7 會一直撞舊資料邊角(匯出三條評估目標列顯示不符合但任務掛控制項層那列、排尾)。全流程測試前先從 FR-140 開新輪次走到稽核結案造 FR-142 後的新形狀,舊這筆只能測入口清單。
測試資料缺口:DEV 沒有三站流程全完成的內稽稽核次(驗收 5)、沒有同一任務對多條評估目標(驗收 3)、沒有外稽送出後的覆核輪(驗收 8)。要測這三條得先從 FR-140 開一個新輪次走到稽核結案。
棒 8 復核打折:清單只看了深色主題(blsadmin 設定)、DEV 只 4 筆換 25/50 未實測。
套件版號未 bump:jedi-oscal-v2 仍 2.6.0、jedi-compliance-audit 仍 1.3.7,但內容已改。發版時各 bump 一版;發版前 pyproject.toml 要從 path 還原成 pin 一起 commit。
推測,待 verify:FR-145 的稽核報告 Word「改善計畫」一節(ar_docx_poam_section.py,CM-2855)讀的是本案 task 形狀 props.{job_uid, assignee_user_ids}——若本案 OSCAL 落點再動,FR-145 會跟著壞。verify:grep -n "assignee_user_ids\|job_uid" app/flow_control/service/ar_docx_poam_section.py。
坑 9(送出後抽屜手改期限不回寫 POA&M)是設計,決策者若在測試時提出要先講明不是 bug。
三 repo 皆未 push;push 一律決策者本人。
# branch 與工作樹
for r in ~/Projects/Billows/Audit-Manager/compliance-manager-be ~/Projects/Billows/Audit-Manager/compliance-manager-fe ~/Projects/Jedicogy/module/jedi-python-package; do echo "== $r"; git -C $r branch --show-current; git -C $r status --short | head -5; git -C $r log origin/feature/FR-139..HEAD --oneline | wc -l; done
# 服務
lsof -iTCP:8000 -sTCP:LISTEN -P | tail -n +2; lsof -iTCP:5180 -sTCP:LISTEN -P | tail -n +2
tail -50 ~/Projects/Billows/Audit-Manager/compliance-manager-be/log/app.log | grep -i "error\|traceback" | tail -5
# Notion
cd ~/Projects/Billows/Audit-Manager/compliance-manager-be && for c in 2841 2842 2843 2844 2845 2846 2851 2862; do python3 scripts/notion_case.py query --case CM-$c | head -1; done
# DEV 改善計畫稽核次(密碼查 .env 的 DB_PASSWORD,帳號 cmmgr)
psql -h localhost -p 5432 -U cmmgr -d guidant_ai_dev -Atc "SELECT ps.id, ps.status, r.status, r.round_no FROM compliance.audit_round_passes ps JOIN compliance.project_audit_rounds r ON r.id=ps.round_id WHERE ps.status IN ('remediation','closed') ORDER BY ps.id"
# 清單端點冒煙(登入拿 token:POST /api/1.0/login body {username,password,provider:'password'},帳密見 memory reference_dev_login)
# POST /api/1.0/grc/poams/my/list body {"pager":{"page":1,"page_size":10},"filters":{"status":"todo"}} → meta.status_counts 應 {todo:1, done:3}localhost:5432 guidant_ai_dev,帳號 cmmgr(繞 RLS)/cm_app,密碼查 .env。python main.py 8000(RUN_MODE=worker 另起);log log/app.log。FE:npm run dev -- --port 5180,.env.development.local 指本機 8000。blsadmin(admin,主題設定深色),密碼見 test repo .env.e2e TEST_PASSWORD。node_modules/playwright,登入欄位 [data-testid="login-input-username"]/login-input-password、button[type="submit"];vite 頁 waitUntil: 'domcontentloaded'(networkidle 等不到)。~/.claude/skills/oscal-knowledge/references/json-schemas/oscal_poam_schema.json。ps -o lstart= -p <pid> 對 commit 時間)。pyproject.toml path 狀態不 commit。border-left ≥3px。你接手 FR-143 改善計畫(POA&M)重做的首腦,角色是分析決策/協調,不自己實作、不開 subagent。
先讀 docs/features/FR-143-2610-poam-ao-worksheet-and-excel/handoff/FR-143-STATE.md,照 §0 讀序把 design.md 指定四節與八張子卡復核段讀完,答 §0.4 自檢五題,跑 §5 pre-flight 唯讀盤點。
下一棒是決策者在 DEV 做全流程測試(design.md 端到端驗收八條),你接「回報 bug → 查根因 → 開修正卡 → 派 runner → 復核」循環。
讀取與盤點完成後不做任何事——不派工、不跑測試、不改檔,回報①自檢答案②現況盤點③待辦已就緒,等我下指令才開始作業。