目前的專案啟動流程如下: 合規框架(compliant_frameworks)(oscal.catalog) -> 由User從合規框架挑選適合公司的控制項, 建立適合公司的合規資源庫(module_frames)(oscal.profile) -> 由User發起啟動專案(start_oscal_project) -> 專案建立流程: POST /oscal/projects/start
│
├─ 1. 驗證專案名稱不重複
│
├─ 2. 取得 Profile(by profile_uid)
│
├─ 3. 處理 SSP
│ ├─ 有帶 ssp_uid → 嘗試取得既有 SSP
│ └─ 沒有或找不到 → 建立空白 SSP ✦ 這裡才建 SSP
│
├─ 4. 建立 Assessment Plan (AP) + 空白 Assessment Result (AR)
│
├─ 5. 建立 Project + ProjectExtension
│ └─ ProjectExtension: module_frame_id(反查 profile→module_frame)、owner_id
│
├─ 6. 建立 Project ↔︎ AP mapping │
├─ 7. 初始化 AP(從 Profile clone 控制項/任務)
│ → assessment_plan_groups / controls / tasks / task_controls
│ (try/except 包裹,失敗不回滾)
│
├─ 8. 為每個 AP Task 建立定版 Workflow
│ ├─ 從 profile_assessment_workflow_mapping 找到預設 template
│ ├─ clone workflow_template(定版,獨立副本)
│ ├─ 建立 workflow_execution(子流程實例)
│ ├─ 建立 task ↔︎ workflow_template mapping
│ └─ 建立 task ↔︎ workflow_execution mapping
│
├─ A. 建立稽核系統(audit_systems)
│ → SSP system_characteristics 快照 + project 映射
│
├─ B. 加入額外參與者(排除建立者)
│
├─ C. 加入設備(project_device_mapping)
│
└─ 9. 把建立者加為專案管理員
目前希望把SSP編輯功能補上, 所以要調整合規資源庫和專案的啟動流程: 合規框架(compliant_frameworks)(oscal.catalog) -> 由User從合規框架挑選適合公司的控制項, 建立適合公司的合規資源庫(module_frames)(oscal.profile) -> 由User定義SSP(system_characteristics) ->