POA&M 矯正頁(Plan of Action & Milestones)
功能群:稽核執行|階段轉換、AP→AR→POA&M 資料模型、角色基調先讀 功能群總覽
事實基準:2026-07-05 從 FE / BE code 掃出(FR-038 v2 round-based,POA&M 由 AR finalize 生成);API schema 逐條對照
api/project/serializers/audit_round.py與app/grc/service/poam_app_service.py
1. 功能描述
POA&M 矯正頁是稽核輪次 remediation 階段的主工作區:AR finalize 時把 not_met 缺失自動生成 POA&M items,本頁由專案經理管理每項缺失的矯正計畫(remediation / response)與里程碑(milestone),追蹤到全部結案後 close-round。POA&M 內容承接 AR 的 findings / risks / observations(見 _overview §4),本頁只在 remediation 階段可寫。
主要使用者:專案經理(manager)。里程碑可指派給任何使用者執行整改,但編輯 POA&M 結構是 manager 的職責。
角色速覽(完整定義見 _overview §3):
| 角色 | 一句話 |
|---|---|
| manager | 專案經理 — POA&M 矯正計畫與里程碑的管理者、close-round 的擁有者 |
| (里程碑負責人) | 被指派執行整改的使用者(不必是 manager) |
1.1 功能總覽(本頁全部功能)
| # | 功能 | 說明 | 位置 | 詳述 |
|---|---|---|---|---|
| 1 | POA&M 概況統計 | 總項數 / 進行中 / 已結案 / 完成度 % + 進度條 | Header 概況區 | §10 |
| 2 | POA&M 項目清單 | 表格:標題(control_id + 嚴重度點)/ 嚴重度 / 狀態 / 目標日(逾期警示)/ 進度(里程碑 done/total) | 主表格 | §5 |
| 3 | 狀態篩選 | 全部 / 進行中 / 已結案 | 表格工具列 | §5 |
| 4 | 項目明細抽屜 | 點列開右側抽屜(36rem)三 tab:矯正措施 / 缺失脈絡 / 證據 | 右抽屜 | UC-PM-01 |
| 5 | 新增矯正計畫(remediation) | 對某風險新增 response(標題 / 說明) | 矯正措施 tab → dialog | UC-PM-01 |
| 6 | 刪除矯正計畫 | 刪除自建 response(recommendation 型受保護不可刪) | 矯正措施 tab | UC-PM-03 |
| 7 | 新增 / 編輯里程碑 | 標題 / 負責人 / 目標日 / 狀態;狀態點可循環 open→in_progress→done | 矯正措施 tab 里程碑卡 | UC-PM-01 |
| 8 | 刪除里程碑 | 移除單一里程碑 | 里程碑卡 | UC-PM-01 |
| 9 | 缺失脈絡檢視(唯讀) | 缺失描述 + 觀察(方法 / 對象),承接 AR | 缺失脈絡 tab | §5 |
| 10 | 證據檢視(唯讀) | 檔案 / 連結 / 問卷(開預覽) | 證據 tab + EvidencePreviewDialog |
§5 |
| 11 | 完成改善(close-round) | 全部 POA&M item 結案後推進,關閉本輪 | FlowPhaseBanner | UC-PM-02 |
| 12 | 唯讀模式 | 非 remediation 階段整頁唯讀 | 全頁 | §4 |
UC(§2)已展開本頁所有具實質後端邏輯的功能:矯正計畫 + 里程碑管理(5/7/8,UC-PM-01)、刪除矯正計畫含 recommendation 保護(6,UC-PM-03)、完成改善 close-round(11,UC-PM-02)。純顯示 / 唯讀 / 導覽類(1 概況、2 清單、3 篩選、4 抽屜開啟、9 缺失脈絡、10 證據、12 唯讀模式)見 §5 / §10;缺失脈絡 / 證據是承接 AR 的唯讀檢視、於此不重複展開。
2. Use Case
角色速覽(完整定義見 _overview §3):
| 角色 | 一句話 |
|---|---|
| manager | 專案經理 — POA&M 矯正計畫與里程碑的管理者、close-round 的擁有者 |
| (里程碑負責人) | 被指派執行整改的使用者(不必是 manager) |
流程圖視覺慣例:菱形 = 判斷、橘底 = 例外/擋下、紅框 = 錯誤(標 error code)、綠框 = 成功終點、虛線 = 可選路徑。
UC-PM-01 管理矯正計畫與里程碑
| 項目 | 內容 |
|---|---|
| 角色 | manager |
| 前置條件 | 輪次 = remediation;POA&M item 已由 AR finalize 生成 |
| 產出 / 後置條件 | oscal.assessment_remediations(response)/
oscal.poam_milestones 增改刪;item 狀態由里程碑全 done
推導為 closed |
UC-PM-02 完成改善(close-round)
| 項目 | 內容 |
|---|---|
| 角色 | manager |
| 前置條件 | 輪次 = remediation;全部 POA&M item 已結案(所有里程碑 done) |
| 產出 / 後置條件 | 輪次 close(見 _overview §2);未全結案 →
GRC_POAM_NOT_ALL_CLOSED(412) |
UC-PM-03 刪除矯正計畫(recommendation 保護)
| 項目 | 內容 |
|---|---|
| 角色 | manager |
| 前置條件 | 輪次 = remediation;矯正計畫(response)已存在 |
| 產出 / 後置條件 | 自建(lifecycle=planned)response
連其里程碑一併刪除(assessment_remediations /
poam_milestones);稽核建議(lifecycle=recommendation)受保護
→ GRC_POAM_RECOMMENDATION_PROTECTED(409) |
3. 權限矩陣
專案層角色基調見 _overview §3。本頁編輯者是 manager(與 AP/AR 頁的 auditor 不同):
| 操作 | FE 判定 | BE 強制 | BE 檢查位置 |
|---|---|---|---|
| 讀 POA&M items / 明細 | 參與者即可(JWT) | 無額外角色檢查 | poam_app_service.py::list_items /
get_item |
| 矯正計畫 / 里程碑 寫入 | canEdit = roundStatus==='remediation'(RoundPoamView.vue:45) |
_check_manager +
assert_round_phase({remediation}) |
poam_app_service.py(_require_round_poam(writable=True)
:72、_check_manager :91-96) |
| close-round | banner user_can_advance |
_check_role(..., "manager") + 全 item closed |
audit_round_app_service.py::close_round |
本頁 FE / BE 權限對齊良好:兩端都以 remediation 階段 + manager 判定;BE
assert_round_phase硬擋過階段寫入(見 _overview §5 坑 2)。
4. 狀態機與前置條件
輪次狀態機見 專案管理群 _overview §2;本群階段轉換見 _overview §2。本頁相關 gate:
| 條件 | 效果 | 出處 |
|---|---|---|
roundStatus === 'remediation' |
canEdit=true:矯正計畫 / 里程碑可寫 |
RoundPoamView.vue:45 |
| 其餘狀態 | canEdit=false:唯讀 banner + 編輯禁用 |
同上(:391-393) |
| BE 寫入 phase guard | POA&M 寫入一律
assert_round_phase({remediation}),過階段回 412 |
poam_app_service.py:72 |
| POA&M item 狀態 | 不存 DB,讀時由里程碑推導(全 done → closed,否則 open) | poam_app_service.py:196-197 |
| close-round 前置 | 有 item 未結案 → GRC_POAM_NOT_ALL_CLOSED |
poam_app_service.py(all_items_closed
檢查) |
| 目標日警示 | 最早里程碑目標日 ±30 天內 → deadline_warning | poam_app_service.py(_DEADLINE_WARNING_DAYS=30) |
5. UI 設計
版面骨架與區塊職責(左 POA&M 項目表,點列開右明細抽屜三 tab;彩色區塊可點跳對應小節錨點,API 僅標代表性):
實機截圖(STG,亮色模式,2026-07-05,帳號 blsadmin,專案「亞○ CMMC L1 合規」/ auditing 輪次):

項目明細抽屜(矯正措施 tab)、里程碑編輯、缺失脈絡 / 證據 tab 三張截圖從缺:2026-07-05 盤點 STG 全庫,目前無任何存活專案的輪次有 POA&M 項目(
project_audit_rounds.poam_id全為空),暫無真實資料可拍;待有缺失改善資料再補。
狀態呈現:里程碑狀態點三態色(open / in_progress / done),可點循環(canEdit 時);目標日逾期 / 近期加警示樣式;per-操作後重載明細 + 列表(無 socket)。負責人以頭像 + nickname 顯示(BE 層 enrich,見 §11)。
6. API 規格
Envelope:成功 {"code": 1, "data": …}、失敗
{"code": 0, "msg": "…"}。
6.1 總清單(本頁呼叫的全部 endpoint)
| 分類 | Method + Path | 說明 | 完整規格 |
|---|---|---|---|
| 載入 | GET /grc/project/{project_uid} |
專案 + 參與人員 | GAI-SD-02 |
| 載入 | GET /audit-round/{round_uid} |
輪次 status(決定 canEdit) | GAI-SD-02 |
| 載入 | GET /audit-round/{round_uid}/poam-items |
POA&M 項目清單(狀態 / 進度 / deadline 警示) | §6.2 |
| 載入 | GET /audit-round/{round_uid}/poam-item/{item_uid} |
項目明細(風險 / remediations / milestones / 缺失脈絡 / 證據) | §6.2 |
| 矯正計畫 | POST
/audit-round/{round_uid}/ar/risk/{risk_uid}/remediations |
對風險新增 response | §6.3 |
| 矯正計畫 | DELETE
/audit-round/{round_uid}/remediation/{remediation_uid} |
刪 response(recommendation 受保護) | §6.3 |
| 里程碑 | POST
/audit-round/{round_uid}/remediation/{remediation_uid}/milestones |
新增里程碑(per-milestone 負責人) | §6.3 |
| 里程碑 | PUT
/audit-round/{round_uid}/poam-milestone/{milestone_uid} |
更新(狀態循環 / 編輯) | §6.3 |
| 里程碑 | DELETE
/audit-round/{round_uid}/poam-milestone/{milestone_uid} |
刪里程碑 | §6.3 |
| 結案 | POST /audit-round/{round_uid}/close-round |
全 item closed 後關閉本輪(FlowPhaseBanner 觸發) | 見 _overview §2 |
以下 §6.2~6.3 為核心 endpoint 完整規格(欄位逐條對照 serializer / service 組裝碼,出處標在各段末);標 GAI-SD-02 者屬常規 CRUD。
6.2 載入類
[GET] /audit-round/{round_uid}/poam-items
Response data.poam_items[](陣列,每項):
| 欄位 | 型別 | 說明 |
|---|---|---|
| uid | string | 項目識別碼(key 為 uid,非
item_uid;return_response 直吐原始 dict、無
response serializer 改名) |
| title | string | 標題 |
| description | string | 說明 |
| control_id | string | 控制項編號 |
| verdict | string | 恆 not_met(POA&M 項目源於 not_met 判定) |
| status | string | open / closed(推導,全里程碑 done → closed) |
| risk_count | int | 關聯風險數 |
| severity | string | 嚴重度(取關聯風險最高級) |
| target_date | date | 目標完成日 |
| days_remaining | int | 距目標日剩餘天數 |
| deadline_warning | bool | 目標日 ±30 天警示 |
| milestone_count | int | 里程碑總數(key 為 milestone_count,非
milestone_total) |
| milestone_done | int | 已完成里程碑數 |
出處:app/grc/service/poam_app_service.py::list_items(回傳
dict :256-270、狀態推導 :196-197、deadline :200-206)
[GET] /audit-round/{round_uid}/poam-item/{item_uid}
Response data:項目明細,含
risks[](每風險其 remediations[],每
remediation 其
milestones[])、observations[](缺失脈絡)——證據承接
AR、巢狀掛在每筆
observations[].relevant_evidence[],無頂層
evidence[]
key(poam_app_service.py:301-309)。
milestone 物件(已 enrich 負責人):
| 欄位 | 型別 | 說明 |
|---|---|---|
| uid | string | 里程碑識別碼 |
| title | string | 標題 |
| description | string | 說明 |
| status | string | open / in_progress / done |
| task_type | string | milestone / action |
| assignee_user_id | int | 負責人 user_id |
| assignee_user_name | string | 負責人 nickname(enrich) |
| assignee_login_name | string | 負責人 login_name(enrich) |
| assignee_user_uid | string | 負責人 user_uid |
| assignee_org_unit_id | int | 負責單位 id |
| assignee_org_unit_name | string | 負責單位名稱(enrich) |
| target_date | date | 目標完成日 |
| completed_at | datetime | 完成時間 |
出處:poam_app_service.py::get_item(milestone enrich
:237-245、脈絡 :140-158)
6.3 寫入類
[POST] /audit-round/{round_uid}/ar/risk/{risk_uid}/remediations
Request:
{
"title": "string", // 必填
"description": "string", // 必填
"lifecycle": "planned", // 預設 planned
"uuid": "string" // 選填,upsert
}Response:
{
"uid": "string",
"risk_uid": "string",
"title": "string",
"description": "string",
"lifecycle": "string",
"milestone_count": 0
}出處:serializer
CreateRemediationRequest(audit_round.py:190-198)、service
add_remediation
[POST] /audit-round/{round_uid}/remediation/{remediation_uid}/milestones
Request:
| 欄位 | 型別 | 必填 | 說明 |
|---|---|---|---|
| title | string | 是 | 里程碑標題 |
| description | string | 否 | 說明 |
| assignee_user_uid | string | 否 | 負責人 user_uid(FE 傳 uid,BE 轉 user_id) |
| assignee_user_id | int | 否 | 負責人 user_id(內部用) |
| assignee_org_unit_id | int | 否 | 負責單位 |
| target_date | date('%Y-%m-%d') | 否 | 目標完成日 |
Response:enrich 後的 milestone(同 §6.2)。出處:serializer
AddMilestoneRequest(audit_round.py:200-210)、service
add_milestone(assignee 解析 :75-89)
[PUT] /audit-round/{round_uid}/poam-milestone/{milestone_uid}
Request(全欄選填 partial):
| 欄位 | 型別 | 必填 | 說明 |
|---|---|---|---|
| title | string | 否 | 里程碑標題 |
| description | string | 否 | 說明 |
| status | string | 否 | OneOf open / in_progress / done |
| assignee_user_uid | string | 否 | 負責人 user_uid(FE 傳 uid,BE 轉 user_id) |
| assignee_user_id | int | 否 | 負責人 user_id(內部用) |
| assignee_org_unit_id | int | 否 | 負責單位 |
| target_date | date | 否 | 目標完成日 |
狀態循環(狀態點點擊)= 只送
{status}。出處:serializer
UpdateMilestoneRequest(audit_round.py:212-224)、service
update_milestone
DELETE /poam-milestone/{uid}(刪里程碑)、DELETE /remediation/{uid}(刪
response + 其里程碑,recommendation 型回
GRC_POAM_RECOMMENDATION_PROTECTED)同檔。
7. 前端檔案地圖(compliance-manager-fe/)
| 檔案 | 角色 |
|---|---|
src/views/project/RoundPoamView.vue |
主檢視(約 640 行;項目表、明細抽屜三 tab、remediation/milestone CRUD) |
src/config/router/index.js:830-835 |
route project-poam-round(path
/round/:roundUid/poam) |
src/components/grc/FlowPhaseBanner.vue |
remediation 階段推進(close-round) |
src/components/grc/EvidencePreviewDialog.vue |
證據預覽(檔案 / 連結 / 問卷) |
src/service/BaseService.js |
axios 封裝(POA&M endpoint 直接呼叫) |
src/config/api/api.js |
端點常數(AUDIT_ROUND) |
src/config/locales/i18n/{zh-tw,en}/round-audit-poam.json |
頁面 i18n(namespace lang.round_poam.*) |
8. 後端檔案地圖(本頁核心鏈路)
| 鏈路 | Route | App Service | 底層 |
|---|---|---|---|
| 項目清單 / 明細 | api/project/routes/audit_round_route.py::AuditRoundPoamItemsRoute
/ AuditRoundPoamItemRoute |
app/grc/service/poam_app_service.py::list_items /
get_item(狀態推導 + deadline + milestone enrich) |
jedi_oscal_v2 poam repo(PoamItemRepoImpl /
PoamMilestoneRepoImpl) |
| 矯正計畫 | 同檔 RiskRemediationsRoute /
PoamRemediationRoute |
add_remediation /
delete_remediation(_check_manager +
assert_round_phase({remediation});recommendation
保護) |
assessment_remediations repo |
| 里程碑 | 同檔 RemediationMilestonesRoute /
PoamMilestoneRoute |
add_milestone / update_milestone /
delete_milestone(assignee uid→id 解析 + enrich) |
poam_milestones repo |
| close-round | 同檔(audit round lifecycle route) | app/grc/service/audit_round_app_service.py::close_round(_check_role manager
+ all_items_closed) |
project_audit_rounds |
DDD 提醒:POA&M 寫入 API 照層級走(route 不碰
DB、app service @transaction、_check_manager +
assert_round_phase 雙檢查)——與 AP/AR 頁一致的 phase-guard
樣板。負責人 nickname / org_unit name 在 app service 層 enrich(不存
DB、不在 infra JOIN,符合 CLAUDE.md 審計欄規範)。
9. DB
9.1 資料表總清單(本頁讀寫的全部表)
| 表 | 讀/寫 | 說明 | 欄位詳述 |
|---|---|---|---|
| compliance.project_audit_rounds | 讀/寫(close-round 改 status) | 稽核輪次主檔(poam_id 指向本輪 POA&M) |
見 project-planning §9.3 |
| oscal.poams | 讀 | POA&M 文件 root(AR finalize 生成) | §9.3 |
| oscal.poam_items | 讀 | 矯正項目(一 not_met 控制項一 item) | §9.3 |
| oscal.assessment_findings | 讀 | POA&M owner findings(poam_id) |
見 audit-review §9.3 |
| oscal.assessment_risks | 讀 | POA&M owner risks(poam_id) |
見 audit-review §9.3 |
| oscal.assessment_observations | 讀 | 缺失脈絡(觀察) | 見 audit-review §9.3 |
| oscal.assessment_remediations | 寫 | 矯正計畫(response,milestone 父層) | §9.3 |
| oscal.poam_milestones | 寫 | 里程碑(per-milestone 負責人 / 目標日 / 狀態) | §9.3 |
9.2 ER 圖(本頁讀寫範圍)
9.3 核心表欄位(取自 DEV DB dump,含 DB comment)
oscal.poams — POA&M 文件 root
追蹤評估後待矯正的缺失;內容多由 AR 的不符合 findings 轉入。required=[uuid, metadata, poam-items];import-ssp 選填。
| 欄位 | 型別 | 說明 |
|---|---|---|
| uuid | uuid | POA&M 文件識別碼 |
| metadata_id | bigint | → oscal.metadata |
| import_ssp_id | bigint|null | 選填,指向系統 SSP |
| local_definitions | jsonb | components / inventory-items / assessment-assets |
oscal.poam_items — 矯正項目
plan-of-action-and-milestones.poam-items[]。required=[description,
title](uuid 選填)。
| 欄位 | 型別 | 說明 |
|---|---|---|
| poam_id | bigint | containment → poams |
| title / description | text | 標題 / 內容 |
| related_findings / related_risks / related_observations | jsonb | 關聯(finding-uuid 等) |
oscal.assessment_remediations — 矯正計畫(response)
risk.remediations[](response)關聯化:milestone 掛在
response 下(OSCAL-faithful),非直接掛 risk。CMMC
多為一風險一整改計畫。
| 欄位 | 型別 | 說明 |
|---|---|---|
| risk_id | bigint | → oscal.assessment_risks |
| uuid | uuid | response 身分 |
| lifecycle | varchar(20) | recommendation(稽核建議,受保護)/
planned(已排定)/
completed(設計預留,目前查無實際寫入路徑) |
| title / description | text | 標題 / 內容 |
oscal.poam_milestones — 里程碑
response.tasks[](type=milestone)。掛在
remediation(response) 下。per-milestone assignee
支援跨部門整改拆分。
| 欄位 | 型別 | 說明 |
|---|---|---|
| remediation_id | bigint | → oscal.assessment_remediations |
| uuid | uuid | task 身分 |
| task_type | varchar(20) | milestone(預設)/ action |
| title / description | text | 標題 / 說明 |
| assignee_user_id | bigint|null | 負責人(回傳層 enrich nickname / login_name,不存 DB) |
| assignee_org_unit_id | bigint|null | 負責單位(回傳層 enrich name) |
| target_date | date | 預計完成日(CMMC 180 天追蹤點) |
| status | varchar(20) | open / in_progress / done(item 結案需全 done) |
| completed_at | timestamptz|null | 完成時間 |
10. 頁面邏輯與資料對應
載入時序:
關鍵欄位對應(畫面 ↔︎ API):
| 畫面元素 | FE state | API 欄位 |
|---|---|---|
| 概況統計 | 計算自 items | {status, milestone_done, milestone_total} 聚合 |
| 項目表狀態 tag | item.status(推導) |
poam-items status(全里程碑 done → closed) |
| 目標日警示 | item.deadline_warning |
poam-items deadline_warning(±30 天) |
| 里程碑狀態點 | ms.status |
PUT poam-milestone status(循環) |
| 負責人 | ms.assignee_user_name |
milestone enrich assignee_user_name(nickname) |
儲存流程:各寫入後重載明細(loadDetail)+
列表(fetchItems)以刷新推導狀態;狀態點循環 = 單一
PUT {status}。close-round 由 FlowPhaseBanner 觸發(先 BE
檢查全 item closed)。
錯誤對應:BE error envelope → toast;常見碼
GRC_NOT_MANAGER(403)、GRC_ROUND_PHASE_READONLY(412,過階段)、GRC_POAM_NOT_ALL_CLOSED(412,close
前置)、GRC_POAM_RECOMMENDATION_PROTECTED(409,刪稽核建議)、GRC_PROJECT_PARTICIPANT_NOT_FOUND(404,指派非參與者)。
11. 背景行為與外部依賴
| 類型 | 內容 |
|---|---|
| 通知 | 本頁無站內通知(里程碑指派通知屬 follow-up,未實作即不寫) |
| 審計欄 enrich | milestone 負責人 nickname / login_name / org_unit name 在 app service 層批次 enrich(不存 DB、不在 infra JOIN,符合 CLAUDE.md 審計欄規範) |
| BPMN | close-round = remediation 階段推進;all_items_closed
為前置;handler 副作用同 transaction |
| Socket | 本頁無 socket / 輪詢;各動作後重載 |
| jedi-* 套件 | jedi-oscal-v2(POA&M / remediation / milestone
repo)、jedi-flow-engine(close-round)、jedi-auth(JWT) |
| 系統參數 | deadline 警示門檻
_DEADLINE_WARNING_DAYS=30(硬編碼常數) |
12. 邊界情況與已知坑
- POA&M item 狀態不存 DB、讀時推導:全里程碑 done → item closed,否則 open;改最後一個里程碑成 done 會讓 item 自動結案(無「結案 item」單獨動作)
- recommendation-lifecycle response 受保護:稽核員在
AR 階段建的矯正建議(lifecycle=recommendation)不可在 POA&M 刪,回
GRC_POAM_RECOMMENDATION_PROTECTED;只有自建(planned)可刪 - phase guard BE 硬擋:POA&M 寫入只在 remediation,過階段直接打 API 也回 412(見 _overview §5 坑 2)
- close-round 前置全 item closed:任一 item open 即
GRC_POAM_NOT_ALL_CLOSED;close-round 由 banner 觸發、非本頁按鈕 - assignee 傳 uid 不傳 id:FE 送
assignee_user_uid,BE 轉user_id(非參與者 →GRC_PROJECT_PARTICIPANT_NOT_FOUND);回傳 enrich nickname - 里程碑父層是 remediation 不是 risk:OSCAL-faithful,加里程碑要先有 response;CMMC 常一風險一 response,UI 建風險時可帶預設 response
- 證據 / 缺失脈絡承接 AR:POA&M 的 observations / findings owner = poam_id,內容源自 AR finalize 轉入;本頁唯讀不改
- date-only 目標日顯示:target_date 為 date 型(無時間),顯示留意時區慣例(見 專案管理群 _overview)
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 環境專案經理角色帳號(密碼見
.env/ 部署文件) - 導航路徑:登入 → 專案 → 進入 remediation 狀態的輪次 → POA&M 矯正
- 前置資料:輪次需已 AR finalize 且有 not_met 缺失(才會生成 POA&M items);沒有 not_met 則輪次直接 closed、不進本頁
- E2E:
compliance-manager-test/repo(Cucumber + Playwright);以POA&M/poam/矯正搜尋 - 相關文件:FR-038(v2 遷移,POA&M 生成);前置稽核判定見 稽核執行頁 / AR 判定;DB / API 全量見 GAI-SD-02/03