Dr. Water 网站改造日志

本文件记录架构改造的范围、决策、验证结果和未解决风险。除非单独说明,所有时间均为 Asia/Shanghai。

改造原则

  1. 先保障线上可用性,再优化性能、内容结构和视觉表现。
  2. 每次发布必须能够验证中英文入口、语言切换和核心列表。
  3. 生产发布必须可预览、可回滚,不能由一次不完整构建直接覆盖线上站点。
  4. 大型媒体不应阻塞正常内容发布。

阶段计划

阶段 目标 验收条件 状态
0 建立日志与发布前检查 关键页面、双语导航和媒体规模可自动检查 进行中
1 修复双语构建与语言入口 中英文页面成对输出;每页具备有效语言切换链接 未开始
2 发布链路安全化 预览、备份/回滚和部署后检查;禁止未通过检查的发布 未开始
3 媒体与性能治理 视频从主站构建产物拆分;提供转码、封面和懒加载策略 未开始
4 内容模型与双语规范 统一内容类型、分类词表、文件命名和 front matter 未开始
5 视觉、可访问性、SEO 与安全 响应式组件、替代文本、分享元数据、HTTP 安全头和隐私策略 未开始

已识别基线问题

  • 构建产物约 6.7 GB,且中英文输出重复复制大型视频和音频。
  • make update 使用 rsync --delete 直接覆盖生产目录,没有预览、回滚或发布后验收。
  • 双语页面存在 index.en.qmdindex_en.qmd 两种命名;部分英文页面 metadata 的 lang 设置错误。
  • 一次发布曾出现英文页面存在但语言切换入口缺失的回归,说明双语后处理没有被验收。
  • 首页和新闻列表的内容类型、分类语言与视觉组件不一致。

变更记录

2026-09-01 — 阶段 0:开始

  • 建立本日志。
  • 新增发布前检查脚本,验证网站输出目录、核心中英文入口和导航语言链接。
  • 该脚本先作为诊断工具运行;在阶段 2 纳入部署门禁。
  • 首次基线检查通过核心输出验证,但发现若干未配对/非标准命名的双语源文件,以及约 6.7 GB 的发布产物。遗留项将进入阶段 1 和阶段 3。

2026-09-01 — 阶段 1:双语源文件第一批修复

  • 将三篇新闻的英文源文件从 index_en.qmd 迁移为标准的 index.en.qmd
  • 修复光华奖英文标题截断和错误的 lang: zh metadata。
  • 将博士招生页面的英文路径改为真正的英文内容与英文分类、描述和 metadata。
  • 修复新视频英文页指向光华奖英文内容的内部链接。
  • 博士后招聘页面仍有中文正文位于英文路径,列为下一批内容迁移项,暂不以 metadata 掩盖该问题。

2026-09-01 — 阶段 1:双语源文件第二批修复

  • 将博士后招聘页完整翻译为英文,并同步修正 title、authors、分类、描述和 lang: en metadata。

2026-09-01 — 阶段 2:安全发布设计

  • 服务器现网目录约 6.7 GB,剩余空间约 9.8 GB,不能使用完整蓝绿副本。
  • 新增硬链接暂存发布脚本:从线上当前目录建立同文件系统的硬链接副本,仅同步变化文件;验证中英文入口后以目录重命名切换,并保留旧目录作为回滚点。
  • make update 兼容保留,但改为调用安全发布目标;make all 不再直接执行旧的覆盖式 rsync。
  • 发布前检查进一步要求每个标准 *.en.qmd 源文件都必须在 _site/en/ 生成对应输出,避免局部渲染造成英文站点保留旧内容。
  • 完整双语构建通过逐页英文输出门禁:77 个英文页面均生成到 _site/en/,核心中英文导航切换链接存在。
  • 默认 Make 流程不再自动复制机器私有的参考文献库,也不再自动执行 git add、提交和推送;这两项副作用保留为显式命令。
  • 发布脚本提供 DRWATER_DEPLOY_DRY_RUN=1 演练模式:会上传并验证暂存目录,然后删除该暂存目录,不切换线上网站。

2026-09-01 — 阶段 3:媒体输出去重(第一批)

  • 验证 Nginx 未配置 disable_symlinks,可安全服务站内符号链接。
  • 新增渲染包装脚本:英文构建完成后,_site/en/etc/videos 改为指向主站 _site/etc/videos 的相对符号链接。
  • 发布前检查拒绝英文视频目录的第二份物理副本;预计减少约 2.8 GB 发布产物。