專案總覽頁(Project Auditor Overview)
事實基準:2026-07-05 從 FE / BE code 掃出(FR-038 v2 round-based 架構);endpoint 對照
routes.json,schema 對照 marshmallow serializer 與 service 組裝碼;表結構取自db_schema.json變更紀錄:2026-07-09 FR-047 —— 規劃期判定改輪次驅動(
isPlanningPhase,對齊專案狀態機 B 案,原依project.status==='pending');輪次 header 開始 / 結束日期改 locale-aware 格式化(原直接渲染 wire ISO 字串2026-06-22T00:00:00+00:00、end_atnull 不再留懸空破折號)
1. 功能描述
專案總覽頁是單一稽核專案的儀表板與導覽中樞:切換稽核輪次、看整體指標(控制母體 / 任務完成 / SSP 完成 / 覆核進度)、瀏覽控制群組→控制項→AO 樹與其 SSP 現況、做覆核標記、管理群組 / 控制項層參與人員、並依輪次階段導向各階段主場頁(規劃 / 稽核計畫 / 稽核判定 / POA&M)。
同一元件 ProjectAuditorOverview.vue 掛三條 route
變體:project-auditor-overview(純,無
round)、project-auditor-overview-round(FR-038 v2
推薦,/round/:roundUid)、project-auditor-overview-ap(legacy
AP,/ap/:apUid)。差異見 §12。
主要使用者:專案 manager / auditor / reviewer / viewer(動作列依輪次狀態與角色顯示)。
角色速覽(完整定義與 manager 全域代行慣例見 _overview §3):
| 角色 | 一句話 |
|---|---|
| manager | 專案經理 — 動作列最全,可代行 auditor 的規劃 / 判定入口 |
| auditor | 稽核員 — audit_planning 編 AP、auditing 進判定 |
| reviewer | 覆核者 — 可對控制項 / AO 做覆核標記 |
| viewer | 一般參與者 — 只能檢視 |
1.1 功能總覽(本頁全部功能)
| # | 功能 | 說明 | 位置 | 詳述 |
|---|---|---|---|---|
| 1 | 輪次切換下拉 | 選本專案某一輪,決定 apStatus / sspUid;無
roundUid 自動選最新一輪 |
Header | UC-PO-01 |
| 2 | 四張指標卡 | 控制群組 / 控制項數、任務完成(三態分解)、整體完成度、SSP 完成度 / 覆核進度 | Header 下 | §6.2 |
| 3 | 專案資訊面板(可摺疊) | 參與人員、受評標的、資產(設備+系統)、SSP 範圍提示 | 摺疊區 | §6 |
| 4 | 開始執行任務 | PM 於 planning 把已指派 TODO 任務批次轉 PROCESSING + 通知 | 動作列(限 PM/planning) | §6.4 |
| 5 | 進專案規劃頁 | 導向 planning 主場頁 | 動作列 | →規劃頁 spec |
| 6 | 進稽核計畫頁(編輯 / 檢視) | audit_planning 且 auditor/manager 可編輯,其餘檢視 | 動作列 | →稽核執行群 |
| 7 | 進稽核判定頁 | auditing 且 auditor 進判定,其餘檢視結果 | 動作列 | →稽核執行群 |
| 8 | 進 POA&M 頁 | remediation / pending_reverify / closed 且 PM | 動作列 | →稽核執行群 |
| 9 | 控制樹導覽 / 搜尋 / 只看我的任務 | 群組→控制項→AO 三層;搜尋、展開全部、我的任務篩選 | 左樹 | UC-PO-02 |
| 10 | 控制項 / AO SSP 現況檢視 | 右面板讀 SSP 實作狀態 / 描述 / 備註 / 程序書(唯讀) | 右面板 | UC-PO-02 |
| 11 | 覆核標記(控制項 / AO) | manager / reviewer 對已完成控制項 / AO 標記覆核閉環 | 右面板覆核鈕 | UC-PO-02 |
| 12 | 群組 / 控制項層參與人員管理 | 對控制群組或控制項指派 / 移除管理人員(影響三層編輯權) | 右面板 → 側欄 | UC-PO-04 |
| 13 | 任務執行抽屜 | 檢視某 AO 任務的指派 / 證據 / 狀態 | 右側抽屜 | §6 |
| 14 | AI 證據分類 | 觸發證據自動分類 job(非同步輪詢狀態) | 動作列 → dialog | 另屬證據管理功能群 |
| 15 | 結案 / 覆核生命週期 | 輪次結案 / 發起覆核等轉換(狀態機見 _overview §2) | 動作列 / 由 banner 驅動 | §12(含 FE 常數 drift) |
UC(§2)展開本頁所有具實質後端邏輯的操作路徑:輪次切換導覽(1)、控制樹瀏覽與覆核標記(9~11)、開始執行任務(4)、群組/控制項層參與人員管理(12)。純顯示 / 導覽類(2 指標卡、3 專案資訊面板、13 任務執行抽屜)見 §6;階段推進(15)與各階段主場頁入口(5~8)另屬各階段主場頁 spec 與 _overview §2,AI 證據分類(14)另屬證據管理功能群,於此只交叉連結不重複。
2. Use Case
角色速覽(完整定義與 manager 全域代行慣例見 _overview §3):
| 角色 | 一句話 |
|---|---|
| manager | 專案經理 — 動作列最全,可代行 auditor 的規劃 / 判定入口 |
| auditor | 稽核員 — audit_planning 編 AP、auditing 進判定 |
| reviewer | 覆核者 — 可對控制項 / AO 做覆核標記 |
| viewer | 一般參與者 — 只能檢視 |
流程圖視覺慣例:菱形 = 判斷、橘底 = 例外 / 擋下、紅框 = 錯誤(標 error code)、綠框 = 成功終點、虛線 = 可選路徑。
UC-PO-01 切換輪次並進入階段主場頁
| 項目 | 內容 |
|---|---|
| 角色 | 專案參與者(動作列依狀態 / 角色) |
| 前置條件 | 已登入;為專案參與者;專案至少一輪次 |
| 產出 / 後置條件 | 定位輪次 → apStatus /
sspUid;載入控制樹與指標;動作列導向對應階段頁 |
UC-PO-02 瀏覽控制樹並做覆核標記
| 項目 | 內容 |
|---|---|
| 角色 | 檢視:任一參與者;覆核:manager / reviewer(純 auditor 不可覆核) |
| 前置條件 | 控制項 / AO 已完成(未完成則覆核鈕禁用);輪次未結案 |
| 產出 / 後置條件 | is_reviewed / reviewers 更新(本地
state,不重載整樹) |
UC-PO-03 開始執行任務(PM 批次啟動)
| 項目 | 內容 |
|---|---|
| 角色 | 專案 manager |
| 前置條件 | 輪次 = planning;有已指派且 TODO 的準備任務 |
| 產出 / 後置條件 | job_executions.status
TODO→PROCESSING;站內通知送出;activated_count
回傳(idempotent 可重按) |
(流程與 endpoint 同專案規劃頁 UC-PP-02 的批次啟動段;本頁 Header 動作列亦提供此入口。)
UC-PO-04 管理群組 / 控制項層參與人員
| 項目 | 內容 |
|---|---|
| 角色 | 具 canManageGroupParticipants /
canManageControlParticipants 者 |
| 前置條件 | 已選中群組或控制項節點;輪次未結案 |
| 產出 / 後置條件 | control_group_participants /
project_control_participants 增改刪;直接影響該群組
/ 控制項的三層編輯權(見 §3) |
3. 權限矩陣
專案層角色基調見 _overview §3。本頁的實際檢查點(FE 判定與 BE 強制分欄並列):
| 操作 | FE 判定 | BE 強制 | BE 檢查位置 |
|---|---|---|---|
| 進頁 / 讀樹 / 讀 SSP | 參與者即可 | require_participant / SSP 權限 |
common/middleware/permission/ssp_permission.py |
| 開始執行任務 | isProjectManager && status==='planning' |
_check_manager → GRC_403002 |
app/grc/service/task_execution_service.py |
| 進稽核計畫頁(編輯) | `audit_planning && (isAuditor | isProjectManager) && hasAuditStage` | |
| 進稽核判定頁 | isAuditor && status==='auditing' |
判定寫入端強制 | AR app service |
| 覆核標記 | !isApClosed && (manager/reviewer at 專案/群組/控制項層) && 非純 auditor |
review endpoint 端 | api/grc/routes/review_route.py |
| 群組 / 控制項參與人員管理 | canManageGroupParticipants /
canManageControlParticipants |
對應 participant API | participant routes |
| 輪次生命週期(launch / close / reverify) | manager / auditor(依轉換,見 _overview §2) | _check_role(manager override)→
GRC_403002 / GRC_403001 |
app/grc/service/audit_round_app_service.py:99-110 |
⚠️ 覆核權三層遞進:FE 允許專案 / 群組 / 控制項任一層的 manager/reviewer 做覆核;改權限時比照規劃頁 §3 的三層
canEdit一併看。純 auditor 被排除在覆核之外(判定與覆核分權)。
4. 狀態機與前置條件
輪次 7 態狀態機(含轉換動作 / 角色 / 前置條件 / error code)見 _overview §2——本頁是它的主要呈現與導覽面。本頁相關 gate:
| 條件 | 效果 | 出處 |
|---|---|---|
選中輪次 status |
決定動作列哪些鈕顯示 / 可用(見 §1.1 4~8) | ProjectAuditorOverview.vue
computed(canEditApAuthoring 等) |
isPlanningPhase(round 模式=該輪
status==='planning';無輪次時 fallback
project.status==='pending') |
顯示「開始執行任務」(限 PM)+規劃提示條、規劃期專屬 SSP 編輯提示 | ProjectAuditorOverview.vue computed(狀態機 B
案後改輪次驅動,取代原 isPending) |
isApClosed(closed) |
覆核 / 管理鈕禁用、顯示結案提示 | 同上 |
sspUid 取值 |
planning 用 living SSP;audit_planning
後用凍結快照(round.ssp_id) |
_overview §4 |
| 覆核鈕 | 控制項 / AO 未完成 → 禁用 | FE canReviewControl + 完成度 |
| 生命週期轉換前置 | 見 _overview §2(living SSP、POA&M 全 closed、母輪 pending_reverify 等) | audit_round_app_service.py |
5. UI 設計
版面骨架與區塊職責(右面板依左樹選中節點型別切換;彩色區塊可點跳對應小節錨點,API 僅標代表性):
實機截圖(STG,亮色模式,2026-07-05,帳號 blsadmin,專案「亞○ CMMC L1 合規」/ auditing 輪次):




狀態呈現:輪次下拉每項帶狀態徽章(AP_STATUS_SEVERITY
色階);樹節點帶完成度、覆核勾、可執行任務脈動點;覆核鈕依完成度 /
角色禁用;SSP 現況為 white-space:pre-line 純文字(不渲染
markdown);無 socket,操作後本地 state 更新。
6. API 規格
Envelope:成功 {"status": true, "data": …}、失敗
{"error_code": "…", "msg": "…"}(HTTP 4xx/5xx)。
6.1 總清單(本頁呼叫的全部 endpoint)
| 分類 | Method + Path | 說明 | 完整規格 |
|---|---|---|---|
| 載入 | GET /grc/project/{uid} |
專案基本資料+參與人員(進頁權限判定) | GAI-SD-02 |
| 載入 | POST /projects/{uid}/audit-rounds/list |
輪次清單(切換下拉來源,定位當前輪) | §6.2 |
| 載入 | GET /ssp/{sspUid}/control-tree |
群組→控制項→AO 樹(含內嵌任務) | 規劃頁 §6.2 |
| 載入 | GET /grc/project/{uid}/ap/{apUid}/dashboard |
四張指標卡資料 | §6.2 |
| SSP 現況 | GET /ssp/{sspUid}/control-implementation/{cid} |
控制項 / AO 現況(按需載入,唯讀顯示) | 規劃頁 §6.3 |
| 覆核 | POST/DELETE
/grc/project/{uid}/ap/{apUid}/control/{cid}/review(及
.../ao/{aoId}/review) |
控制項 / AO 覆核標記增刪 | §6.3 |
| 任務 | POST /grc/project/{uid}/start-task-execution |
PM 批次啟動已指派任務 | 規劃頁 §6.4 |
| 參與人員 | POST/PUT/DELETE
/control-group-participant・/project-control-participant |
群組 / 控制項層人員增改刪 | GAI-SD-02 |
| 階段 | GET/POST
/project/{uid}/audit-round/{roundUid}/stage/{info,advance} |
階段資訊 / 推進(FlowPhaseBanner) | 規劃頁 §6.5 |
| 輪次生命週期 | POST
/audit-round/{roundUid}/{launch-audit,start-auditing,close-round,launch-reverify,ar/finalize} |
輪次狀態轉換(多由 banner / 各階段頁驅動) | §6.3 / _overview §2 |
| legacy 載入 | GET /grc/project/{uid}/assessment-plans/menu |
AP 變體用的舊清單(見 §12) | GAI-SD-02 |
以下 §6.2~6.3 為核心 endpoint 完整規格;標 GAI-SD-02 者屬常規 CRUD,多數 endpoint 的欄位規格與規劃頁 spec 共用(已標指向)。
6.2 載入類
[POST] /projects/{project_uid}/audit-rounds/list
輪次清單(切換下拉來源)。無 body。Response
data(陣列,每項)欄位見 規劃頁 §6.2(同
_to_dto):uid / name /
round_no / round_type / status /
parent_round_uid / ap_uid /
ssp_uid / ar_result_id / poam_id
/ flow_template_snapshot_uid /
workflow_execution_uid / start_at /
end_at / created_at /
created_user /
created_user_name。出處:app/grc/service/audit_round_app_service.py:164-191(_to_dto)
[GET] /grc/project/{project_uid}/ap/{ap_uid}/dashboard
指標卡資料。Response data:
| 欄位 | 型別 | 說明 |
|---|---|---|
total_controls |
int | 控制項總數 |
control_group_count |
int | 控制群組數 |
total_tasks |
int | 任務總數 |
completed_tasks |
int | 已完成任務數 |
task_status_breakdown |
object | 任務三態分解:{completed, in_progress, not_started} |
completion_rate |
number | 整體完成度 |
reviewed_controls_count |
int | 已覆核控制項數 |
若無 task counts,FE 退回以樹的 AO 任務數估算(見
§12)。出處:api/grc/routes/assessment_plan_route.py(dashboard
resource)
6.3 覆核 / 輪次類
[POST]|[DELETE] /grc/project/{project_uid}/ap/{ap_uid}/control/{control_uid}/review(及 .../ao/{ao_uid}/review)
控制項 / AO 覆核標記。POST 標記、DELETE 取消,無 body。Response
data:
| 欄位 | 型別 | 說明 |
|---|---|---|
is_reviewed |
bool | 是否已覆核 |
reviewers |
array | 覆核者清單,每項 {uid, name, reviewed_at} |
前置:該控制項 / AO
已完成、使用者具覆核權。出處:api/grc/routes/review_route.py
輪次生命週期轉換(POST /audit-round/{round_uid}/...)
launch-audit / start-auditing /
close-round / launch-reverify /
ar/finalize——轉換權限、前置條件與 error code 見 _overview §2(enforcement 在
audit_round_app_service.py)。角色守門
_check_role:manager override 慣例,失敗
GRC_403002(缺 manager)/ GRC_403001(缺
auditor)。關鍵 error code:GRC_412034(無 living
SSP)、GRC_412005(POA&M 未全
closed)、GRC_412037(母輪不在待複驗)、GRC_412041(已發起覆核)、GRC_412032(狀態轉換不合法)。出處:app/grc/service/audit_round_app_service.py
⚠️ 本頁對輪次生命週期的呼叫多由 FlowPhaseBanner(stage/advance)或各階段主場頁觸發,非本頁獨有;且部分 FE 常數仍指向 legacy path(見 §12)。
7. 前端檔案地圖(compliance-manager-fe/)
| 檔案 | 角色 |
|---|---|
src/views/project/ProjectAuditorOverview.vue |
主檢視(約 2,500 行;輪次切換、指標卡、專案資訊、控制樹 master-detail、覆核、參與人員、任務抽屜) |
src/config/router/index.js:773-841 |
三 route 變體:-overview(純)/
-round(v2)/
-ap(legacy) |
src/components/grc/FlowPhaseBanner.vue |
階段推進橫幅 |
src/components/grc/JobExecutionDrawer.vue |
任務執行抽屜 |
src/components/grc/ParticipantsPanel.vue |
參與人員管理側欄 |
src/components/grc/project/AIEvidenceClassificationDialog.vue |
AI 證據分類 dialog |
src/components/grc/{StatusBadge,SspStatusTag,GrcProgressBar,UserAvatar,ReferenceDocumentList}.vue |
徽章 / 進度 / 頭像 / 程序書清單 |
src/composables/useEvidenceClassificationJobs.js |
證據分類 job 輪詢 |
src/service/SspService.js |
SSP 現況按需載入 |
src/config/locales/i18n/zh-tw/auditor-overview.json |
頁面 i18n |
8. 後端檔案地圖(本頁核心鏈路)
| 鏈路 | Route | App Service | 底層 |
|---|---|---|---|
| 輪次清單 | api/project/routes/audit_round_route.py::AuditRoundsListRoute |
app/grc/service/audit_round_app_service.py::list_rounds
→ _to_dto |
compliance.project_audit_rounds |
| 專案詳情 | api/grc/routes/project_route.py::ProjectDetailResource.get |
app/grc/service/project_service.py::get_project |
jedi_project + participant service |
| 控制樹 | api/oscal/routes/ssp/ssp_control_implementation_route.py::SspControlTreeRoute |
app/oscal/service/ssp_control_implementation_service.py::get_control_tree |
ProfileResolutionService.resolve + catalog repos |
| 指標卡 | api/grc/routes/assessment_plan_route.py(dashboard) |
AP dashboard service | 統計查詢 |
| 覆核 | api/grc/routes/review_route.py |
review app service | oscal.ssp_implemented_requirements /
ssp_statements(覆核標記) |
| 啟動任務 | api/grc/routes/task_execution_route.py::StartTaskExecutionRoute |
app/grc/service/task_execution_service.py::start_task_execution |
查已指派 TODO → 批次 activate + 通知 |
| 輪次生命週期 | api/project/routes/audit_round_route.py(launch-audit /
start-auditing / close-round / launch-reverify / ar/finalize) |
audit_round_app_service.py(各方法,_check_role
守門) |
凍結 SSP snapshot / AP / AR / POA&M / BPMN 綁定 |
DDD 提醒:控制樹核心
build_control_tree_by_ssp_id 免權限(背景任務共用),權限在
route / app service 層把關;輪次寫入照 _check_role +
狀態前置。
9. DB
9.1 資料表總清單(本頁讀寫的全部表)
| 表 | 讀/寫 | 說明 | 欄位詳述 |
|---|---|---|---|
| compliance.project_audit_rounds | 讀 | 輪次切換來源(狀態 / 凍結 SSP 指標 / 覆核母輪) | §9.3 |
| compliance.projects / project_participants | 讀 | 專案主檔 / 角色(動作列判定) | GAI-SD-03 |
| compliance.project_extensions | 讀 | living_ssp_id 錨點 | 規劃頁 §9.3 |
| oscal.system_security_plans | 讀 | living / 凍結 SSP | GAI-SD-03 |
| oscal.ssp_implemented_requirements / ssp_statements | 讀 / 寫(覆核標記) | 控制項 / AO 現況(唯讀顯示)+ is_reviewed | GAI-SD-03 |
| oscal.catalog_groups / catalog_controls / catalog_control_parts | 讀 | 控制項結構三層 | GAI-SD-03 |
| oscal.ssp_reference_documents | 讀 | 程序書(唯讀顯示) | GAI-SD-03 |
| compliance.job_executions | 讀 / 寫(狀態) | AO 任務(樹內+抽屜);start-task-execution 轉 PROCESSING | 規劃頁 §9.3 |
| compliance.task_assignees | 讀 | 任務指派(可執行判定 / 我的任務篩選) | GAI-SD-03 |
| compliance.control_group_participants / project_control_participants | 寫 | 群組 / 控制項層參與人員 | GAI-SD-03 |
| compliance.stage_objects | 讀 | 階段定義(banner) | GAI-SD-03 |
9.2 ER 圖(本頁讀寫範圍)
9.3 核心表欄位(取自 DEV DB dump,含 DB comment)
compliance.project_audit_rounds — 稽核輪次主檔
輪次切換下拉的資料來源;欄位(uid /
round_no / round_type / status /
parent_round_id / assessment_plan_id /
ssp_id(凍結快照)/ ar_result_id /
poam_id / flow_template_snapshot_uid /
workflow_execution_uid)與說明見 規劃頁
§9.3——本頁只讀不改(狀態轉換走 API,不直接 UPDATE,見 _overview §5)。
其餘表(SSP 現況 / 任務 / 參與人員)欄位詳見規劃頁 §9.3 與 GAI-SD-03。
10. 頁面邏輯與資料對應
載入時序:見 §2 UC-PO-01 流程圖(專案+輪次清單 → 選輪次定 sspUid → 控制樹+指標)。
關鍵欄位對應(API ↔︎ 畫面):
| 畫面元素 | FE state | API 欄位 |
|---|---|---|
| 輪次下拉 | apList / selectedAp |
audit-rounds/list 的
{uid, name, round_no, status, ssp_uid} |
| 目前 SSP | sspUid(computed) |
selectedAp.ssp_uid(凍結)→ fallback
project.ssp.id(living) |
| 四指標卡 | controlGroupCount / taskStats / completionRate / sspOverallStats / reviewStats |
dashboard 回傳 + tree 統計 |
| 樹節點狀態 | ctrlStatus / ctrlProgress(computed) |
control-tree 的 ssp_implementation_status / 完成度 |
| 覆核勾 | is_reviewed / reviewers |
review endpoint 回傳 |
| SSP 現況面板 | sspDescriptions[cid] |
control-implementation 的 implementation_description /
objectives[] |
| 動作列可用性 | isProjectManager / isAuditor / canEditApAuthoring / … |
由 status × participant role 推導 |
儲存流程:本頁多為讀取 + 覆核標記 / 參與人員 / 啟動任務等點狀寫入;覆核回填本地 state,不重載整樹。控制項 SSP 現況為按需載入(展開才 GET)。
錯誤對應:BE error envelope → toast;覆核 / 啟動任務 / 生命週期常見碼見 §3 / §6.3 與 _overview §2。
11. 背景行為與外部依賴
| 類型 | 內容 |
|---|---|
| 通知 | 「開始執行任務」→ 按人聚合送站內通知(同規劃頁) |
| AI 證據分類 | dialog 觸發後由 useEvidenceClassificationJobs
非同步輪詢 job 狀態(scope = 專案 × 輪次 / AP) |
| BPMN | 輪次狀態由綁定 workflow 驅動;階段推進 = BPMN 前進;直接 UPDATE
status 會脫鉤(見 _overview
§5) |
| Socket | 本頁無 socket / 輪詢(AI 分類的輪詢是 HTTP polling,非 socket);一般資料更新靠操作後 state 更新與重載 |
| jedi-* 套件 | jedi-oscal-v2(SSP /
catalog)、jedi-flow-engine(輪次 / 任務 /
階段)、jedi-auth(JWT) |
| 系統參數 | 無 feature flag;輪次 / 階段行為由 BPMN 範本與
stage_objects 定義 |
12. 邊界情況與已知坑
- 三 route 變體差異:
-round(v2 推薦)走/audit-rounds/list、有完整階段功能;-ap(legacy)走舊assessment-plans/menu、2026-06-18 起棄用但仍相容;-overview(純)自動選最新輪。修 bug 先確認使用者走哪條 route - FE 生命週期常數仍指 legacy
path:
GRC_CLOSE_ROUND/GRC_LAUNCH_AUDIT在api.js仍組成/grc/project/{pid}/ap/{apUid}/close-round(/launch-audit),但這些 path 不在現行routes.json——現行輪次生命週期在/audit-round/{roundUid}/...。AP 變體上呼叫這些常數可能打到死路;動生命週期功能前務必對照routes.json確認實際 endpoint(此為 FR-038 遷移留下的 drift,屬待清理) - living vs 凍結 SSP:
sspUid於 planning 取 living、audit_planning 後取凍結快照(round.ssp_id);同一 control-tree endpoint 兩者皆服務。看到「現況跟規劃頁不同步」多半是一個讀 living 一個讀凍結 - 指標卡 fallback 估算:dashboard 無 task counts 時 FE 退回用樹的 AO 任務數估算,legacy AP 與 round 資料來源不一致時可能誤判完成度(FE 有註記的已知邊界)
- 覆核與完成度分離:控制項可 100% 完成但未「覆核」;覆核鈕需完成度達標 + 覆核角色;純 auditor 不可覆核(判定與覆核分權)
- 狀態值兩套:AP 狀態 enum 與輪次 status enum
不同,頁面映射到同一
AP_STATUS_SEVERITY色階顯示;勿把兩套值混用 - BPMN 驅動狀態:輪次 status 由 workflow 前進,直接改 DB 會脫鉤(見 _overview §5)
- 覆核 / 生命週期 endpoint 用 apUid 或 roundUid:注意
review 走
ap/{apUid}、生命週期走audit-round/{roundUid}——兩種識別碼不可混填 - SSP 現況純文字:
white-space:pre-line顯示,不渲染 markdown / HTML;後端若推格式化內容會破版 - 無輪次空狀態:新專案若第一輪 best-effort 失敗(見
專案建立 §12),
apList為空;選單無可選項時右面板停在空狀態
13. 開發與驗證
- 跑起來:BE
python main_socketio.py(port 8000,log 在log/app.log);FE 在compliance-manager-fe/起 Vite dev server。BE 改 service code 後必須重啟(無 hot reload) - 測試帳號:dev 環境
blsadmin(manual 測試用;密碼見.env/ 部署文件) - 導航路徑:專案列表 → 點專案名稱(→ 輪次清單)→
進某輪 → 總覽;或直接
/project/projects/:id/round/:roundUid - 前置資料:專案需已成立(有 living SSP 與 ≥1 輪次);不同 status 的輪次才能驗動作列各鈕的顯示條件
- E2E:
compliance-manager-test/repo(Cucumber + Playwright);以專案總覽/auditor-overview搜尋 feature 檔 - 相關文件:建立見 專案建立、清單見 專案列表頁、規劃頁 專案規劃頁、輪次狀態機 _overview §2;FR-038(v2
輪次)
docs/features/FR-038-2606-oscal-redesign/;DB / API 全量見 GAI-SD-02/03