同框架那份的方法:v1 FE 實際呼叫/讀寫 ↔︎ v2 BE 現況逐欄對照。 結論先講:資源庫跟框架不同等級 —— 框架是「接 v2 + 舊 URL,畫面沿用」;資源庫的舊模型(profile enrichment + control-defaults/objective-defaults 範本預設值)在 2A 後是 STUBBED/從沒接 v2,新模型改成 clone 三件組 + 編範本 SSP。所以資源庫需要「重構」,不是直接套用。 但 SSP 子表 tab(B3 已接 v2)可重用。
| BE 元件 | 現況 | 影響 FE |
|---|---|---|
module_frame_repo_impl._enrich_with_oscal |
2A STUBBED:entities 回傳時無 oscal_framework_version / oscal_profile;get_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範本」。
| FE 動作 | FE 端點 / 欄位 | v2 現況 | 結果 |
|---|---|---|---|
| 列表 | POST /module-frames;讀 oscal_framework_version.framework.name、oscal_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 在 | ⚠️ 待驗 |
oscal_profile.include_groups[].controls[].assessments[](含 workflow_template_uid)oscal_profile enrich stubbed → 空| 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-template、ssp-export |
接 v2(import-ssp / 匯出統一 loader) | ✅ 可重用 |
POST /ssp-excel-imports/parse {source_type:'module_frame', source_uid}、docx 同 → import-ssp 已接 v2資源庫是「中型重構」,介於框架(小改)和專案/稽核(大重構)之間:
| 類別 | 畫面/功能 |
|---|---|
| ✅ 可重用(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>/assessments、template-ssp 端點、control-defaults 匯入匯出 |
核心決策點(同先前討論的「編範本 SSP」): 資源庫範本內容的編輯,要從舊的「control-defaults/objective-defaults 預填表」改成「資源庫帶一份範本 SSP,沿用 SSP 維護的 control-implementation SoA 介面,對 template_ssp_uid 操作」。這是 v2 的設計意圖,也是 BE 已備好的路(B3 的 ssp control-implementation 對任何 ssp_uid 都能用)。
| 合規框架 | 合規資源庫 | |
|---|---|---|
| BE 現況 | 我重建 v2 + 舊 URL,幾乎可用 | 舊模型 stubbed、未接 v2;新模型 clone+範本SSP |
| FE 工 | 小(畫面沿用、改 API 欄位對映,如 AO description) | 中(列表/新增/適用控制項重構,SSP 子表可留) |
| 直接套用? | 大致可以 | 否,需重構 |
resolved_control_count 等)?