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.jsondocs/system-design/.../_all_error_codes.jsondocs/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 單筆殘留硬編 404information_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