給下個 session 的 prompt:「讀本檔,先過『🧭 WHY』+ §0 讀序,能答冷接自檢再動。這不是 bug-fix 棒,是『把 FE 逐項套到 FR-038 v2 BE』的重新規劃 arc。框架/資源庫的 v1↔︎v2 比對已完成(見比對文件),接手做:(a) 依 user 決策細化資源庫遷移步驟 (b) 或回答『FE 要送什麼 payload 更新』。」 本檔自包含。狀態 2026-06-16。
根本處境:FR-038 把 BE 整個翻成 jedi_oscal_v2(Wave 2A 地基翻轉 + 2B 業務重接 v2)。但 FE 停在 06-08(v1.4.0),從沒跟上。所以「重啟新 BE 後拿舊 FE 點 → 大面積壞」是預期內(BE 變了、FE 沒跟上),不是 FE 被改壞。
已釐清的關鍵事實(別再誤判):
目標模型(FR-038 v2,必懂):framework→framework_version→catalog 三層;資源庫=clone catalog+profile+範本SSP三件組;稽核以 audit-round 輪次為核心(engagement 模型)。
冷接自檢 4 問(答不出回 §0):① 為何「FE 套上去不能用」、為何不是退 FE 版能解?② 框架為何「大致可直接套用」、資源庫為何「需重構」?③ 資源庫的「適用控制項編輯」v2 改走什麼?④ 專案/稽核為何是另一條大重構、計畫在哪?
fe-apply-comparison.mdfe-framework-v1-v2-comparison.mdfe-resource-library-v1-v2-comparison.mdaudit-round-fe-migration-plan.mdfr038-api-inventory.md2026-06-16-framework-maintenance-change-accounting.mddocs/analysis/2026-06-16-framework-maintenance-2a2b-decisions.mdassessment.description,但 v2 adapter 把 AO 文字(part.prose)掛在 name、description=None。影響 catalog 編輯/匯入預覽/版本詳情三處 AO 顯示空。
catalog_control_parts id=8412 → prose='[a] authorized users are identified'、title=NULL、name='assessment-objective'(鑑別子)。module_frame_repo_impl._enrich_with_oscal(2A 拔 jedi_oscal)→ 列表/詳情讀的 oscal_profile.include_groups / oscal_framework_version.framework.name 全空;control_default_service / objective_default_service 回 None(範本「適用控制項」編輯死的)。/oscal/resource-libraries clone 三件組。/grc/project/ap/*(依賴已退役表 assessment_plan_controls/tasks → 恐壞)vs 新 audit-round 引擎(/audit-round/<id>/*,B2~B5 已 v2,FE 未接)。audit-round-fe-migration-plan.md(5 step:Step0 地基→①輪次列表→②AP維護新建→③AR維護AO+risk→④POA&M三層)。決策 D1 路由改 roundUid、D2 舊引擎漸進退場。create_app() DI + 隔離測路由 + service smoke + pytest,沒跑完整 main_app.py、沒對真實 FE 測。導致 framework維護宣稱「FE 零改可用」但實際 AO 等欄位對不上。接手做任何「能用」判定前,務必對真實運行 FE 實點,別憑 service smoke 下結論。description,v2 我對映成 name → 三畫面 AO 空白。比對表已標。/oscal-frameworks、/oscal-framework[/<uid>]、/oscal-framework-version[s]、/oscal-framework-parse-jobs/*、/oscal-catalog-{group,control,control-assessment}/<uid>。grep -n _enrich infra/module_frame/repository/module_frame_repo_impl.py(見 disabled);grep jedi_oscal app/module_frame/service/module_frame_control_default_service.py(import 註解掉、回 None)。/oscal/catalog-controls/<uid>/assessments、/module-frame/<uid>/template-ssp。/oscal/resource-libraries[/list]、/oscal/resource-library/<uid>[/publish](B1,回 catalog_uid/profile_uid/ssp_template_uid/resolved_control_count)。PUT /oscal-catalog-control-assessment/<id> body 應改吃 {description}→寫 part.prose;目前 code 吃 {name},這也是要改的點)。resolved_control_count 等)?cd /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be
git branch --show-current # feature/oscal-refactor(不可切 branch)
git status --short # 應僅 M pyproject.toml(dev path-dep 勿 commit)
cd ~/Projects/Billows/Audit-Manager/compliance-manager-fe && git log -1 --format='%h %ad' --date=short # fc883ca 2026-06-08(FE 基準)⚠️ DB 環境疑慮:曾見我腳本連的 DB 報
frameworks.main_version不存在、但 188/guidant_ai_dev 有該欄 + 已有 commita190befe補字串欄。接手若要對 BE 實測,先確認.env的DB_HOST/DB_NAME指向哪、schema 是否跟上 model(這條跟 FE 套用獨立,但會影響「BE 實測」)。
pyproject.toml dev path-dep 勿 commit。框架維護(BE,已 commit;我做的):框架 CRUD 接舊 URL + delete + 版本管理 2a + catalog 編輯 2b + 兩階段匯入 parse-job(接 v2)。注意 git 已 rebase,我的原 hash 不在;近期 HEAD 另有平行 session 的框架修正(a190befe main_version 字串欄 / 7a95b6bf 不自動生版本 / 2352ee20 移除 code unique)+ 止血(e5fac369/742ba3f3 flow-engine/SSP,非框架)。 套件(jedi-oscal-v2,dev path-dep 未發版):FrameworkService delete/version CRUD + framework_versions.release_date + delete_framework CASCADE + 93d1a45 main_version 字串欄。 本 session 產出文件:5 份(fe-apply-comparison / fe-framework-v1-v2-comparison / fe-resource-library-v1-v2-comparison / audit-round-fe-migration-plan / fr038-api-inventory)+ change-accounting + framework 驗收報告 + decisions。其中 fe-framework-v1-v2-comparison.md / fe-resource-library-v1-v2-comparison.md 仍 untracked(本次交接一併 commit)。
讀 docs/features/FR-038-2606-oscal-redesign/handoff/2026-06-16-fe-apply-replanning-START-HERE-handoff.md。
先過 🧭 WHY + §0 讀序(4 份比對/計畫文件),能答冷接自檢 4 問(為何 FE 套不上不是退版能解 / 框架小改 vs 資源庫重構 / 適用控制項改編範本SSP / 專案另條大重構)才動。
這是「FE 逐項套到 v2 BE」的重新規劃 arc,非 bug-fix。BE 維持 v2、FE 06-08 為基準逐項套。
接手:等 user 回 §5 三個資源庫決策後細化資源庫遷移步驟;或回答「FE 要送什麼 payload 更新」(讀對應 v2 route schema)。
不切 branch、不 push、不 implicit 修 AO(另 session 派工)、能用判定要對真實 FE 實點。