# FR-043 稽核計畫 docx 匯入 — 實作收尾 SUMMARY

> Date: 2026-07-02 · Branch `feature/FR-043`（BE + FE，皆**未 push**）· 狀態：修正待驗證（user 已手測通過）

## 1. 一句話

上傳顧問稽核報告 docx → 解析章節預填成行程 → 預覽 / 修改 / 確認 → append 進 AP（走既有
`set_tasks` / `add_ap_party`），本期支援亞航 CMMC L1 v1 格式、架構以 adapter registry 可擴充。

## 2. Commits

### BE（`compliance-manager-be`，18 commits）
| commit | 內容 |
|---|---|
| `d3613fb` | 設計規格 + 前置研究分析 |
| `36386f61` | 執行交接 handoff prompt |
| `bb9e24f` | `ap_docx_parse_jobs` 表 migration（RLS + GRANT cm_app）|
| `d4eb611` | parse job entity/model/mapper/repo/domain service |
| `ee13bfc6` | DI wire parse-job + `upload_file_container` 進 GrcContainer |
| `42130222` | parser adapter registry + 亞航 CMMC L1 v1（TDD）|
| `ce374519` | error codes + gate helper 提 public（auditor/participant 兩版）|
| `4afce6f8` | `ApDocxImportAppService`（parse/preview/confirm，append + party 配對 + participants）|
| `126ed3c8` | route + app service DI wiring |
| `3c5ae596` | **fix** 補 `org_unit_id` 欄位（TenantScopedMixinModel 多租戶需要）|
| `45b129d3` / `5722bfef` | **refactor** 行程改 1..N 清單（`ParsedApTask[]` + `suggested_tasks`）|
| `53911111` / `fd92d197` | **fix** §6 逐子點分流（6.3 拆句進指引、6.1+6.2 進 methodology_text）|
| `eb4b728f` / `afaa82d3` | **fix** title 行程化 + timing 帶開始時間 + orphan 併入 methodology |
| `88a8bf51` / `a163e34c` | **feat** 查核控制項預設全選 |

### FE（`compliance-manager-fe`，4 commits）
| commit | 內容 |
|---|---|
| `22288c7` | ap-authoring 對話框 wizard（三步）|
| `529638d` | **refactor** 預覽改多筆行程卡清單（對齊 BE suggested_tasks）|
| `c854623` | 參考資訊新增稽核方法論區塊（對齊 BE methodology_text）|
| `2f95f34` | **fix** 匯入成功後全量重整 ap-authoring 清單（顯示 loading）|

## 3. 改動範圍

- **BE 新增**：`oscal.ap_docx_parse_jobs` 表 + DDD 資料層（grc 模組）；`app/grc/service/ap_report_parser/`
  （base/registry/亞航 adapter）；`app/grc/service/ap_docx_import_app_service.py`；
  `api/project/routes/ap_docx_import_route.py` + serializer；`GRC_400090/091` error code
- **BE 修改**：`AssessmentPlanAppService`（gate 提 public ×2 + `get_ap_tasks_as_task_items`）；
  grc / root DI container（parse-job + registry + app service + upload_file_container）
- **FE**：`ApDocxImportDialog.vue` + `useApDocxDraft.js` + `ApDocxImportService.js` + api.js；
  `RoundApAuthoringView.vue` 入口 + 重整；i18n

## 4. 行為差異

ap-authoring 頁（audit_planning + manager/auditor + AP 已存在）多「匯入稽核計畫」按鈕。上傳亞航樣本 →
預覽：標題「CMMC 2.0 Level 1內部稽核」/ 日期 `2026-06-02 10:00` / 方法 4 項各帶專屬指引 /
控制項預設全選 / 參考資訊三塊（依據/目的/方法論，附進備註預設勾）/ 稽核人員配對「鈊安資安顧問」→
確認 → 行程 append、參與人員入 parties、受評控制項/受評對象 tab 推導回填。既有手動流程不變。

## 5. 規範文件清單

- ✅ 設計規格 `design.md`（含 §3 五輪實測回饋更新規則）
- ✅ 前置研究 `docs/analysis/2026-07-02-ap-docx-import-oscal-mapping.md`
- ✅ 實作計畫 `implementation-plan.md`
- ✅ changelog `docs/changelog/2026-07-02-feat-fr043-ap-docx-import.md`
- ✅ 本 SUMMARY
- ✅ memory：`feedback_tenant_scoped_table_needs_org_unit_id`、`feedback_date_only_utc_midnight_display_bug`

## 6. 已知 follow-up

- **SQL migration STG / POC / PROD 待套**：`2026-07-02-ap-docx-parse-jobs.sql` +
  `2026-07-02-ap-docx-parse-jobs-add-org-unit-id.sql`（DEV 已套）
- **e2e 測試待補**（compliance-manager-test repo）：上傳→預覽改欄位→確認→行程出現在列表
- **BE + FE 皆未 push**：等 user 明示
- 既有 bug `GRC_DOCX_FILE_TOO_LARGE`（GRC_400006）訊息寫 10MB 與常數 20MB 不符 —— 非本 FR、另記

## 7. 部署 handover

- BE 無 hot reload → 部署重啟；FE 重新 build。
- 完成定義已達：BE pytest 49 綠 + 手動 smoke 通過（user 已驗 title/timing/指引/控制項全選/重整）。
