FR-038 專案規劃頁 v2 遷移弧 — SUMMARY(2026-06-17 收口)

項目 內容
弧主題 專案規劃頁(ProjectPlanningView)從舊 AP 引擎整頁遷到 v2 audit_round + living/round SSP,含任務指派、控制項樹、階段推進、程序書複製、任務↔︎BPMN 雙向同步、檔案預覽
驗收 user 手測「專案規劃大致可用」(2026-06-17)。批次維護上傳下載 + 雲端整合 未測(見 follow-up)
BE branch feature/oscal-refactor(commit 4e724fea未 push
FE branch feature/oscal-refactor(commit ec3f3ff未 push
部署 BE 需重啟;DEV migration/backfill 已套;stg/poc/prod 待套(2 migration + 1 backfill);push 等 user
§1

完成清單(13 task)

# 項目 狀態
1-3 control-tree 帶 assignees(讀)/ saveTask v2 寫入 / FE taskMap wire
4 快速配置批次指派(複用 per-job 寫入,非舊 batch)
5 AO 現況沒帶出 → Method A(statement key (a)_obj.N + dedup IR)
6 啟動專案推進階段(round 綁 workflow + ap_authoring entry label「稽核計畫填寫」)
7 BPMN 編輯器按鈕(control-tree 暴露 per-AO workflow uid)
8 移除控制項群組/控制項層級「管理人員」UI
9 公版 AO 現況/實施狀態 啟動專案複製(即 Method A)
10 AO 任務 ↔︎ BPMN userTask 雙向同步(name/描述/指南 derive + syncTaskToTemplate 補建屬性)
12 程序書(含控制/AO 連結)公版→專案 啟動時複製
13 多 userTask=多任務(create/delete_job v2 重建 + inject + backfill + idempotent)
11 Method A 前向一致(匯入/SoA AO key 對齊) ⏳ follow-up
§2

行為差異(v2 vs 遷移前)

  • 規劃頁資料源從 dark AP 引擎 → v2 control-tree(living/round SSP)。
  • 任務 = BPMN userTask(name/描述/指南/類型以 cloned 範本為單一真相,雙向同步)。
  • AO 現況/實施狀態現在會從公版帶到專案(key 統一 _obj.N)。
  • 程序書連同控制/AO 連結會從公版帶到專案。
  • 規劃階段下一步按鈕「稽核計畫填寫」(原誤顯示「啟動專案」)。
  • 切換專案/輪次/控制項/AO 會重抓資料(原會殘留)。
  • 檔案預覽圖片可開(原只 PDF/docx)。
§3

規範文件(本次產出)

  • changelog ×5:docs/changelog/2026-06-17-*.md
  • analysis:docs/analysis/2026-06-17-ao-statement-key-mismatch-and-task-bpmn-sync.md
  • 進度報告:docs/features/FR-038-2606-oscal-redesign/handoff/2026-06-17-planning-task-assignment-progress.md
  • migration:scripts/sql/2026-06-17-fr038-ao-statement-key-canonical.sql...-ap-authoring-entry-label.sql
  • backfill:scripts/backfill_2026-06-17_inject_job_execution_uid.py
§4

已知 follow-up

  1. 批次維護「任務 Excel 匯入/匯出」job_export_query / job_import_lookup 仍 2A dark → 未測未串通。留最後補。
  2. 雲端整合 Tab:未測。
  3. #11 Method A 前向一致:匯入(docx/excel)寫 statement + 資源庫 SoA 頁 AO uid 仍舊 key → 重匯入會再引入 (a)。stopgap:重跑 migration。
  4. stg/poc/prod:套 2 migration + 跑 backfill(改 host/db)。
  5. 死碼:規劃頁 unused participant handlers / fetchAOJobs(移除的 UI 殘留),可清。
§5

部署 handover

  1. git push(user 明示後)BE + FE。
  2. 重啟 BE。
  3. stg/poc/prod:套 2026-06-17-fr038-ao-statement-key-canonical.sql + 2026-06-17-fr038-ap-authoring-entry-label.sql(cmmgr,--single-transaction)+ 跑 backfill。