稽核輪次流程引擎再整合 — FE Implementation Plan

For agentic workers: 對應 BE plan round-flow-engine-implementation-plan.md。FE 在 ~/Projects/Billows/Audit-Manager/compliance-manager-fe/開工前必讀(cross-repo 鐵則):先讀 FE CLAUDE.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


§1

0. 與既有 audit-round-fe-migration-plan.md 的關係(必讀)

既有遷移計畫 Step 1 用 round.status 七態直接打動詞 APIlaunch-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 增量。


§2

前置驗證


§3

任務總覽

# 任務 依賴 BE 風險
1 建專案畫面(新規格:資源庫 + 第一輪流程範本雙下拉) BE Task 8b
2 stage 機制 retarget apUidroundUid(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

Task 1: 建專案畫面(新規格:資源庫 + 稽核流程範本雙下拉)

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 選填,預設建立者;本期不加 UI
git add src/views/project/ProjectCreateView.vue
git commit -m "feat(FR-038): 建專案照新規格送 resource_library_uid + flow_template_uid(第一輪範本)"

Task 2: stage 機制 retarget apUid → roundUid

Files: src/config/api/api.jssrc/service/StageService.jssrc/composables/useStageInfo.jssrc/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"

Task 3: 建輪次選流程範本(預設帶資源庫)

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)"

Task 4: 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 依 Banner user_can_advance 控制可推進)。

    • 查核控制項PUT /ap/<id>/reviewed-controls(重用 AuditTreeNav 勾選器)— 這是 ap_reviewed_controls_set precondition 的填寫點,選了才推得動 Banner
    • 抽查名單PUT /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 推進)"

Task 5: 掛 Banner 的 views 改傳 roundUid + i18n

Files: ProjectAuditorOverview.vueProjectPlanningView.vueAuditReviewView.vuePoamView.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"

§4

漣漪 checklist

§5

E2E(compliance-manager-test repo,另開)

建專案→建輪次(帶範本)→planning 推進(收證據 gate)→ap_authoring(reviewed-controls gate)→audit→poam→close 全鏈 BDD。

§6

開工順序

Task 1(建專案畫面,獨立可先 ship)→ 2(Banner retarget)→ 3(建輪次範本)→ 4(AP 填寫畫面)→ 5(views + i18n)。