# FR-038 — 全 FE 逐功能套用比對表（重新規劃地基）

> 前提（2026-06-16 user 拍板）：**BE 維持 FR-038 v2，FE 以 06-08 乾淨基準逐項套上去**。FE 無退版（本就停在 06-08）。
> 方法：把 FE 實際呼叫的端點（`src/config/api/api.js`）對照 BE 已註冊路由（`api.oscal/module_frame/project/grc` 的 create_module dump）。
> **信心欄誠實標示**：`確認`=URL 對照 + 我做過 service smoke；`待實測`=URL 在但 v2 backing / runtime / shape 未對真實 FE 驗過。URL 是否存在屬客觀比對；「能用」一律需重啟 BE 後對真實 FE 實測才算數。

## 圖例
- ✅ 能用（URL 在 + 接 v2）｜🔧 需改（URL 變/shape 變/重構）｜🆕 新建｜🟥 壞/dark｜❓ 待釐清

---

## 1. 合規框架 Framework — ✅ 2026-06-16 FE 實點驗過,整塊沒問題

> 框架管理 / 版本管理 / 兩階段 PDF 匯入 / catalog 編輯 全部 **FE 實點通過**（含另一 session 06-16 的 AO 讀 `name` 對齊修補）。視為完成。

| FE 區塊 | FE 端點 | BE 現況 | 評估 | 信心 |
|---------|---------|---------|------|------|
| 框架管理 | `/oscal-frameworks`、`/oscal-framework[/<uid>]`、`/oscal-frameworks/menu` | 已接 v2、註冊在**舊 URL** | ✅ 能用 | 確認(FE 實點) |
| 版本管理 | `/oscal-framework-versions`、`/oscal-framework-version[/<uid>]` | 已接 v2、舊 URL | ✅ 能用 | 確認(FE 實點) |
| 版本匯入(兩階段) | `/oscal-framework-parse-jobs[/parse|/<uid>|/confirm]` | 已接 v2、舊 URL | ✅ 能用 | 確認(FE 實點) |
| catalog 編輯 | `/oscal-catalog-group|control|control-assessment/<uid>` | 已接 v2、舊 URL | ✅ 能用 | 確認(FE 實點) |

## 2. 合規資源庫 Module Frame（資源庫範本）

> **2026-06-16 進度**：核心 SoA（列表/新增/詳情樹/控制項+AO 編輯/AO BPMN/編輯適用控制項/程序書掛載/template-ssp）已接 v2 並多數 curl 驗過 —— 細節見 [`handoff/2026-06-16-resource-library-soa-v2-PROGRESS.md`](handoff/2026-06-16-resource-library-soa-v2-PROGRESS.md)。**批次匯入匯出仍 pending**（缺 parse-job 表 migration + 2 service v2 重寫）。改動全 UNCOMMITTED。

| FE 區塊 | FE 端點 | BE 現況 | 評估 | 信心 |
|---------|---------|---------|------|------|
| 列表 / 新增 / 詳情 | `/module-frames`、`/module-frame[/<uid>]` → **改打 `/oscal/resource-libraries*`** | ✅ 接 v2（clone 三件組 + control_id 對映）| ✅ 能用 | 確認(curl) |
| SSP 子表 | `/module-frame/<uid>/{components,inventory,leveraged,parties,system-characteristic,ssp-resources}` | B3 接 v2、舊 URL | ✅ 能用 | 待實測 |
| 適用控制項 SoA（control/AO 編輯）| `/module-frame/<uid>/{control-defaults,objective-defaults}` + template-ssp | ✅ **重寫走 v2 ssp_service**（IR/statement props）| ✅ 能用 | 確認(curl)/部分待 FE 實點 |
| AO 初始化 BPMN | create 時每 AO 生基礎 BPMN | ✅ 接 v2 | ✅ 能用 | 確認(curl) |
| 程序書掛載 control/AO | `/module-frame/<uid>/.../reference-documents` | ✅ mapping context 改 v2 IR/statement | ✅ 能用 | 確認(FE 實點) |
| 範本匯入匯出（批次維護）| `control-defaults/{export,import,template,validate,verify}`、`ssp-export`、docx/excel import | 🟥 **DI 炸 + parse-job 表不存在** | ❌ pending（獨立大工）| 確認(壞) |

## 3. SSP 維護（控制實作 / 程序書）
| FE 區塊 | FE 端點 | BE 現況 | 評估 | 信心 |
|---------|---------|---------|------|------|
| 控制實作 SoA | `/ssp/<uid>/control-implementation[s][/<cid>]`、`/objective/...` | B3 接 v2、舊 URL | ✅ 能用 | 待實測 |
| 程序書 / mapping | `/ssp/<uid>/document-pool`、`.../document-mappings`、reference-documents | B3 接 v2 | ✅ 能用 | 待實測 |
| SSP 匯入匯出 | `/ssp/<uid>/control-implementations/{export,import}`、`/ssp/<uid>/export` | 接 v2 | ✅ 能用 | 待實測 |

## 4. 專案 + 稽核生命週期（最大破口 / 雙軌）
| FE 區塊（畫面）| FE 端點（舊）| BE 現況 | 評估 | 信心 |
|---------|---------|---------|------|------|
| 專案列表/總覽 | `/grc/projects/list`、`/grc/project[/<uid>]`、`/grc/dashboard/summary` | `/grc/*` 舊路由註冊著 | ❓ 能列但 round/ap 上下文已換引擎 | 待實測 |
| **AP 清單** | `/grc/project/<uid>/assessment-plans/menu`、`/ap/<uid>`、`/launch-new-round` | 舊路由在；新引擎是 `/projects/<id>/audit-rounds` | 🔧 改成 Audit Round 列表（接新引擎）| 確認(設計) |
| **AP 維護** | （無）| 新引擎 `/ap/<uid>/reviewed-controls\|subjects\|tasks` | 🆕 新建 | 確認 |
| **AR 維護** | `/grc/project/<uid>/ap/<uid>/ar/control[s]...verdict/findings` | 舊：控制項層、依賴**已退役表** `assessment_plan_controls/tasks`；新引擎 `/audit-round/<id>/ar/findings`(AO 層)+risk | 🔧 重構(AO 層 + risk) + 舊路由恐 🟥 | 確認(設計)/待實測(舊壞) |
| **POA&M** | `/grc/project/<uid>/ap/<uid>/poam[s]` | 舊扁平；新引擎 `/audit-round/<id>/poam-items`+三層 | 🔧 重構(三層) | 確認(設計) |
| Stage banner | `STAGE_API` `/project/<uid>/ap/<uid>/stage/{info,advance}` | flow-engine stage | ❓ 新引擎改用 round.status 七態 | 待實測 |

## 5. My Jobs / Task Setup（保留，但曾壞）
| FE 區塊 | FE 端點 | BE 現況 | 評估 | 信心 |
|---------|---------|---------|------|------|
| My Jobs | `/grc/jobs/my/list`、`/grc/jobs/my/projects/menu`、`/flow-engine/task/queue` | My Jobs view 接 v2 資料；`/flow-engine/task/queue` **曾壞、已被止血 commit(`742ba3f3`)回空陣列** | 🔧 已止血、需驗真資料 | 待實測 |
| Task Setup | `/grc/project/<uid>/task-setup/tree` + job 指派 | 依賴 AP task 結構 | ❓ 恐受退役表影響 | 待實測 |
| My Audits | `/grc/audits/my/list` | 註冊著 | ❓ | 待實測 |

---

## 重新套用建議順序（低風險 → 高）

1. **先實測「應該能用」的綠區**（重啟 BE，對真實 FE 逐頁點）：框架(§1)、SSP 維護(§3)。確認我的 framework維護 + B3 是否真的 FE 零改可用。→ 這步把「確認 vs 待實測」翻成事實。
2. **資源庫(§2)**：釐清「舊 module-frame 建立模型 vs 新 clone」是否並存可用；control-defaults 半殘要不要修或改走「編範本 SSP」。
3. **My Jobs / Task Setup(§5)**：驗止血後是否真的回得了資料。
4. **專案/稽核(§4)**：最大塊，照 [audit-round-fe-migration-plan.md](audit-round-fe-migration-plan.md) 重構（① 輪次列表 → ② AP 維護新建 → ③ AR 維護 AO+risk → ④ POA&M 三層），並把舊 `/grc/project/ap` 雙軌退場。

## 下一步（建議）
照「綠區先實測」開始 —— 我重啟 BE 後不能做（服務你起），但你重啟後我可以陪你逐頁對、把每列的「待實測」翻成「能用/壞」，再據此精修這張表 + 排套用順序。
