合規資源庫(Module Frame)— v1 FE 流程 ↔︎ v2 BE 差異 + 遷移評估

同框架那份的方法:v1 FE 實際呼叫/讀寫 ↔︎ v2 BE 現況逐欄對照。 結論先講:資源庫跟框架不同等級 —— 框架是「接 v2 + 舊 URL,畫面沿用」;資源庫的舊模型(profile enrichment + control-defaults/objective-defaults 範本預設值)在 2A 後是 STUBBED/從沒接 v2,新模型改成 clone 三件組 + 編範本 SSP。所以資源庫需要「重構」,不是直接套用。 但 SSP 子表 tab(B3 已接 v2)可重用。

§1

為什麼資源庫不能直接套用(v2 現況硬事實)

BE 元件 現況 影響 FE
module_frame_repo_impl._enrich_with_oscal 2A STUBBED:entities 回傳時無 oscal_framework_version / oscal_profileget_menu[] 列表讀 oscal_framework_version.framework.name、詳情讀 oscal_profile.include_groups全空
module_frame_control_default_service STUBBED:jedi_oscal 拔除,method 回 None 範本「適用控制項」control-defaults 編輯 死的
module_frame_control_objective_default_service STUBBED:回 None/[] AO 預設值編輯 死的
/oscal/catalog-controls/<uid>/assessments/module-frame/<uid>/template-ssp 未註冊 FE 這兩個呼叫 404
SSP 子表(components/leveraged/inventory/parties/system-characteristic/reference-documents/document-pool) B3 已接 v2(module-frame-scoped + ssp-scoped) ✅ 可重用

典範轉移:v2 廢掉「control-defaults / objective-defaults 範本預設值」這套;改成「資源庫帶一份範本 SSP(template_ssp_id),用 SSP 維護介面(control-implementation SoA)編內容」。新建也從「include_controls 控制樹」改成「選 published framework_version → clone catalog+profile+空SSP範本」。


§2

逐畫面比對

畫面 1:ModuleFrame.vue(列表 / 新增 / clone)→ 🔧 重構

FE 動作 FE 端點 / 欄位 v2 現況 結果
列表 POST /module-frames;讀 oscal_framework_version.framework.nameoscal_profile.include_groups、name/version/group/provider/status URL 在;但 enrich stubbed → 巢狀 oscal_* 欄 🟥 框架/控制數欄空白(基本欄位 name/version 還在)
新增 POST /module-frame {name,version,provider,group,frequency,status,oscal_framework_version_uid,include_controls[]} 舊 include_controls 模型;新模型是 POST /oscal/resource-libraries {framework_version_uid, profile:{include_controls}} 🔧 改接新 clone 端點 + 表單改「選版本→clone」
clone POST /module-frame/clone URL 在;行為待驗 ⚠️ 待驗
刪除 DELETE /module-frame/<uid> URL 在 ⚠️ 待驗

畫面 2:ModuleFrameDetail.vue(群組→控制→AO 導覽)→ 🟥 改資料源

  • FE 讀 oscal_profile.include_groups[].controls[].assessments[](含 workflow_template_uid)
  • v2:oscal_profile enrich stubbed →
  • → 🔧 改成讀 v2 catalog tree(經 resource-library 的 profile/catalog),或改走新詳情端點

畫面 3:ModuleFrameTemplateEditView.vue(範本編輯,核心)

Tab FE 端點 v2 現況 結果
**適用控制項(control-defaults) GET/PUT/DELETE /module-frame/<uid>/control-defaults[/<ci>] 讀寫 implementation_status/description/remarks/responsible_role/control_origination service STUBBED 回 None** 🟥 死 → 改走「編範本 SSP 的 control-implementation SoA」(B3 v2,對 template_ssp_uid 操作)
**AO 預設值(objective-defaults) GET/PUT/DELETE /module-frame/<uid>/objective-defaults 複合鍵 (control_identifier, statement_identifier) STUBBED** 🟥 死 → 改走 SSP SoA 的 objective 編輯
AO 清單 GET /oscal/catalog-controls/<uid>/assessments 未註冊 🟥 404 → 改從 v2 catalog parts 取
受評標的 system-characteristic GET/PUT /module-frame/<uid>/system-characteristic B3 v2 ✅ 可重用
元件/授權/資產 /module-frame/<uid>/{components,leveraged,inventory} B3 v2 ✅ 可重用
負責組織/人員 parties /module-frame/<uid>/parties B3 v2 ✅ 可重用(但 party 欄位對映待驗,可能同 AO 那類問題)
程序書池 reference-documents /module-frame/<uid>/reference-documents + 附掛 control/AO 程序書池 B3 v2;但附掛到 control-defaults/objective-defaults 那兩個 mapping 依賴 stubbed default → 待釐清 ⚠️ 池可用、附掛待驗
control-defaults 匯入匯出 control-defaults/{export,import,template,validate,verify} 依賴 stubbed default service 🟥 待驗(恐死)
SSP 樣板下載 / SSP 文件匯出 ssp-import-templatessp-export 接 v2(import-ssp / 匯出統一 loader) ✅ 可重用

畫面 4:ImportDocx / ImportExcel(SSP 匯入到資源庫)→ ✅ 大致可用

  • POST /ssp-excel-imports/parse {source_type:'module_frame', source_uid}、docx 同 → import-ssp 已接 v2
  • → ✅ 流程接上(細節欄位待實點)

§3

遷移結論

資源庫是「中型重構」,介於框架(小改)和專案/稽核(大重構)之間:

類別 畫面/功能
✅ 可重用(B3 已 v2) 範本編輯的 SSP 子表 tab(system-characteristic / components / leveraged / inventory / parties / 程序書池)、SSP 匯入匯出
🔧 需重構 列表/詳情(改讀 v2 resource-library/catalog,非 stubbed profile)、新增(include_controls → clone 三件組)、適用控制項編輯(control-defaults/objective-defaults 典範廢除 → 改編範本 SSP 的 SoA)
🟥 死/未接 control-defaults / objective-defaults service、catalog-controls/<uid>/assessmentstemplate-ssp 端點、control-defaults 匯入匯出

核心決策點(同先前討論的「編範本 SSP」): 資源庫範本內容的編輯,要從舊的「control-defaults/objective-defaults 預填表」改成「資源庫帶一份範本 SSP,沿用 SSP 維護的 control-implementation SoA 介面,對 template_ssp_uid 操作」。這是 v2 的設計意圖,也是 BE 已備好的路(B3 的 ssp control-implementation 對任何 ssp_uid 都能用)。

§4

與框架對照(給你排優先序)

合規框架 合規資源庫
BE 現況 我重建 v2 + 舊 URL,幾乎可用 舊模型 stubbed、未接 v2;新模型 clone+範本SSP
FE 工 小(畫面沿用、改 API 欄位對映,如 AO description) 中(列表/新增/適用控制項重構,SSP 子表可留)
直接套用? 大致可以 否,需重構
§5

待釐清(給你決策)

  1. 適用控制項編輯確定改走「編範本 SSP 的 SoA」嗎?(取代 control-defaults/objective-defaults)
  2. 列表/詳情的「控制數 / 框架名」改從 v2 resource-library 端點取(resolved_control_count 等)?
  3. control-defaults Excel 匯入匯出還要不要?(整套依賴已廢的 default service)