# Phase 3f 模組化收尾任務矩陣 > 來源:ADR-017。此檔只保存執行矩陣與紅線,完整背景與決策以 `docs/adr/ADR-017-modularization-cleanup-roadmap.md` 為準。 ## 紅線 1. 每個 sub-phase 獨立 commit。 2. 進下一階段前必須完成 critic review、本機 self-check、188 SSH 健康檢查。 3. ADR-011 永遠有效:部署與修復不得使用 `--remove-orphans`,不得影響 `momo-db`。 ## 時序 | Phase | 目標 | 風險 | 預估 | |---|---|---|---| | 3f-0 | DB metadata 救急,create_all 新環境零漏表 | 最高 | 30m | | 3f-1 | 路由雙註冊徹底解除,保 Blueprint、刪 app.py duplicate | 高 | 4-6h | | 3f-2 | Cache 統一至 fingerprint manager,gunicorn 加 `--preload` | 中 | 2-3h | | 3f-3 | scheduler 裸 `except`、EventRouter 同步告警、compose mount、vendor template_folder | 中 | 1-2h | | 3f-4 | 模板統一至 `templates/` 與 `web/templates/vendor_stockout/` | 低 | 2-3h | | 3f-5 | 孤兒 service 與 `.env.example` 收尾 | 極低 | 30m | | 3f-6 | 模組化治理守門:大檔 inventory、分層 guide、測試防新增巨檔 | 低 | 30m | ## 已校正事項 - 3f-0 metadata 驗收為 34 張表,不是 33 張。 - 3f-1 的公開 `/health`、`/metrics`、`/settings` 等不能直接遷進現有 `system_bp`,因它有 `/api/system` prefix。 - 3f-2 的 `--preload` 只降低 copy-on-write 記憶體成本,一致性仍以 DB fingerprint 為準。 - 3f-3 必須先補 `EventRouter` 同步 facade,再把 scheduler P1/P2 失敗導入告警。 - 3f-4 移除 ChoiceLoader fallback 前,需先清 docker-compose 舊 mount 與根目錄模板。 - 3f-6 已將 >800 行 Python 檔案列入 `docs/memory/code_modularization_inventory_20260430.md`;未來新增巨檔需更新 inventory,否則 `tests/test_modularization_governance.py` 會失敗。