資源庫明細(ModuleFrame Detail)
功能群:合規框架與 SSP|上層導航頁見 範本管理 / 合規資源庫|資產模型先讀 功能群總覽
事實基準:2026-07-05 從 FE
ModuleFrameDetail.vue+ BE code 掃出;endpoint 對routes.json、schema 對db_schema.json
變更紀錄
| 日期 | FR | 變更 |
|---|---|---|
| 2026-07-06 | FR-047 | 自 module-frame.md 拆出:資源庫明細(群組→控制項→AO
下鑽檢視)獨立成子頁 |
| 2026-07-06 | FR-047 | 頁名由「資源庫明細下鑽」正名為「資源庫明細」(「下鑽」為動作、不宜當頁名;對齊 hub 既有連結文字) |
1. 功能描述
資源庫明細是 範本管理
清單「明細」導向的唯讀檢視頁(ModuleFrameDetail.vue):把一筆資源庫綁定的基準線(oscal_profile_uid)納入的控制集,以群組
→ 控制項 →
評估目標(AO)三層樹狀展開,供作者檢視這份資源庫「涵蓋哪些控制、每個控制的現況預設值長怎樣」。內容一律讀自
template_ssp_id 指向的樣板
SSP(單一真相來源),本頁只讀不寫;實際編輯在 樣板編輯器。
主要使用者:資源庫作者(管理員,檢視用);scope=SYSTEM
公版人人可讀。
角色速覽(本群非專案層角色,見 _overview
§5):資源庫作者(管理員)為主;scope=SYSTEM 公版 root
租戶維護、人人可讀。
1.1 功能總覽(本頁全部功能)
| # | 功能 | 說明 | 位置 | 詳述 |
|---|---|---|---|---|
| 1 | 群組樹 | 控制群組(catalog_groups)逐層展開 | 左側樹 / 上層 | §5 |
| 2 | 控制項清單 | 該群組下的控制項(catalog_controls),標控制編號 / 標題 | 明細表 | §6.2 |
| 3 | AO 下鑽 | 控制項下的評估目標(AO part),逐條列出 | 展開列 | §6.2 |
| 4 | 現況預設值檢視 | 每控制 / AO 的實作現況(frequency / 風險 / 責任部門 / 任務),讀自樣板 SSP | 明細欄 | §6.2 |
本頁為純顯示 / 下鑽,無實質寫入 UC,故 §2 不另開 UC 流程圖;載入 / 資料對應見 §10。編輯這些預設值走 樣板編輯器 UC-MF-01。
2. Use Case
角色速覽(同 §1)。
本頁為唯讀下鑽檢視,無獨立寫入 UC。控制項 / AO 現況預設值的編輯流程見 樣板編輯器 UC-MF-01。
3. 權限矩陣
| 操作 | FE 判定 | BE 強制 | BE 檢查位置 |
|---|---|---|---|
| 讀明細 / 下鑽 | 登入 + 選單權限 | @jwt_required() |
route |
本頁純讀,僅 JWT + 選單能力守門;
scope=SYSTEM公版人人可讀。寫入權(編輯預設值)見 樣板編輯器 §3。
4. 狀態機與前置條件
| 條件 | 效果 | 出處 |
|---|---|---|
資源庫無樣板 SSP(template_ssp_id 空) |
明細無內容可下鑽 | module_frames.template_ssp_id |
| 控制項不屬該 profile | 不列於明細樹 | profile 納入清單 |
本頁不觸發狀態轉換;編輯前置(MODULE_FRAME_400001 等)見
樣板編輯器
§4。
5. UI 設計
📸 實機截圖待補(亮色模式):待補群組樹展開態、控制項→AO 下鑽列、現況預設值明細欄。
版面骨架(三頁全景,本頁=頁2):
狀態呈現:明細為群組 → 控制項 → AO 三層樹狀,每列顯示控制編號 / 標題與現況預設值摘要;無 socket、純唯讀。
6. API 規格
Envelope:成功
{"status": true, "data": …, "meta": …}、失敗
{"error_code": "…", "msg": "…"}。
6.1 總清單(本頁呼叫的 endpoint)
| 分類 | Method + Path | 說明 | 完整規格 |
|---|---|---|---|
| 明細 | GET /module-frame/{uid} |
資源庫明細(含 profile / 樣板 SSP 指標) | §6.2 |
| 控制樹 | GET /module-frame/{uid}/control-defaults |
該資源庫納入控制集的現況預設值(下鑽資料) | §6.2 |
| AO 預設 | GET /module-frame/{uid}/objective-defaults |
AO 現況預設值 | 樣板編輯器 §6 |
6.2 核心 endpoint
[GET] /module-frame/{uid}
Response:ModuleFrameDTO(含 oscal_profile_uid /
template_ssp_id 指標、framework / profile join
帶出),供本頁定位下鑽的控制母體。欄位卡見 範本管理
§6.2。出處:api/module_frame/routes/module_frame_route.py。
[GET] /module-frame/{uid}/control-defaults
Response data(控制項現況預設值,供群組→控制項→AO
下鑽):
| 欄位 | 型別 | 說明 |
|---|---|---|
| control_identifier | string | 控制項編號(納入 profile 的控制) |
| implementation_status | — | 實作狀態(現況預設) |
| implementation_description | — | 實作說明 |
| responsible_role | — | 責任角色 / 部門 |
| control_origination | — | 控制來源 |
| objectives[] | array | 該控制項底下 AO 的現況預設(objective-defaults) |
讀自 module_frame_uid → template_ssp_id 指向的樣板 SSP
ssp_implemented_requirements /
ssp_statements。出處:app/module_frame/service/module_frame_control_default_service.py(GET
path)。逐欄語意與 lazy upsert 寫入行為見 樣板編輯器
§6.2。
7. 前端檔案地圖(compliance-manager-fe/)
| 檔案 | 角色 |
|---|---|
src/views/module_frame/ModuleFrameDetail.vue |
頁2 群組→控制項→AO 下鑽檢視 |
src/config/router/index.js:431-448 |
route module-frame-items(明細) |
src/config/api/api.js |
endpoint 常數(MODULE_FRAME 等) |
8. 後端檔案地圖(本頁核心鏈路)
| 鏈路 | Route | App Service | 底層 |
|---|---|---|---|
| 明細 | api/module_frame/routes/module_frame_route.py(單筆
GET) |
app/module_frame/service/module_frame_service.py |
domain/module_frame/service/module_frame_domain_service(join
framework_version + profile) |
| 控制樹下鑽 | module_frame_control_default_route.py(GET list) |
module_frame_control_default_service.py(讀
template_ssp_id → IR / statements) |
jedi_oscal_v2 SspService(IR 讀取) |
DDD 提醒:明細讀取一律解析到
template_ssp_id 對樣板 SSP 讀(單一真相來源);勿另建
sidecar 表存預設值。
9. DB
9.1 資料表總清單(本頁讀的表)
| 表 | 讀/寫 | 說明 | 欄位詳述 |
|---|---|---|---|
| compliance.module_frames | 讀 | 資源庫主檔(定位 profile / 樣板 SSP) | 範本管理 §9.3 |
| oscal.profiles / catalogs | 讀 | 納入控制集母體 | GAI-SD-03 |
| oscal.catalog_groups / catalog_controls / catalog_control_parts | 讀 | 群組 / 控制項 / AO 三層樹 | GAI-SD-03 |
| oscal.ssp_implemented_requirements | 讀 | 控制項現況預設(顯示) | 樣板編輯器 §9 |
| oscal.ssp_statements | 讀 | AO 現況預設(顯示) | 樣板編輯器 §9 |
9.2 ER 圖
資源庫 → template_ssp_id 樣板 SSP → ssp_* 子表關係見 範本管理 §9.2 ER;本頁純讀,不另繪。
10. 頁面邏輯與資料對應
載入:進頁 GET
/module-frame/{uid}(定位 profile / 樣板 SSP)→ GET
/module-frame/{uid}/control-defaults(下鑽資料)→ 依
catalog 群組結構組樹。
關鍵欄位對應:
| 畫面元素 | API 欄位 |
|---|---|
| 群組樹節點 | catalog_groups(依 profile 納入的控制歸屬群組) |
| 控制項列 | control-defaults control_identifier +
標題(catalog_controls) |
| 現況預設值 | control-defaults
implementation_status/description/responsible_role/control_origination(樣板
SSP IR props) |
| AO 下鑽 | objective-defaults(樣板 SSP ssp_statements props) |
儲存流程:本頁無寫入。編輯這些值走 樣板編輯器。
11. 背景行為與外部依賴
| 類型 | 內容 |
|---|---|
| Socket | 本頁無 socket |
| jedi-* 套件 | jedi-oscal-v2(樣板 SSP / catalog / profile 讀取) |
| 依賴 | 資源庫須有 template_ssp_id 與納入 profile
的控制集,才有內容可下鑽 |
12. 邊界情況與已知坑
- 純讀頁:本頁不寫任何表;所有現況預設值讀自
template_ssp_id樣板 SSP(單一真相來源),要改值請至 樣板編輯器。 - 無樣板 SSP 時明細空白:資源庫若
template_ssp_id為空(異常資料),下鑽無內容——正常資源庫由建立流程生成樣板 SSP。 - 控制母體來自 profile 納入清單:明細樹只列該資源庫 profile 納入的控制集;調整納入範圍在 樣板編輯器(納入控制項動作)。
13. 開發與驗證
- 跑起來:BE
python main_socketio.py(port 8000,log 在log/app.log);FE Vite dev server。BE 改 service code 必重啟 - 測試帳號:資源庫作者 /
管理員;
scope=SYSTEM需 root 租戶帳號(密碼見.env/ 部署文件) - 導航路徑:側邊選單「範本管理 / 合規資源庫」→
某列「明細」(
/module-frame/module-frame-items) - 前置資料:需一筆有
template_ssp_id+ 納入 profile 控制集的資源庫 - E2E:
compliance-manager-test/repo;以資源庫明細/module-frame/ModuleFrameDetail搜尋 - 相關文件:上層導航 範本管理;編輯內容 樣板編輯器;資產模型 _overview