本卡屬 FR-147,棒 4 第三張(FE)。依賴 3b(區塊與鈕殼)與 4a(三支端點)。
資源庫頁頁首加兩顆鈕:「匯出任務說明」下載 Excel;「匯入任務說明」選檔後進預覽,列出有變更的格(黃底新值、灰字劃掉舊值)與跳過幾列,確認後寫入並重新載入區塊。雛形:prototype/library-tasks.html 的兩個對話框。
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/module_frame/ModuleFrameTemplateEditView.vue 頁首工具列(grep 既有匯出 SSP 範本鈕的位置)← 只加兩行掛元件
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-fe/src/components/grc/... 既有匯入預覽對話框(FR-139 T-21 資源庫匯入現況資料的預覽元件)← 長相參考
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-fe/src/config/api/api.js 加三個端點常數
src/components/grc/module-frame/TaskGuidanceImportExport.vue:匯出鈕直接 POST export 下載;匯入鈕開對話框(拖曳區 → parse → 預覽表:控制項/AO/任務/欄位/舊值/新值,跳過清單可展開 → 確認 → confirm → emit imported)。ModuleFrameTemplateEditView.vue 工具列掛元件、監聽 imported 讓 3b 的區塊重載。原檔淨增 ≤ 5 行。ListToolbar 的規則(鈕在右);寫入鈕 v-can="CAP.OSCAL_RESOURCE_LIBRARY_UPDATE";稽核中反灰。FE 不寫;npm run build 綠。
ModuleFrameTemplateEditView.vue 1,954 行、job_import_service.py 546 行)一律新開檔再一行呼叫,不往裡塞。python main.py),驗收打端點用 curl;不開任何瀏覽器視窗,前端只用 vite build/dev server 取 SFC 200 驗編譯,畫面留給決策者複測。git add <檔名>(禁 -am);commit message 寫做了什麼/為什麼/怎麼驗;append 白話補充(commit hash、手測清單)到本卡;狀態改「修正待驗證」。push 等令。