跳轉到

D-20260816-11|前端靜態內容路徑收斂

背景與驅動力

i18n 首輪決策以獨立 JSON 描述自寫 Service Worker 的離線模型,後續實作已改由動態 import 產生 locale chunks;公告來源也在靜態資產整理後移到 public/assets namespace。兩者的產品語意未變, 但舊 ADR 的實體路徑會讓維護者誤建已不存在的檔案樹。

考慮過的選項

  • 把現況視為純實作細節、不補關係:舊路徑仍會被當成有效契約,否決。
  • 保留獨立 JSON alias:增加重複 payload 與雙來源,且專案尚未發布,否決。
  • 以 current build 形狀修訂兩份舊 ADR,保留原本離線與發布語意(採納)。

決定

  • i18n 字典由動態 import 形成每語系 lazy bundle chunk,不再輸出 /assets/i18n/*.json;build 後 precache 掃描仍涵蓋全部 chunks,fetch 維持 cache-first,因此首次安裝後四語離線能力不變。
  • 公告作者來源固定為 public/assets/announcements/<id>/,generator 再產 browser、SSR/SSG 與 Service Worker 所需 projection;不保留 public/announcements/<id>/ alias。
  • 兩項都是 pre-launch 唯一 current shape,不提供 dual-read、redirect 或舊目錄 migration。

後果與影響

ADR、canon 與 build 輸入現在指向同一組路徑,工具不再可能同時維護 JSON 字典與 bundle 字典, 公告也不會分散在兩個 public namespace。D-20260704-02 的自寫 Service Worker 與語系前綴、 D-20260716-02 的靜態多語、封閉 schema、四語完整性及 git PR 信任模型均維持有效。