跳轉到

D-20260728-06|歷史記錄月份索引與每日分檔

背景與驅動力

按年分檔雖已讓 landing 與附錄分離,但 2026 年檔在三個月內已增至 192 條、約 677 KiB, 其中單日最高約 134 KiB。年度正文仍會持續長大,每次小幅變更都要載入與改寫整年內容, Markdown 轉站點時也會產生可感知的載入停頓。

目前尚未發布,沒有舊網址相容負擔,適合在歷史量仍可完整核對時建立更細的穩定結構。

考慮過的選項

  • 維持年度正文:結構簡單,但未解決檔案單向增長與生成成本,棄。
  • 只拆到月份正文:短期足夠,活躍月份仍會快速膨脹,且之後還要再遷移一次,棄。
  • 月份索引搭配每日 canonical 正文,landing 保留附錄與生成式月份總表(採納)。

決定

  • 歷史記錄/YYYY-MM-DD.md 是里程碑條目的唯一 canonical 位置;檔名日期必須與每條標題日期 相同。
  • 歷史記錄/YYYY-MM.md 與 landing 的月份總表由 pnpm history:generate 生成,不手動維護 統計數字。檢查模式拒絕過期索引、舊年度正文及在月份索引誤放 canonical 條目。
  • 決策來源解析、歷史連結驗證與索引生成共用同一個每日檔解析模型;決策回引只認 決策檔 引用行,避免一般延伸閱讀被誤判為雙向關聯。
  • 每日頁完整上站,但 MkDocs 側欄只列月份索引並按新到舊排序;每日頁由月份頁進入。
  • 遷移時逐條比對 SHA-256,要求所有原始條目內容位元組完全一致,且同日內順序不變; 確認後移除舊年度正文,不保留相容 stub。

後果與影響

日常追加只會觸及單日正文與生成式索引,讀取、差異檢視和 HTML 載入成本都有明確上限; 月份索引仍提供按時間瀏覽的入口,側欄不會被數十個每日頁淹沒。

代價是新增一層生成流程與檔名規則,因此本機與 CI 必須執行 check:history。跨日期的舊年度 排列不再保留,因為 canonical 導覽改以日期分組;條目本身及同日內順序維持不變,決策關聯 仍由穩定 ID 與來源標題解析,不依賴舊檔路徑或行號。