Agent: architect (
architect)
Confidence: 78%
Cost: $0.9918
Duration: 3m 8s
Task ID:4e382ea6-bddb-4038-a7be-38d9a169f868
★ Insight ─────────────────────────────────────
comment-client.ts 的
CLOUDFLARE_DOMAIN三元判斷是半成品模式 — 只有這一個檔案讀取process.env.CLOUDFLARE_DOMAIN,其餘 5 個檔案都硬寫完整 URL。這代表當初某次改動試圖做 config 化,但只做了一半就停了。統一為config.BLOG_URL能徹底解決這種「同一個值有兩種取得方式」的問題。模型版本硬編碼 ≠ 故意鎖定 —
route-decision.ts和knowledge-extractor.ts使用 Haiku 確實是刻意的(成本控制),但「選 Haiku 這個 tier」和「鎖定特定 model ID」是兩件事。config.MODEL_TIER_HAIKU的語意正是「當前最佳的 Haiku tier model」,跟著 config 走才是正確行為。zod
.url()驗證的 fail-fast 價值 — URL 欄位加上.url()可以在啟動時就抓到格式錯誤(如忘記加https://),避免 runtime 拼出undefined/2026/02/27/slug/這種難以 debug 的 URL。
─────────────────────────────────────────────────
完成摘要
報告已寫入 report/source/_posts/architect-2026-02-27-hardcode-phase2-spec.md。
設計要點
新增 4 個 config env var(全部有 default,向後相容):
| Env Var | Default | 用途 |
|---|---|---|
BLOG_URL |
https://blog.arc.idv.tw |
Blog 網站完整 URL |
REPORT_URL |
https://report.arc.idv.tw |
Report 網站完整 URL |
CF_BLOG_PROJECT |
blog-arc |
CF Pages 專案名 |
CF_REPORT_PROJECT |
report-arc |
CF Pages 專案名 |
模型版本:不新增 env var,route-decision.ts 和 knowledge-extractor.ts 改用已有的 config.MODEL_TIER_HAIKU。
消除 11 處硬編碼,涉及 8 個 src 檔案,預估 ~50 行改動。
實作分 4 個 Batch:config.ts 先行 → Blog URL 5 檔 → Report URL 1 檔 → 模型版本 2 檔。Batch 2/3/4 可平行。