# FR-047 全站已知坑處理 — Arc 收尾 SUMMARY（2026-07-08）

| 項目 | 內容 |
|------|------|
| 緣由 | FR-047 spec 手冊全站 67 頁 §12「已知坑」彙整成 **508 條**（`docs/analysis/2026-07-07-spec-known-pits-inventory.md`），逐桶處理。 |
| Living tracker | **`docs/analysis/2026-07-07-known-pits-remediation-tracker.md`（一切定調/銷帳看這份，本 SUMMARY 是它的收口彙整）** |
| branch | `fix/v1.8.0-bugs`（未 push）|
| 狀態 | **實作全數完成或定調；部署（push / jedi 發版 / POC migration / FE 同版）未執行，等 user 明示** |

---

## 1. 一句話

508 條已知坑逐桶分族定調：**真正動手的遠少於 508**（~85% 是設計/行為告知 no-action）。安全守門衍生成獨立 feature FR-048；其餘桶逐條 live 驗證後，真缺陷修掉、誤報退回、告知類放生。

## 2. 508 條桶層總帳

| 桶 | 條數 | 結果 |
|----|------|------|
| ① SEC 授權守門 | 75 | → **FR-048**（全站 373 端點統一守門，另有 SUMMARY）；user 當時已逐項手測 |
| ② SCHEMA | 60 | DDL 5 項（冗餘索引 ×2 + UNIQUE ×3）已套 DEV+STG；告知類 ~55 no-action；升級 2 條（ssp-components#1 / device-manage#2）已修 |
| ③ UX | 47 | **未動**（剩桶）|
| ④ ECODE | 39 | 真缺陷 7 條全修（見 §3）；告知類 ~18 no-action |
| ⑤ STATE | 33 | **未動**（剩桶）|
| ⑥ REPLACE | 33 | **未動**（剩桶）|
| ⑦ DEAD | 30 | A 族死碼刪（BE+FE）；C 族 5 bug 改桶；jedi-survey 死碼刪；B 族 topt_secret drop 待定調 |
| ⑧ 其他 | 204 | 三次複核：~175 no-action、25 可行動歸桶、1 誤報更正 |

## 3. 本 arc 實作 commits（2026-07-07~08）

**主 repo `compliance-manager-be`（領先 origin 91 commits，含 FR-048 全批）**
- BUG 池：`bedd8295`(進度條) `7dee25ad`(na 圓點) `f5f26777`(feedback TypeError) `2986fc7b`(GitHub config) `e9e42871`(微量×2)
- SCHEMA 升級：`e741d726`(利用授權 Chip)
- SCHEMA DDL：`2026-07-08-drop-dup-index-*.sql` ×2 + `2026-07-08-add-unique-*.sql` ×3（DEV+STG 已套）
- ECODE：`0f26a7f2`(MAIL_SEND_FAILED + bulletin 404)
- DEAD：`d4b6ee6e`(feedback 死碼) `2d085edf`(v1 copy 鏈退役)
- 追蹤表銷帳多筆

**jedi monorepo（領先 origin 7 commits；path override 在主 pyproject 未 commit）**
- `60fbc12`+`9f85d80`(role dup-check+409) `0412b9a`(device 404) `b124b5d`(survey 死碼) `6adf125`(system-menu 409) `90724d7`(改密 400 + tenant 409) `490a187`+`2087b5a`(info-system 裸字串+404) `1ad6cf9`(**bump 5 套件版號 — 見 §6 發版待決**)

**FE `compliance-manager-fe`**
- `79c0133`(FR-048 4b signed-token) `7afeb49`(DEAD 死碼刪) `b7a9929`(改密碼碼 AUTH_401009→AUTH_400003)

## 4. ECODE 7 條逐條結果（全 live 驗證、無誤報）

| # | 坑 | 修法 | commit |
|---|----|------|--------|
| 1 | smtp MAIL_SEND_FAILED 未定義→500 | 補碼 | 主 `0f26a7f2` |
| 2 | bulletin GET 不存在 uid 缺 404 | 補 None→NotFound | 主 `0f26a7f2` |
| 3 | system-menu 撞 UNIQUE 裸 500 | catch→ConflictError | jedi `6adf125` |
| 4 | 改密「新=舊」碼/型別/語意三重不符 | 碼 AUTH_400003 + BadRequestError + FE i18n | jedi `90724d7` + FE `b7a9929` |
| 5 | info-system 裸字串 raise | 套件建 enum | jedi `490a187` |
| 6 | info-system PUT/DELETE 404 非 coded | 套件 raise 結構化 404 | jedi `2087b5a` |
| 7 | 刪被引用租戶裸 500 | catch→ConflictError | jedi `90724d7` |

## 5. Notion 狀態（GuidantAI 任務清單）

**8 張翻 `Done`（完成日期 2026-07-08）**：GitHub config / 角色 409 / api-logs JWT / otp-qrcode / 專案摘要報表守門 / 問卷守門 / MAIL_SEND_FAILED / 選單 ConflictError。
系統管理 CRUD 傘狀案（6516）維持 `完成待驗證`（FR-048，待部署後翻 Done）。

## 6. 部署 handover

1. **jedi 發版 ✅ 完成（2026-07-08）**：5 套件已推 Nexus（不可逆）——jedi-system-menu `0.0.9` / jedi-auth `0.1.24` / jedi-information-system `0.0.3` / jedi-survey `0.0.24` / jedi-device `0.0.12`。主 pyproject 已還原 pin 新版（`809ffd67`），path override 全撤；BE `poetry update` + import smoke 通過。
2. **push 未做**（需 user，無 gitlab 憑證）：主 repo 92 + jedi monorepo（bump `1ad6cf9`+源碼）+ FE commits 全未 push。
3. **重啟 BE**：現在跑 Nexus pin 版本（不再 path override），需重啟。
4. **FE 部署**：ECODE#4 的 `error-code.json`（三語 AUTH_400003）。
5. **POC migration 未套**：SCHEMA DDL 5 檔 + FR-048 capability seed（只套 DEV+STG）。
6. **BE/FE 同版鐵律**：FR-048 4b + ECODE#4（改密碼碼）BE/FE 成對，只上一邊會壞。

## 7. Loose ends（未修 / 未定調）

- **otp-resend type/mfa_type（Notion 61db）未修**：SCHEMA④ 標「→BUG/ECODE」但未實際派工；route 仍讀 `mfa_type`、serializer 宣告 `type`→TOTP 使用者靜默走 email。Notion 維持 Not started。
- **AUTH_401009 文件漂移**：ECODE#4 改碼後，舊碼 `AUTH_401009` 仍散在 `docs/reference/error_code.json`、`docs/system-design/.../_all_error_codes.json`、`docs/specs/v1.8.0/auth|system-admin` md/html/dot → spec-sync 待做。
- **剩 3 桶未動**：UX(47) / STATE(33) / REPLACE(33)，已有預收歸位條目（見 tracker 各桶）。
- **DEAD B 族待定調**：`users.topt_secret` drop（DEV 查乾淨，待 STG/POC 確認 + 拍板）。
- **info-system GET 單筆殘留硬編 404**（`information_system_route.py:126` `msg="Not found"`）：#6 只改 PUT/DELETE，GET 路徑同款可順手，低優先。
- **spec 更正**：tenant-manage#5 誤報、storage-config#5 無害澄清（FR-047 spec 手冊模式，待做）。

## 8. 規範文件盤點

- ✅ Living tracker（定調全落地）
- ✅ FR-048 SUMMARY + 端點授權矩陣（既有）
- ✅ analysis：v1 copy 鏈退役、統一守門設計（既有）
- ✗ 頁面 spec §12 對應更新（誤報更正 + 碼漂移）— 待 spec-sync
- ✗ AUTH_401009 文件漂移清理 — 待 spec-sync
