本卡屬 FR-143,第 3 棒:前端新頁照雛形畫面 1 刻,接第 2 棒端點。舊
RoundPoamView.vue退役。
把雛形 prototype/poam-authoring.html 做成真頁面:左樹只列不符合的評估目標(燈號已規劃/部分規劃/未規劃、搜尋、篩選);點控制項看總覽表;點評估目標上半是「稽核缺失」兩欄文件表單,下半每個任務一塊(執行人員 chip 多選預設原指派人、到期日、改善措施、帶入稽核建議;同一任務對多條評估目標時顯示共用提示);頁首儲存、送出(守門清單→確認表→鎖定唯讀)、匯出選單(Excel/OSCAL JSON)、匯入 Excel 入口(預覽模式由第 4 棒接)。
compliance-manager-fe/src/views/project/RoundPoamView.vue 890 行超標,退役:改成一行導向新頁
compliance-manager-fe/src/config/router/index.js:1130 project-poam-round 路由
compliance-manager-fe/src/config/api/api.js:296-298 GRC_POAM_* 常數
compliance-manager-fe/src/config/locales/i18n/zh-tw/round-audit-poam.json 舊 i18n(新頁另開 namespace)
docs/features/FR-143-2610-poam-ao-worksheet-and-excel/prototype/poam-view.js、poam-state.js、poam.css 雛形邏輯與樣式(可直接抄結構)
FR-142 新頁 src/components/grc/ar-result/ 左樹、總覽、表單骨架同款,先看它怎麼接
src/views/project/RoundPoamPlanView.vue 掛原路由 /project/projects/:id/round/:roundUid/poam(name 不變,免得 FR-140 總覽頁連結斷);舊檔改成 <script setup> 內 router.replace 到新頁後整檔退役(或直接刪,確認無其他 import)。src/components/grc/poam/:PoamObjectiveTree.vue、PoamControlOverview.vue、PoamObjectiveForm.vue(含稽核缺失表格)、PoamTaskCard.vue、PoamSubmitDialog.vue;每檔 ≤800 行、函式 ≤40 行。可沿用 FR-142 ar-result/ 的左樹與總覽元件就沿用,不複製一份。GRC_POAM_OBJECTIVES、GRC_POAM_OBJECTIVE、GRC_POAM_SUBMIT、GRC_POAM_EXPORT;BaseService 無 meta 回裸 data(memory feedback_baseservice_resolves_bare_data_when_no_meta)。original_assignees,顯示「已由原指派人 X 改派」與共用提示。到期日 Calendar 存 YYYY-MM-DD。data.blockers 列出;成功後整頁 locked 唯讀、頂部顯示「已於 YYYY-MM-DD 送出」。確認表欄:任務(對應評估目標)、執行人員(註明增減)、到期日。round-poam-plan.json(zh-tw、en),GRC_412005 文案同步改「尚有任務未完成規劃」,新增 GRC_409042。用語照雛形:稽核缺失、執行人員、到期日、改善措施、已規劃/未規劃/待規劃、帶入稽核建議。碎片政策不強制;commit 前 npm run lint 與 src/__tests__/v-can-guards.spec.js 要過(寫入按鈕掛 v-can)。
grep -rn "border-left" src/components/grc/poam/ 零命中(1px 分隔線除外)。