Branch:
feature/ssp-import-export-phase3(沿用 phase2 延伸) 跨 repo:compliance-manager-be / compliance-manager-fe / jedi-oscal 一日完成:原 Session 4 handoff 接 smoke test 後一路追加 Phase D / B / Settings 整合 / leveraged 結構化 / cleanup
把 Session 4 預期的「smoke test 驗收 + 收尾」 task arc 擴大成「SSP tab UX 大改 + Project Settings 整合 + leveraged 結構化 + 多 bug fix + Phase E cleanup」一日完工,跨 3 repo 共 40+ commits,總共 5 個主題、1 份 batch changelog 落地。
| 項目 | 改動前 | 改動後 |
|---|---|---|
| 容器 | Accordion + AP selector | TabView 6 sub-tabs, apUid 從 URL params |
| Tab 結構 | 8 個(含適用控制項 / 程序書文件池) | 6 個(受評標的 / 責任單位 / 責任人員 / 設備 / 資訊系統 / 外部利用服務) |
| Lazy | :lazy="true" → 進入才 mount, counts 滯後 |
:lazy="false" → 立即顯示 counts |
_empty_placeholder 同步)/ status = active| 層 | 改動 |
|---|---|
| jedi-oscal | OscalSspSystemImplementationItem 加 provider VARCHAR(255) + category VARCHAR(50) (commit 8de7991) |
| BE migration SQL | scripts/sql/2026-05-23-add-leveraged-provider-category.sql (cmmgr 執行避 RLS) |
| BE service | SspLeveragedContextService add/update/list/_to_dict 都 wire 5 個新欄位 |
| BE Excel 06 sheet | SHEET_LEVERAGED 加 category column + 6 enum + i18n header |
| FE form | 4 欄位 → 7 欄位(類別 / 名稱 / 供應商 / 日期 / 狀態 / 用途 / 描述), party_uuid 隱藏 |
| Panel | 加 prop |
|---|---|
| ModuleFramePartiesPanel | apiBase + scopeUid + loadFn/invalidateFn(cache hook) |
| ModuleFrameSspDevicesPanel | apiBase + scopeUid + apiRoot computed |
| ModuleFrameSspInfoSystemsPanel | 同上 |
| ModuleFrameDocumentPoolPanel | apiBase + scopeUid + MF/SSP path branch |
Service 80% 可複用(C5 §2.3 設計目標達成)。
src/components/grc/project/{ProjectBasicInfoPanel,ProjectParticipantsPanel,ProjectCloudIntegrationsPanel}.vue/project/projects/<id>/settings route 保留可用oscal-role.json (9 個 OSCAL ssp_party_role)GET /system/menu/ssp_party_role 並走 menuStore cache| Bug | Commit | 根因 |
|---|---|---|
| PROJECT_CURRENT_SSP URL 漏 /grc/ → 偽 CORS | FE 7ada044 |
URL prefix 漏掉 |
| system-characteristic GET 404 | BE a84de39 |
新 SSP 沒 SC row, raise 改 empty placeholder + PUT auto-create |
| SspProjectResolver SQL varchar=integer | BE 638cc00 |
AP.ssp_id 是 varchar 存 int 字串, 需 str() cast |
| 啟動專案後 SSP 沒 main row → 設備/系統 CRUD 撞 | BE 2f69db0 |
_setup_ssp_system_implementation clone from template |
| Project create 自動帶入 mf parties 角色錯誤 | FE 012cfb3 |
預設 'viewer' |
| ODT 預覽失敗 | BE 61b71bf |
PDF preview whitelist 漏 odt/ods/odp/rtf |
| FIPS 預設值不對 | BE aa98c15 |
empty_placeholder high + active |
| DocumentPoolPanel 重複 import | FE 2b66adf |
拿掉重複行 |
| SspBasicSection onMounted 沒 import | FE ad2aeab |
補 import |
8de7991 feat(ssp-impl-items): provider + category 欄位638cc00 fix(ssp-resolver): str() casta84de39 fix(ssp-system-characteristic): empty fallback + auto-create2f69db0 feat(project-start): clone main row + items from templateaa98c15 tweak(ssp-system-characteristic): FIPS=high / status=active 預設61b71bf fix(file-preview): ODT whitelist18a1110 feat(leveraged): structural fields BE 全鏈條57caca2..8d80972 之間,包含 Phase C/D/B/E + bug fixes + i18n 整理8d80972 docs(changelog): Phase C/D 大整理(本 batch changelog)| 項目 | 狀態 | 路徑 |
|---|---|---|
| Batch changelog | ✅ | FE docs/changelog/2026-05-23-feat-ssp-tab-phase-c-d-redesign.md |
| Tracker 更新 | ✅ | BE docs/features/FR-011.3-2605-ssp-edit-in-project/README.md(加 D / B-generalize / Settings 整合 / Issue 1 BE / Bug fix collection / E 共 6 row) |
| Phase C 既有 design 文件 | ✅ | C1~C8 8 份俱在 |
| Phase D 設計 | ⚠️ ad-hoc(user 邊回饋邊改, 未事先 design.md) | 已寫入本 SUMMARY 表 |
| SUMMARY 收口 | ✅ | 本檔 |
| Conversation history extract | ⏸ pending(user 未明確要求) | 待 user 指示時用 scripts/extract_claude_sessions.py |
# Dev 環境
psql -h 192.168.50.188 -p 25432 -U cmmgr -d guidant_ai_dev \
-f scripts/sql/2026-05-23-add-leveraged-provider-category.sql(已執行過, 此檔留作 staging / production 用)
| 項目 | 級別 | 狀態 |
|---|---|---|
launch_new_round 流程是否需要走 _setup_ssp_system_implementation |
中 | 待跟進 |
| 既有 SSP(pre-Phase-C)的 main row backfill SQL | 小 | 看實際情況 |
| SspSystemImplementationContext.resolve_sys_impl_main_id None 時 auto-create | 小 | 目前是 raise GRC_SSP_RESOURCE_NO_SSP, 可改 auto-create |
| 多框架支援 Phase 2/3(label neutralization 之後的實際多框架) | 大 | 等接客戶 |
| jedi-oscal 正式 bump version 推 Nexus | 中 | 等 user 明確指示 |
| 範圍負責人 picker 改更通用(目前用 system_menus userMenu, 跟其他 picker 不同源) | 小 | low priority |
| Project Settings 舊 route /settings 移除 vs 保留 | 小 | 保留中, 看是否有外部連結 |
本 task arc 起點:Session 4 handoff 預期「smoke 驗收」;終點:Phase C 全 8 子題 shipped + Phase D 受評標的 UX 大改 + Phase B 4 panel generalize + Project Settings 整合 + leveraged 結構化 + Phase E cleanup。
整體 SSP-edit-in-project feature 至此可宣告 Phase C 完工,剩餘 follow-up 屬於 polish / 觀察期 / 等明確需求才動的範疇。