# 交接 prompt — bugfix 後驗收 / debug 接手

> 此檔給 user 貼到新 session 開頭，讓接手的 Claude 立刻進入 context。

---

## 接手 prompt（貼到新 session）

```
我從昨天 (2026-05-21) 的 SSP Excel Import Phase 2 bugfix session 接過來。

請先讀以下兩份文件理解 context：
1. docs/features/FR-011.2-2605-ssp-import-export-phase2/handoff/2026-05-21-bugfix-SUMMARY.md
   — 完整收尾報告，含 commits 清單 / 架構改動 / 已知 follow-up
2. compliance-manager-fe/CLAUDE.md L185+「Loading / 等待狀態規範」⭐
   — 本期強化過的規範

bugfix session 已 ship 28 個 commits (BE 13 + FE 15)，主要做了：
- A5 smoke 後 3 個 issue 修補 (實施狀態 / parties role / 設備資訊系統)
- AO statement_identifier (a)/(b) letter key 對齊
- template-edit 整頁 UX 重構成 TabView (7 tabs)
- 4 個 entity panel UI 統一 DataTable
- Loading 規範強化 + LoadingState 共用元件
- Parties N+1 fix + composable cache

目前狀態：
- 全部 commits 已落地，working tree 乾淨（pyproject.toml path dep dev mode 不 commit）
- BE 需要重啟才生效（path dep 模式不需 poetry update）
- FE 需要重新 build + 瀏覽器 hard refresh

我接下來要：[user 自行填寫，譬如「跑驗收 checklist」/「修我剛測到的 XXX bug」]
```

---

## 驗收 checklist（建議依序測）

### A. BE 起來能正常運作

- [ ] `python main_socketio.py` 啟動沒 import error / DI error
- [ ] `tail -f log/app.log` 沒 stack trace
- [ ] `GET /api/1.0/module-frames` 列出 MF 列表正常

### B. template-edit 進入頁面

- [ ] 進 `/module-frame/<uid>/template-edit` 看到頁面層級 spinner「載入中...」
- [ ] 載入完看到 7 tabs（基本資料 / 適用控制項 / 單位 / 人員 / 設備 / 資訊系統 / 程序書文件池）
- [ ] 「編輯」menu 不見了
- [ ] 右上「批次維護」menu 順序：從文件匯入 / sep / 從 Excel 匯入+下載 Excel 樣板 / sep / 匯出+匯入現況資料

### C. 基本資料 Tab 0

- [ ] 顯示 MF 名稱 / version / group / provider / frequency / status / description
- [ ] 改名稱後按「儲存」→ toast「儲存成功」+ 上方 header MF 名也更新

### D. 適用控制項 Tab

- [ ] 顯示 tree（group → control → AO）
- [ ] tab 內容上方右側有「編輯適用控制項」outlined button
- [ ] 點 button 開 EditIncludeControlsDialog 正常

### E. 單位 / 人員 Tab（最需要驗收）

- [ ] 切到單位 tab — **沒有一直轉圈圈** ← Stage 4 bugfix
- [ ] DataTable 顯示資料，column：單位名稱 / 角色+聯絡 / 鉤稽 / 操作
- [ ] 切到人員 tab → 沒有再 call 一次 API（composable cache 命中）
- [ ] 編輯 row → form 出現在頂部，鉤稽 picker 第 1 欄
- [ ] 儲存後 cache invalidate，新資料即時顯示
- [ ] tab badge count 數字正確顯示

### F. 設備 / 資訊系統 Tab

- [ ] 顯示 Excel 匯入的 device / info_system
- [ ] 點「新增設備」→ Dropdown picker (filter typeahead) 撈 tenant /devices
- [ ] 選 picker 後 name 自動帶入；可手動 override
- [ ] 編輯 / 刪除 row 正常
- [ ] 鉤稽 Tag 顯示已連結 tenant entity 名稱

### G. AO 實施狀態 / 現況說明（user 報過 bug）

- [ ] 點 control → AO 卡片展開
- [ ] AO 顯示 Excel 填的「實施狀態」(implementation_status)
- [ ] AO 顯示 Excel 填的「現況說明」(implementation_description)

### H. UI 統一驗收

- [ ] 4 個 panel 視覺一致（同 DataTable 高度 / 同 column header 樣式 / 同 empty message 引導文字）
- [ ] 全部 loading spinner 用 LoadingState 元件

### I. Loading 規範驗收

- [ ] 進頁面有 page-level spinner
- [ ] 切 tab 後 panel 內 spinner（如需重抓）正常
- [ ] 任何 button 點下後立即 loading 狀態（不會被連點兩次）

---

## 已知 incomplete / 可能再做

1. **ssp-resources composable cache 沒做**
   - 設備 + 資訊系統 panel 各打一次 `/ssp-resources`（兩 API call/page enter）
   - 如果 Network tab 看到打 2 次：補 `useModuleFrameSspResources` composable（pattern 跟 `useModuleFrameParties` 一樣）
2. **jedi-oscal 發版**
   - 整個 phase 結束 + user 明確指示後才做
   - bump 0.0.16 → 0.0.17，主專案 pyproject 改回 pin
3. **dead code cleanup**
   - `partiesDialogOpen` / `sspResourcesDialogOpen` / `basicEditOpen` / `editMenuRef` / `editMenuItems` / 對應 imports 都已 unreachable
   - 不影響功能，下個 phase 清

---

## ⚠️ 注意事項

### Working tree 該保持乾淨

```bash
git status
# 應該只有：
# - 修改: pyproject.toml         ← jedi-oscal path dep dev only，不 commit
# - 刪除: docs/conversation-history/*.zip  ← 看是否要重新加回
# - 未追蹤: docs/features/ssp-import-export-phase2.zip   ← 不該入版控
# - 未追蹤: ...CMMC_Level_1_blank_xxx.xlsx              ← 測試樣板，不該入版控
```

如果 `git diff pyproject.toml` 看到的是 dev-mode path dep 改動，**不要 commit**。

### BE 重啟流程

```bash
# 1. 找 BE process
lsof -i :8000 | head
# 2. kill -9 (memory: nohup 留 orphan PID 用 kill -9 才殺得乾淨)
kill -9 <pid>
# 3. 重啟
python main_socketio.py
# 4. tail log
tail -f log/app.log
```

### FE rebuild

```bash
cd ~/Projects/Billows/Audit-Manager/compliance-manager-fe
npm run build:DEV
# 瀏覽器 Ctrl+Shift+R (hard refresh 清 bundle cache)
```

---

## 重要文件路徑

| 文件 | 路徑 |
|------|------|
| Bugfix SUMMARY | `docs/features/FR-011.2-2605-ssp-import-export-phase2/handoff/2026-05-21-bugfix-SUMMARY.md` |
| Design A5 | `docs/features/FR-011.2-2605-ssp-import-export-phase2/design-A5.md` |
| A5 SUMMARY (前段) | `docs/features/FR-011.2-2605-ssp-import-export-phase2/handoff/2026-05-21-a5-SUMMARY.md` |
| FE Loading 規範 | `compliance-manager-fe/CLAUDE.md` L185+ |
| BE log | `log/app.log` (專案根目錄) |
| Dev DB | `192.168.50.188:25432 / guidant_ai_dev / cmmgr` (密碼查 .env) |

---

**接手後第一件事**：跑上面 A → I checklist，把卡住的項目記下來，再決定下一步。
