For agentic workers: 對應 BE plan round-flow-engine-implementation-plan.md。FE 在
~/Projects/Billows/Audit-Manager/compliance-manager-fe/。 開工前必讀(cross-repo 鐵則):先讀 FECLAUDE.md(646 行)+docs/claude/frontend-overview.md,不憑印象。
Goal: FE 接上 round-scoped flow 引擎:Banner/stage 從 apUid retarget 到 roundUid、新增 ap_authoring(稽核計畫填寫)畫面、建專案照新規格(資源庫 + 第一輪範本)、建輪次選流程範本。
Architecture: FlowPhaseBanner(既有,generic)改吃 roundUid 驅動 round 生命週期;輪次轉換一律走 Banner 的 stage/advance(O2:直接轉換 route 已退役),不再用 round.status 七態各自打動詞 API。
Tech Stack: Vue 3 Composition API + PrimeVue 3.53 + Pinia + vue-i18n;BaseService(envelope 已拆);i18n lang.*。
設計依據: round-flow-engine-reintegration-design.md。
audit-round-fe-migration-plan.md 的關係(必讀)既有遷移計畫 Step 1 用 round.status 七態直接打動詞 API(launch-audit/start-auditing/close-round)。本增量的 O2 已把那些直接轉換 route 退役 → 該作法被取代:
| 既有遷移計畫 | 本增量調整 |
|---|---|
| Step 1「按鈕可用性改 round.status 七態 + 動詞 API」 | 改由 FlowPhaseBanner 的 stage/advance 推進(單一入口;動詞 route 已退役) |
| Step 2「AP 維護 view 新建」 | = 本增量的 ap_authoring routed stage 畫面(同一個,route /round/:roundUid/ap) |
| Step 0 api 常數 + round route | 沿用;本增量補 stage round-scoped 端點 + 建專案/建輪次範本欄 |
其餘(AR 維護、POA&M、風險)仍走既有遷移計畫,不在本 flow-engine 增量。
| # | 任務 | 依賴 BE | 風險 |
|---|---|---|---|
| 1 | 建專案畫面(新規格:資源庫 + 第一輪流程範本雙下拉) | BE Task 8b | 低 |
| 2 | stage 機制 retarget apUid→roundUid(StageService/useStageInfo/Banner/api.js) |
BE Task 9 | 中 |
| 3 | 建輪次選流程範本(預設帶資源庫) | BE Task 8 | 中 |
| 4 | ap_authoring 稽核計畫填寫畫面(routed stage) |
BE Task 3/7 + AP API | 大 |
| 5 | 掛 Banner 的 views 改傳 roundUid + i18n | BE Task 3 | 中 |
File: src/views/project/ProjectCreateView.vue
模型(決策 D6): 建專案畫面維持雙下拉——選 合規資源庫 + 稽核流程範本。流程範本 = 第一個 audit_round(initial)的流程(建專案順帶建 round 1)。後續輪在建輪次各自選(Task 3)。
新規格 payload: 資源庫下拉送 module_frame.uid(非 oscal_profile_uid)+ 流程範本下拉送 flow_template_uid。舊專案已清空、不做向後相容。
const payload = {
resource_library_uid: selectedModuleFrame.value?.uid, // ← module_frame.uid(非 oscal_profile_uid)
flow_template_uid: step0.flowTemplateUid, // ← 保留:第一輪的稽核流程範本
name: step0.name,
start_date: formatDate(step0.startDate),
end_date: formatDate(step0.endDate),
participants: selectedParticipants.value.map(p => ({ user_uid: p.uid, role: p.role })),
}
if (step0.description) payload.description = step0.description
// owner_uid 選填,預設建立者;本期不加 UIgit add src/views/project/ProjectCreateView.vue
git commit -m "feat(FR-038): 建專案照新規格送 resource_library_uid + flow_template_uid(第一輪範本)"Files: src/config/api/api.js、src/service/StageService.js、src/composables/useStageInfo.js、src/components/grc/FlowPhaseBanner.vue
git add src/config/api/api.js src/service/StageService.js src/composables/useStageInfo.js src/components/grc/FlowPhaseBanner.vue
git commit -m "refactor(FR-038): Banner/stage 機制 retarget apUid→roundUid"Files: 建輪次的 dialog/view(ProjectApListView.vue 重構成輪次列表後的「建輪次」入口,見既有遷移計畫 Step 1)、src/service/FlowTemplateService.js(既有)
git add src/views/project/ProjectApListView.vue
git commit -m "feat(FR-038): 建輪次選流程範本(預設帶資源庫 audit_flow_template_uid)"ap_authoring 稽核計畫填寫畫面(routed stage)Files: Create src/views/project/AuditPlanView.vue;router + menu.json + breadcrumb
= 既有遷移計畫 Step 2「AP 維護 view」。route 對應 stage_object.route_pattern
/project/projects/:projectUID/rounds/:roundUID/ap。main_role=auditor(FE 依 Banneruser_can_advance控制可推進)。
PUT /ap/<id>/reviewed-controls(重用 AuditTreeNav 勾選器)— 這是 ap_reviewed_controls_set precondition 的填寫點,選了才推得動 BannerPUT /ap/<id>/assessment-subjects(component/inventory-item/location/party/user,全量覆寫)PUT /ap/<id>/tasks(timing + EXAMINE/INTERVIEW/TEST)git add src/views/project/AuditPlanView.vue src/config/router/index.js src/config/menu/menu.json
git commit -m "feat(FR-038): ap_authoring 稽核計畫填寫畫面(reviewed-controls/subjects/tasks + Banner 推進)"Files: ProjectAuditorOverview.vue、ProjectPlanningView.vue、AuditReviewView.vue、PoamView.vue(凡 mount <FlowPhaseBanner> 處);i18n src/config/locales/i18n/{zh-tw,en}/
git add src/views/project/ src/config/locales/i18n/
git commit -m "feat(FR-038): 掛 Banner views 改傳 roundUid + flow precondition i18n"建專案→建輪次(帶範本)→planning 推進(收證據 gate)→ap_authoring(reviewed-controls gate)→audit→poam→close 全鏈 BDD。
Task 1(建專案畫面,獨立可先 ship)→ 2(Banner retarget)→ 3(建輪次範本)→ 4(AP 填寫畫面)→ 5(views + i18n)。