# FR-032 系統資產盤點 — A/B/C/D/F 收尾 SUMMARY（2026-06-04）

| 項目 | 內容 |
|------|------|
| Feature | FR-032 系統資產盤點（資訊系統 / 設備作為資產納入 SSP inventory） |
| 本期完成 | A 範本層 / B clone / C 專案 SSP 編輯 / D1-A docx 匯出 / F 設備鉤稽 |
| 換 session 接手 | E-a Excel round-trip（handoff `2026-06-04-ea-excel-roundtrip-handoff.md`） |
| Branch | BE / FE / jedi monorepo 皆 `feature/FR-032`，**全部未 push** |
| 狀態 | 程式完成、BE 23 單元測試綠、user 手測 A–F 通過 |

---

## 一、做了什麼 / 為何做

把「資訊系統」與「設備」以**資產身分**納入合規資源庫範本與專案 SSP 的盤點清冊，採 dual-identity + hybrid soft-ref（複製欄位 + 選填鉤稽 id；可挑選帶入 / 可自由輸入），對齊既有 OSCAL party matching pattern。同一筆 information_system 在自己受評案是受評標的、在別處是資產。

關鍵設計決策（design.md + §11）：
- 走**新 inventory 機制**（`*_inventory_item_defaults` / `ssp_inventory_items` + asset_type 鑑別），不復活 §11.29 廢棄的 ssp_components 機制
- snapshot 由 **BE 從 master 抓**（不信 FE 傳值），單向凍結
- 設備鉤稽採 **merge**（device 只有 hostname/ip/os，其餘保留手填），系統採 full snapshot
- docx 匯出系統資產**獨立成 System Assets 表**（非混 Hardware Inventory）

## 二、commits（皆未 push）

**BE `feature/FR-032`**：`420f5e19`(design) … `cfcd0345`(migration) `58100d31`(A) `0afb037e`(C) `ce71c84a`/`fe30ce52`/`a49f6b41`(D) `02ac0662`/`2f167300`(F) `883ae2e0`(handoff)
**jedi monorepo `feature/FR-032`**：`d3af930`(jedi-oscal 三欄) `9277d5b`(jedi-device menu hostname/os)
**FE `feature/FR-032`**：`c39138d`(A) `941fb59`/`7338cd9`(顯示 fix) `91b55b4`(C 分表) `841c2a9`(revert 跑版 fix) `68a5de2`/`1a97a98`/`c8bf554`(F)

## 三、行為差異（user 視角）

- 範本 template-edit + 專案 SSP view 的「系統元件、外部授權與資產」tab → 設備資產 + 系統資產**兩張獨立表**
- 系統資產：挑資訊系統（master snapshot）或自由輸入
- 設備資產：挑 jedi-device（帶 IP/主機名稱/作業系統）或自由輸入
- docx 匯出：Hardware Inventory + System Assets 兩表（設備匯出一併修好既有遺漏）

## 四、規範文件清單（✓ 已更新 / ✗ 漏做）

✓ design.md（含 §6 D1-A、§10 驗證結果、§11 reconciliation 10 條）
✓ changelog `docs/changelog/2026-06-04-feat-fr032-system-asset-inventory.md`
✓ FR 登記表（FR-032 列，c39138d 前已加）
✓ migration SQL（DEV 已套）
✓ E-a handoff（§0~§12）
✓ memory feedback（hybrid soft-ref pattern / pre-flight before pipeline / jedi monorepo 安裝形式）
✓ database-schema.md（inventory 三欄）
✗ 對話紀錄歸檔 — **user 指示晚點一起出，本次不做**
✗ frontend-overview.md — 評估後本期 panel 屬既有 tab 內擴充，暫不更新（E-a 完成後一併）
— api-spec：本 feature 無獨立 api 模組文件（沿用 module_frame / oscal endpoint），暫不新增

## 五、部署 handover

- **migration**：`scripts/sql/2026-06-04-fr032-inventory-asset-type.sql` 套到 STG/POC/PROD（用 cmmgr，純 additive）
- **jedi-oscal**：含 inventory 三欄改動，正式發版要 bump version + 推 Nexus（dev 走 symlink）
- **jedi-device**：含 menu hostname/os 改動，同上發版；BE `pyproject.toml` jedi-device path 是 **dev-only，未 commit**，發版後改回 pin 新版本
- **docx 模板**：`ssp_cmmc_template.docx` 已重產並入版控
- 部署順序：jedi 套件發版 → BE poetry update + migration → BE 重啟 → FE bump 版本對齊

## 六、已知 follow-up

- **E-a**（換 session 接手）/ E-b（docx 匯入）/ OSCAL-native 匯出 / docx components-leveraged repoint / G 拆套件
- FE `SspTabPanel.vue` Excel 按鈕 layout 待議（已 revert 回原樣式）

## 七、未決：push / 進版 / FE 版號對齊

本 arc 全部未 push；jedi 套件未發版；BE/FE 未進版。等 user 指示。
