Phase 收口報告:handoff
2026-05-23-track-bac-excel-roundtrip.md三 Track 全部落地 Branch:feature/ssp-import-export-phase3收尾日期:2026-05-23
01b_受評標的 sheet(per-SSP 單筆 system_characteristic vertical layout)provider / category / status / date_authorized / description)— 從原本「title=provider 黑客」拆成獨立 entity column,Excel 鏈接通SspSystemCharacteristicContextService (mirror C2.1 抽法)/module-frame/<uid>/system-characteristic + /module-frame/<uid>/leveragedSspBasicSection / SspLeveragedSection 加 apiBase + scopeUid props — SSP-tab + MF template-edit 共用同 component_setup_ssp_system_implementation 擴 _clone_system_characteristic_from_template + 補 leveraged provider/category clone/ssp/<uid>/excel-template?mode=blank|filled endpoint(generate_for_ssp 從 SSP 自身資料讀)SspTabPanel.vue 加「下載 Excel 匯入樣板」+「從 Excel 匯入」button(絕對定位疊在 sub-tab nav row 右側)ImportExcelPage.vueproject-planning-ap8 個 BE bug fix + 多個 FE polish:
control_identifier| 主題 | 路徑 |
|---|---|
| Track B (feat) | docs/changelog/2026-05-23-feat-ssp-excel-system-characteristic-and-leveraged-structured.md |
| Track A (feat) | docs/changelog/2026-05-23-feat-mf-ssp-structure-alignment.md |
| Track C (feat) | docs/changelog/2026-05-23-feat-project-ssp-excel-roundtrip.md |
| Testing iteration (fix) | docs/changelog/2026-05-23-fix-ssp-excel-testing-iteration.md |
design-C5.md §11 加 Track A + C reconciliation(含 11.1~11.7:section generalize / MF endpoint mirror / 啟動專案 clone SC / SSP excel-template download / FE 接通 / session_scope + control upsert bug fix / 跟原 design 差異對照表)design-C7.md §11 加 Track B reconciliation(含 11.1~11.5:樣板版本 iteration / LeveragedWriteStrategy 修法 / ParsedLeveraged description / role validator non-blocking / filled-mode items 查詢修正)README.md tracker 加 4 row(Track B / A / C / Testing iteration)docs/conversation-history/2026-05-23/ssp-edit-in-project/
b7da6369-... (796 KB, 早上 session)426af2a6-... (2083 KB, 下午 session — Track B/A/C 主體)be2c27cc-... (1713 KB, 晚上 session — Track C + testing iteration + 收尾)無新建 issue — Track B/A/C 內遇到的 bug 都是 testing-time 直接修,無「需要單獨 root cause 分析」級別的故障。
1baba65 fix(ssp-excel-confirm): ControlWriteStrategy 改用 control_identifier upsert key
3e5e176 fix(ssp-scoped-excel): permission_checker 包 session_scope 修「沒有 session」錯誤
0eda729 fix(project-start): clone leveraged 補 category + provider 欄位
72dd7e7 fix(ssp-excel): filled-mode 設備/資訊系統/外部利用服務 sheet 空白 — 改走 ssp_id 查 items
ee8426c feat(ssp-excel): leveraged Excel 補 date_authorized + description (v2.4.0)
efdc176 fix(ssp-excel): leveraged 寫到 title + 不要 fallback provider 到 service_name
faccd5c fix(ssp-excel): confirm 對 legacy blocking code (INVALID_ROLE) 向後相容
34efb29 fix(ssp-excel): person role 改 non-blocking warning (相容 OSCAL 角色)
04b4185 feat(ssp-excel): leveraged row-level overrides + delete (純資料 inline edit)
872bced fix(ssp-excel): SC + leveraged status enum 對齊 Billows UI 慣例 (v2.3.1)
edde76f tweak(ssp-excel): 拿掉 sheet 名稱數字前綴 (v2.3.0)
deb2fa5 fix(di): module_frame_container ssp_domain_service 補 document_repo 注入
c86f71c feat(ssp-excel): Track C BE — /ssp/<uid>/excel-template download endpoint
447fb40 feat(mf): Track A BE — MF SC + leveraged endpoint + 啟動專案 clone SC
474ae0e feat(ssp-excel): Track B — system_characteristic 端到端 + leveraged 結構化欄位
cf34650 tweak(ssp-tab): Excel button 微推上去對齊 sub-tab label baseline
e342be7 tweak(ssp-tab): Excel 匯出/匯入 button 移到 sub-tab nav 同 row 右側 (Option A)
b59d1a5 tweak(ssp-tab): 匯入 SSP Excel dialog 改用 dropzone 樣式對齊既有匯入頁
2052490 tweak(ssp-leveraged): table 補齊 edit dialog 全部欄位 (提供者 + 狀態)
ca0565b tweak(ssp-excel-preview): 授權日期改 Calendar 日期套件
a98d2f9 feat(ssp-excel-preview): leveraged 預覽 + Excel 同步加 date_authorized + description
f749dc2 tweak(ssp-leveraged): table 「服務名稱」改單欄
a7fd630 fix(ssp-leveraged): 描述 / 用途 column 顯示優先讀 purpose
8392801 fix(ssp-excel-preview): leveraged 紅色 badge 拿掉 + 類別 i18n 修正
1c59c2a fix(ssp-excel-preview): SC owner Dropdown 抽 login_name + leveraged 加 inline edit / 刪除
79e6522 fix(ssp-excel-preview): SC 狀態對齊 + owner Dropdown + leveraged 拿掉配對狀態
4fd178f fix(ssp-tab): 下載失敗 + 對齊 template-edit 文案
f5c1fcd tweak(mf-template-edit): 受評標的 tab 移到「責任單位」前
e997ac4 feat(ssp-excel): Track C FE — SSP tab 加下載 / 匯入 SSP Excel 按鈕
0b87884 feat(mf): Track A FE — MF template-edit 加受評標的 + 外部利用服務 2 tab
7b4abf2 feat(ssp-excel): Track B FE — Excel 匯入預覽頁加 SC tab + leveraged 結構化欄位
無新增 commit — Track B/A/C 用到的 provider / category 欄位已在前期(8de7991)加進 SspSystemImplementationItemEntity,不需再動套件。
provider / category(前期 clone 流程沒帶)— 本期 fix 只對之後啟動的新專案 / 新 AP round 有效。要補可在 SSP UI edit dialog 內手動填,或重新建一個新 round / 新專案測blocking=True / INVALID_ROLE 仍會被 confirm 守門認回去(加了 legacy 名單過濾)DI / route / write strategy 等改動需重啟 BE:
lsof -ti :8000 | xargs kill -9 && python main_socketio.py仍是 jedi-oscal path dependency(dev 期間規範要求不 commit)。未來若 jedi-oscal 需推 Nexus 正式發版時:
pyproject.toml 改回 pin 新 version + poetry update jedi-oscal本期 Track B/A/C 沒新動 jedi-oscal source,path dep 跟前期 8de7991 同步即可。
無新 migration SQL — Track B/A/C 不動 DB schema(所有需要的欄位 jedi-oscal 8de7991 已加)。
?section=ssp deep-link 沒實作:跳回 project-planning-ap route 但 SSP tab 切換需 user 手動點。要做的話在 ProjectPlanningView.vue applyDeepLink 加 section query 監聽authorization_boundary 欄位(jedi-oscal SC entity 沒對應,Track B 沒加進 Excel — 等套件擴充再補)?return_to=ssp deep-link 完整自動切 tab(手動點即可)2026-05-23-track-bac-excel-roundtrip.mddesign-C5.md §11 / design-C7.md §11docs/features/FR-011.3-2605-ssp-edit-in-project/README.mddocs/conversation-history/2026-05-23/ssp-edit-in-project/