本卡為 FR-143 母案。缺失改善頁整個換掉:左樹只列不符合評估目標、上半稽核缺失、下半對原任務逐一設執行人員(可多人)、到期日、改善措施;送出就把任務退回第一站重跑,不等改完;側邊選單多「改善計畫」表格入口;Excel 與稽核計畫、稽核結果同一份往右延伸、一列一任務;修 jedi-oscal-v2 POA&M 匯出四處不合規。六棒六張子卡,清單在末段。
這系列在做什麼(白話)
稽核結案後,PM 要對每一條判「不符合」的評估目標排改善計畫。現在的頁面被使用者說「看不懂怎麼用」:一張表列缺失、點開抽屜建風險再建矯正再建里程碑,三層巢狀;而且要等每個里程碑都打完成,流程才走得下去。本案把頁面換成跟稽核計畫、稽核結果同一套:左邊一棵樹只列不符合的評估目標,點一條,上半看「為什麼不符合」(稽核發現、風險、稽核建議、查核方法、採用佐證),下半列出這條評估目標底下原本的任務(例如證據上傳、主管檢核、顧問檢核),PM 對每個任務設三樣:誰做(預設原指派人、可加減)、什麼時候要完成、要怎麼改。不新增任務、不追蹤有沒有改完。送出後這些任務全部退回第一站重跑,到期日寫進每一站,改好沒有由下一次稽核判定。側邊選單多一個「改善計畫」,PM 不用再從專案翻三層進去。Excel 用稽核結果那份往右延伸,一列一個任務,重複的評估目標資訊合併儲存格。
為什麼要做
決策者 2026-10-16 原話:「現在這版直接被 User 說是國中生的設計,完全看不懂要怎麼用」「只需要提供計畫就好,不需要等他改完」「里程碑就是對原本的任務卡設到期時間,不然退回去他們還是不知道真實到期時間去哪」。查證另發現現行內稽退卡只重開任務流程最新一站(not_met_job_redo_service._redo_one 用 pick_latest),三站流程全完成時重開的是顧問檢核,補證據的人改不到;DEV 現有 6 筆退卡紀錄全是單站流程,所以沒被測出來。
首腦讀完後的重點(D1~D12 全部定案,細節在 design.md 決策定案節)
- D3 不新增任務:對評估目標底下的原任務逐一設執行人員、到期日、改善措施;守門=每個任務三欄齊;送出後鎖定(409)。
- D5 執行人員=任務指派人(task_assignees 多人),改了就是改指派人,不另存一份。
- D10/D12 退卡=每個任務退回第一站整條重跑,到期日寫進該任務每一站的 due_at(欄位已存在,只在站層;不加欄、不動 jedi-flow-engine)。
- D6 Excel 一列一任務,FR-141 計畫欄+FR-142 結果欄原樣保留灰底、同評估目標合併儲存格、計畫欄群組預設收合;執行人員一格以
; 分隔。
- D7 匯出只有 Excel 與 OSCAL JSON(POA&M 標準沒有正文欄位,不做 Word/PDF)。D8 舊資料不管。D11 不設暫行緩解措施。D9 側邊入口叫「改善計畫」不加「我的」,表格、後端分頁。
- OSCAL 匯出四處修正:task 補 timing/responsible-roles;related-findings 剝私有鍵 finding-id;POA&M 檔內嵌被引用的 finding/risk/observation;task 自創 status 不匯出。
怎麼拆
- 第 1 棒 套件修正(jedi-oscal-v2 新檔 1、jedi-compliance-audit 改 2)— 匯出合規與守門改法要先定,後面三棒都靠它的 task 形狀(props.job_uid、assignee_user_ids)。
- 第 2 棒 BE 端點(新 app service 1、route、schema、error code)— 讀逐評估目標含底下任務、整批存、送出守門+鎖定+寫回任務+推進。
- 第 3 棒 FE 頁面(新頁 1、子元件 6、舊頁退役)— 照雛形畫面 1。
- 第 4 棒 Excel(新 workbook 讀寫 2、FE 預覽 1)— 一列一任務、合併、群組、預覽。
- 第 5 棒 退卡重跑(新 service 1、改 2)— 第一站重跑、每站 due_at、指派人;覆核輪同。
- 第 6 棒 入口清單(讀模型 2、端點 1、FE 頁 1、seed 1)— 側邊「改善計畫」表格。
建議順序:1 先跑 → 2、4、5 可平行 → 3 等 2 → 6 等 2。4 的 FE 預覽部分等 3。