FR-011.2 · 需求索引 · 本頁由 build 掃資料夾生成
跨多 phase task arc,含 BE / FE / jedi-oscal / test 多 repo 起始日期:2026-05-18 主要驅動需求:raymond 狀態:A0 brainstorm 收斂完成,準備寫 A0 design
讓「合規資源庫」與「專案 SSP 版本」雙向支援:
詳細需求:
⚠️ 規範:每完成一階段請更新此表的狀態欄與對應連結欄;ship 後加 commit hash
| Phase | 主題 | 級別 | 狀態 | brainstorm | design | plan | ship commit | changelog |
|---|---|---|---|---|---|---|---|---|
| A0 | 既有表擴充(system_security_plan_system_implementations) |
重 | shipped ✅ | ✅ requirement-understanding §2 | ✅ design.md | ✅ implementation-plan-A0.md | BE: c4804d7 / a1b80cc / e73b1aa ; jedi-oscal: afe7035→dbb3d7c | ✅ 2026-05-18-tweak-ssp-system-impl-extension.md |
| A0.1 | 結構重整補丁:rename items + 新 main + 新 join + column rename(補丁 of A0) | 重 | shipped ✅ | ✅ requirement-understanding §2 v5 | ✅ design-A0.1.md | ✅ implementation-plan-A0.1.md | BE: eb9fa7e / 6deacef* ; jedi-oscal: 762d8fc / cc65e3b / c0fcae9 / d2178c1 / 8e3e58b / 4666091 | ✅ 2026-05-19-tweak-ssp-system-impl-restructure.md + 2026-05-19-fix-ssp-impl-item-device-id.md |
| A1 | Excel 樣板設計 + 下載 | 中 | BE+FE shipped ✅ (T0-T6 完成 + UX polish 3 輪;T7 cucumber E2E pending) | — | ✅ design-A1.md (v1.2 加 §3.3/§6.2.1/§15.1-15.3) | ✅ implementation-plan-A1.md | BE: b18db55→2b1e93c (16 commits) ; FE: e0ff8f1+00b6662 | ✅ 5 個 changelog (1 base + 1 BE-FW endpoint + 3 UX polish + 1 FE) + issue/pending/2026-05-19-person-role-cross-domain-inconsistency.md |
| A2 | Excel Parser + 解析 API | 中 | BE shipped ✅ (T0~T6 完成;T7 BE smoke / T8 cucumber pending) | — | ✅ design-A2.md (含 §15.1-15.3 reconciliation) | ✅ implementation-plan-A2.md | BE: f7b44ff → 43cc206 (7 commits) | ✅ 3 個 changelog (feat-ssp-excel-import + tweak-template-v1.2.0 + fix-fw-version-scoped-controls) |
| A3 | 共用 matcher 抽取(parties / org-units) | 重 | BE shipped ✅ (5 session A→E 完成;T6 cucumber partial — env 配齊後跑) | ✅ Session A 完成(Q1~Q6 + Q3'/Q4' 8 題拍板) | ✅ design-A3.md (8e61def + 6e0f103;2-round spec review approved) | ✅ implementation-plan-A3.md | BE: b011f2f + 82f0dc8 + 854b238 + 773e108 + 761fd7c ; test: 27e52fe (compliance-manager-test/feature/a3-ssp-party-match-regression) | ✅ 2026-05-20-feat-party-matcher-shared.md |
| A4 | devices / info_systems / leveraged / 控制項 / AO 鉤稽 | 重 | BE shipped ✅ (Session A→F 完成;T9 ✅ / T10 follow-up F-A4-cucumber / T11 收尾 ✅) | ✅ Session A 完成(D1~D8 + 13 sub-question 拍板) | ✅ design-A4.md (1de5f51;§11.1 含 Session C/D/E 共 16 條偏差紀錄) | ✅ implementation-plan-A4.md (57bcb2e;3466 行 / 11 task / 4 session) | BE: 57a9567 + 72ef229 + 7c2b860 + 8936aab + 9d7c102 + 40c4a12 + 579eb76 + 78118eb + 81073ef + 600f50a (T1-T9 + Session E 收尾 docs 共 10 commits) | ✅ 2026-05-20-feat-ssp-excel-import-phase2-a4-write-pipeline.md + 2026-05-20-tweak-a4-boundary-and-integration-tests.md |
| A5 | 預覽 UI + Confirm 寫入 | 中 | BE+FE shipped ✅ + bugfix x3 (Session A→C 完成 + smoke 後 3 輪 bugfix;update flow 覆蓋語義 + parties cache + locale fix 已修) | — | ✅ design-A5.md (5d979bf + FE 偏差更新;§10.1 含 6 條 T0 偏差 / §10.2.1 decision propagation 已知限制 / §10.3 含 5 條 FE 偏差 / §10.4 跨 session 總覽) | ✅ implementation-plan-A5.md (5d979bf) | BE: 535b931 + 5852cca + 56edd30 + 7ed9363 + 6f926e0 + c61ef02 (T1+T2/T6+T3+T4+T7+T14 共 6 commits)。FE: c95d02a + 24622ee + 2412e74 + 0cf3058 + 332b393 (T9 service+store+router / T10 page shell / T11 sheet preview / T12 RowActionMenu / T13 confirm Dialog 共 5 commits) + bugfix s1: 5aac0d5 / bugfix s2: 5adb550 / bugfix s1: 5aac0d5 / bugfix s2: 5adb550 / bugfix s3 BE: 9b14200 + FE: bd92e2e | BE: 2026-05-21-feat-ssp-excel-import-phase2-a5-be.md。FE: 2026-05-21_a5-import-excel-preview-ui.md (FE repo docs/changelog/ssp-import-export-phase2/) + fix: 2026-05-21-fix-ssp-excel-import-overwrite-mode.md |
| Phase | 主題 | 級別 | 狀態 | brainstorm | design | plan | ship commit | changelog |
|---|---|---|---|---|---|---|---|---|
| B1 | Docx 樣板 + generator 骨架 | 中 | BE shipped ✅ | — | — | — | — | ✅ 2026-05-22-feat-ssp-docx-export-b1-generator-skeleton.md |
| B2 | 內容組裝(MF + SSP version 兩來源) | 中 | BE shipped ✅ | — | — | — | — | ✅ 2026-05-22-feat-ssp-export-b2-b3-b4-content-loader-api-converter.md |
| B3 | Docx Export API | 輕 | BE shipped ✅ | — | — | — | — | ✅ 同 B2 changelog |
| B4 | PDF + ODT 補上 | 輕 | BE shipped ✅ | — | — | — | BE: 062782d | ✅ 同 B2 changelog |
| B5 | OSCAL JSON / XML / YAML 匯出 | 重 | BE shipped ✅ | — | — | — | BE: 25909f2 | ✅ 2026-05-22-feat-ssp-export-b5-oscal-json-yaml-xml.md |
| B6 | 前端 UI + 格式選擇 + DOCX 格式升級 | 輕 | BE+FE shipped ✅ | — | — | docs/features/FR-011.2-2605-ssp-import-export-phase2/implementation-plan-docx-template-rebuild.md | BE: 8df2525 (template) / 8ee55f5 (LibreOffice) / 43a9389 (unicode filename) ; FE: 7231b6a (export button) / c21372c (unicode filename) | ✅ 2026-05-22-feat-ssp-export-b6-fe-export-button.md + 2026-05-22-feat-ssp-docx-template-rebuild.md + 2026-05-22-fix-ssp-export-libreoffice-binary-detect.md + 2026-05-22-fix-ssp-export-unicode-filename.md |
Track A + B 測試後發現的架構問題;同 branch 繼續,獨立 tracker 在
docs/features/FR-011.3-2605-ssp-edit-in-project/README.md
| 主題 | 涵蓋範圍 |
|---|---|
| C1:OSCAL SSP 角色 master data 化 | system_menus seed 9 個 OSCAL 角色 + FE i18n |
| C2:SSP-scoped endpoints 補齊 | 補 6 個 /ssp/<uid>/... endpoint(parties / resources / characteristic / leveraged / excel-import) |
| C3(重):受評範圍遷移到 SSP | 廢 project_device_mapping / project_information_systems,全面 derive from SSP |
| C4:專案 CRUD 改造 | 拿掉 audit_systems / devices 欄位 |
| C5:專案規劃頁加 SSP tab | UI lazy load 設計 |
| C6:移除專案設定 UI 受評範圍 section | FE 表單調整 |
| C7:06_外部利用恢復(可選) | ALL_SHEETS 加回 + parser 改回 |
C8:_ROLE_LABEL_MAP 清理 |
移除 manager/auditor/viewer,修 system-security-officer 對應 |
完整分析:ssp-edit-in-project/analysis.md
| 級別 | 標準 | 流程 |
|---|---|---|
| 重型 | 跨層 refactor / 架構選型 / OSCAL spec 細節 | 完整 brainstorm → design → plan |
| 中型 | 新 service / endpoint 但模式已知 | design 段落 + plan,不獨立 brainstorm |
| 輕型 | UI 對齊既有 pattern / 單純 CRUD | 直接 plan + 實作 |
重型 phase 預判:A0 / A3 / A4 / B5 共 4 個 — 才需要單獨 brainstorm 收斂。
┌── A1 ── A2 ── A3 ── A4 ── A5 (Excel 匯入完成)
│
A0 ───────────┤
(基礎建設) │
│ B1 ── B2 ──┬── B3 ── B4 ──┐
└──────────────┤ ├── B6 (SSP 匯出完成)
└── B5 ────────┘
不新建 OSCAL mirror 三表(v3 誤判),改擴充既有 system_security_plan_system_implementations 表:
implementation_type enum 已支援多型project_device_mapping_service + ssp_versioning_service 正在寫入詳見 requirement-understanding.md §2。
| Repo | 路徑 | 本期範圍 |
|---|---|---|
| compliance-manager-be(主) | ~/Projects/Billows/Audit-Manager/compliance-manager-be/ |
Schema migration / app service / api route / SQL |
| jedi-oscal(套件) | ~/Projects/Jedicogy/module/jedi-python-package/jedi-oscal/ |
ORM model 擴充 / repo / mapper / DTO / enum / OSCAL serialize |
| compliance-manager-fe | ~/Projects/Billows/Audit-Manager/compliance-manager-fe/ |
Excel 匯入預覽頁 + SSP 匯出 UI + 樣板下拉 |
| compliance-manager-test | ~/Projects/Billows/Audit-Manager/compliance-manager-test/ |
BDD scenario for Excel 匯入 / SSP 匯出 |
docs/changelog/)依 CLAUDE.md 規範✅ shipped (commit, date) 標記2026-05-18 — A0 shipped ✅
c4804d7afe7035 → dbb3d7c)a1b80cce73b1aa60a4a2edocs/changelog/2026-05-18-tweak-ssp-system-impl-extension.mddocs/analysis/2026-05-18-ssp-system-impl-extend-vs-new-tables.mddocs/conversation-history/2026-05-18/ssp-import-export-phase2/SUMMARY.md2026-05-19 — A0.1 shipped ✅
eb9fa7e762d8fc → cc65e3b → c0fcae9 → d2178c1 → 8e3e58b → 4666091scripts/sql/2026-05-19-ssp-system-implementation-restructure.sqldocs/features/FR-011.2-2605-ssp-import-export-phase2/design-A0.1.md(含 §11 reconciliation)docs/features/FR-011.2-2605-ssp-import-export-phase2/implementation-plan-A0.1.mddocs/analysis/2026-05-19-ssp-system-impl-restructure-rationale.mddocs/changelog/2026-05-19-tweak-ssp-system-impl-restructure.mddocs/conversation-history/2026-05-19/ssp-import-export-phase2-A0.1/SUMMARY.mdA0.1 已 ship 變動:
system_security_plan_system_implementations rename → ssp_system_implementation_itemsssp_system_implementations(main, 1:1 per scope, UNIQUE on scope)ssp_inventory_item_components(M:N join, UNIQUE on inventory_item+component)information_system_id → system_characteristic_id(鉤稽路徑統一走 SSP 內 characteristic 中介)system_implementation_id NOT NULL FK 指向 main + relationshipSsp*Item* + 新建 main / join 完整 DDD stack(共 24 個檔)project_device_mapping_service / ssp_versioning_service) 改寫支援 main upsert flow已知 follow-up(不阻 A0.1 ship):
A0.1 e2e 驗證 follow-up(同日 ship):
6deacef fix(associations): ProjectDeviceMappingService 寫 SSP item 補填 device_id soft FK + backfill SQL 對 135 筆既有資料補回(10 筆 unmatchable 保留 NULL)下一步:A1(Excel 樣板)或 B1(Docx 樣板)— 兩條可平行。
2026-05-19 — A1 BE partial shipped ⏳(5/7 task)
feature/ssp-import-export-phase2 branch:
b18db55 docs(ssp-import-export-phase2): A1 phase docs — design + implementation planf59c4ff docs(ssp-import-export-phase2): A1 T0 verify 結果回填 design.md (4 處)d9d54c2 feat(ssp-import-template): A1 T1 skeleton — route + app service + DI 接通f68525f feat(ssp-import-template): A1 T2 generator base — sheet defs + styles + lookup + DV helpersffd5d63 feat(ssp-import-template): A1 T3 blank mode — generator 主邏輯 + lookup wiring + 30 testsf14a942 docs(ssp-import-export-phase2): A1 partial summary — T0-T3 收口 + 換 session 交接c3de9fa feat(ssp-import-template): A1 T4 filled mode 非控制項 sheet — 6 領域預填 + DI + 12 tests419907d feat(ssp-import-template): A1 T5 07_控制項與AO sheet — profile-scoped 父子 row + MF defaults 預填 + 6 testsdocs/features/FR-011.2-2605-ssp-import-export-phase2/design-A1.md(含 §14 SemVer SOP)docs/features/FR-011.2-2605-ssp-import-export-phase2/implementation-plan-A1.mddocs/changelog/2026-05-19-feat-mf-ssp-import-template-download.mddocs/conversation-history/2026-05-19/ssp-import-export-phase2-A1/SUMMARY.md(T0-T3)— T4/T5/T7 handoff 待補v1.0.0(A2 parser 讀此版本作為相容性 anchor)A1 已 ship 範圍(T0-T6 完成 + 3 輪 UX polish):
BE:
GET /api/1.0/module-frame/<uid>/ssp-import-template?mode=blank|filled&locale=...(MF-scoped)GET /api/1.0/ssp-import-template?framework_version_uid=<uid>&mode=blank(T6 新增 FW-version-scoped,supersetcontrols 走 catalog 全 controls,供 S1 訪談前下載)v1.1.0UX polish(3 輪):
ParticipantRole(manager/reviewer/auditor/viewer)+ requiredFE:
測試:BE 106 unit test 全綠(81 base + 11 T6 endpoint + 14 polish + 4 修改 = 106)
A1 未完項(partial ship 原因):
下一步:A1 收尾(T6 FE + T7 完整 E2E)或先推 B1(Docx 樣板)。
以下全部由 build 掃資料夾產生,新增檔案重 build 即自動出現。標題連結指向渲染後的 HTML,md 連向源檔。
| 文件 | 類型 | 標題 | 最後更新 |
|---|---|---|---|
| raw-requirement / md | 原始需求 | SSP 匯入匯出階段2 | 2026-05-29 |
| requirement-understanding / md | 原始需求 | SSP 匯入匯出 Phase 2 — 需求理解整理版 | 2026-05-29 |
| 文件 | 類型 | 標題 | 最後更新 |
|---|---|---|---|
| design-A0.1 / md | 設計 | Phase A0.1 Design — SSP system-implementation 結構重整(補丁) | 2026-05-29 |
| design-A1 / md | 設計 | Phase A1 Design — Excel 樣板設計 + 下載 | 2026-05-29 |
| design-A2 / md | 設計 | Phase A2 Design — Excel Parser + 解析 API | 2026-05-29 |
| design-A3 / md | 設計 | Phase A3 Design — 共用 matcher 抽取(parties / org-units) | 2026-05-29 |
| design-A4 / md | 設計 | Phase A4 Design — devices / info_systems / leveraged / 控制項 / AO 鉤稽 + 寫入 | 2026-05-29 |
| design-A5 / md | 設計 | Phase A5 Design — 預覽 UI + Confirm 寫入(含 inline 新建) | 2026-05-29 |
| design / md | 設計 | Phase A0 Design — 既有 system_security_plan_system_implementations 表擴充 |
2026-05-29 |
| 文件 | 類型 | 標題 | 最後更新 |
|---|---|---|---|
| implementation-plan-A0.1 / md | 實作計畫 | Phase A0.1 Implementation Plan — SSP system-implementation 結構重整補丁 | 2026-05-29 |
| implementation-plan-A0 / md | 實作計畫 | Phase A0 Implementation Plan — 既有 system_security_plan_system_implementations 表擴充 |
2026-05-29 |
| implementation-plan-A1 / md | 實作計畫 | Phase A1 Implementation Plan — Excel 樣板設計 + 下載 | 2026-05-29 |
| implementation-plan-A2 / md | 實作計畫 | Phase A2 Implementation Plan — Excel Parser + 解析 API | 2026-05-29 |
| implementation-plan-A3 / md | 實作計畫 | Phase A3 Implementation Plan — 共用 matcher 抽取(parties / org-units) | 2026-05-29 |
| implementation-plan-A4 / md | 實作計畫 | Phase A4 Implementation Plan — 5 entity 鉤稽 + 寫入 + SSP shell + A3 retroactive | 2026-05-29 |
| implementation-plan-A5 / md | 實作計畫 | Phase A5 Implementation Plan — 預覽 UI + Confirm 寫入 | 2026-05-29 |
| implementation-plan-docx-template-rebuild / md | 實作計畫 | SSP DOCX Template Rebuild Implementation Plan | 2026-05-29 |
由新到舊。每份是某一棒次交接當下的完整現況快照,看某個時間點「當時知道什麼」請從這裡進。
| 日期 | 文件 | 標題 |
|---|---|---|
| 2026-05-29 | 2026-05-22-track-B-SUMMARY / md | SSP 匯出 Track B — 收尾 SUMMARY(2026-05-22) |
| 2026-05-29 | 2026-05-22-phase2-final-SUMMARY / md | SSP 匯入匯出 Phase 2 — 最終 SUMMARY(2026-05-22) |
| 2026-05-29 | 2026-05-22-export-libreoffice-and-inventory-handoff / md | SSP Export 收尾 Handoff — 2026-05-22(libreoffice + 空 inventory 診斷) |
| 2026-05-29 | 2026-05-22-docx-format-handoff / md | SSP DOCX Format Handoff — 2026-05-22 |
| 2026-05-29 | 2026-05-22-b6-complete-debug-handoff / md | SSP 匯入匯出 Phase 2 — B 階段完成 + Debug 交接 |
| 2026-05-29 | 2026-05-22-b1-kickoff-prompt / md | B1 開工 Prompt |
| 2026-05-29 | 2026-05-22-b1-b4-SUMMARY / md | SSP Export B1~B4 完工 SUMMARY |
| 2026-05-29 | 2026-05-21-bugfix-to-next-session / md | 交接 prompt — bugfix 後驗收 / debug 接手 |
| 2026-05-29 | 2026-05-21-bugfix-session3-SUMMARY / md | Bugfix Session 3 SUMMARY — Excel Update Flow 覆蓋語義修補 |
| 2026-05-29 | 2026-05-21-bugfix-session2-SUMMARY / md | Bugfix Session 2 SUMMARY — template-edit 驗收修補(接續 session 1) |
| 2026-05-29 | 2026-05-21-bugfix-session2-HANDOFF / md | 交接 Prompt — SSP 匯入匯出 Phase 2(2026-05-21 bugfix session 2 收尾後) |
| 2026-05-29 | 2026-05-21-bugfix-SUMMARY / md | Bugfix Phase Final SUMMARY — A5 smoke 後 bugfix + UX 重構 |
| 2026-05-29 | 2026-05-21-bug-reference / md | Bug 排查參考文件 — Template-Edit + 新建專案(2026-05-21) |
| 2026-05-29 | 2026-05-21-b-phase-kickoff / md | B 階段啟動交接 Prompt |
| 2026-05-29 | 2026-05-21-b-phase-analysis / md | Track B 前置分析報告 |
| 2026-05-29 | 2026-05-21-a5-smoke-to-bugfix / md | Handoff Prompt — A5 smoke → bugfix(Session C ship → manual smoke + 修 bug) |
| 2026-05-29 | 2026-05-21-a5-smoke-checklist / md | A5 Manual Smoke Checklist |
| 2026-05-29 | 2026-05-21-a5-b-to-c / md | Handoff Prompt — A5 Session B → C(BE ship → FE 實作開工) |
| 2026-05-29 | 2026-05-21-a5-SUMMARY / md | A5 Task Arc Final SUMMARY — 預覽 UI + Confirm 寫入 |
| 2026-05-29 | 2026-05-20-a5-a-to-b / md | Handoff Prompt — A5 Session A → B(design + plan ship → BE 實作開工) |
| 2026-05-29 | 2026-05-20-a4-f-t11-only / md | Handoff Prompt — A4 Session F / T11 only(task arc 收尾) |
| 2026-05-29 | 2026-05-20-a4-e-to-f / md | Handoff Prompt — A4 Session E → F(T6 + T7 + T8 ship → T9 + T10 + T11 開工) |
| 2026-05-29 | 2026-05-20-a4-d-to-e / md | Handoff Prompt — A4 Session D → E(T3 + T4 + T5 ship → T6 + T7 + T8 開工) |
| 2026-05-29 | 2026-05-20-a4-c-to-d / md | Handoff Prompt — A4 Session C → D(T0 + T1 + T2 ship → T3 + T4 + T5 開工) |
| 2026-05-29 | 2026-05-20-a4-brainstorm-kickoff / md | Handoff Prompt — A4 Brainstorm Kickoff(devices / info_systems / leveraged / 控制項 / AO 鉤稽) |
| 2026-05-29 | 2026-05-20-a4-b-to-c / md | Handoff Prompt — A4 Session B → C(plan ship → T0+T1+T2 開工) |
| 2026-05-29 | 2026-05-20-a4-SUMMARY / md | A4 Phase Final SUMMARY — devices / info_systems / leveraged / 控制項 / AO 鉤稽 + SSP 寫入完整化 |
| 2026-05-29 | 2026-05-20-a3-session-D-to-E-implementation / md | Handoff Prompt — A3 Session D → Session E(test 補齊 + cucumber + 收尾) |
| 2026-05-29 | 2026-05-20-a3-session-D-SUMMARY / md | A3 Session D — SUMMARY(T3 + T4 implementation) |
| 2026-05-29 | 2026-05-20-a3-session-C-to-D-implementation / md | Handoff Prompt — A3 Session C → Session D(implementation T3+T4) |
| 2026-05-29 | 2026-05-20-a3-session-C-SUMMARY / md | A3 Session C — SUMMARY(implementation T0+T1+T2 收口) |
| 2026-05-29 | 2026-05-20-a3-session-B-to-C-implementation / md | Handoff Prompt — A3 Session B → Session C(implementation T0~T2) |
| 2026-05-29 | 2026-05-20-a3-session-B-SUMMARY / md | A3 Session B — SUMMARY(writing-plans 收口) |
| 2026-05-29 | 2026-05-20-a3-session-A-to-B-writing-plans / md | Handoff Prompt — A3 Session A → Session B(writing-plans) |
| 2026-05-29 | 2026-05-20-a3-brainstorm-kickoff / md | Handoff Prompt — A3 Brainstorm Kickoff(共用 matcher 抽取:parties / org-units) |
| 2026-05-29 | 2026-05-20-a3-SUMMARY / md | A3 Phase Final SUMMARY — 共用 matcher 抽取 + fuzzy 三態 + A2 串接 |
| 2026-05-29 | 2026-05-19-a1-SUMMARY-t6-final / md | Phase 2 A1 — T6 final(A1 task arc 完整收口) |
| 2026-05-29 | 2026-05-19-a1-SUMMARY-t0-t3 / md | Phase 2 A1 — Task 0-3 收尾 + 換 session 交接 |
| 2026-05-29 | 2026-05-19-a1-SUMMARY-be-partial-ship / md | Phase 2 A1 — BE Partial Ship 收口 |
| 2026-05-29 | 2026-05-19-a1-HANDOFF-next-session / md | 交接 Prompt — A1 收尾(T6 FE + T7 完整 E2E) |
| 2026-05-29 | 2026-05-19-a1-HANDOFF-next-phase / md | 交接 Prompt — A1 完整 shipped,準備進下一階段(A2 / B1 / T7) |
| 2026-05-29 | 2026-05-19-a0.1-SUMMARY / md | Phase 2 A0.1 執行收尾 — 完整 ship 報告 |
| 2026-05-29 | 2026-05-18-a0-SUMMARY / md | Phase 2 A0 收口報告 / 明天 session 交接文件 |
資產子資料夾(無文件,不建頁):reference/(5 個檔)