2026 年 7 月 22 日,沿用 Day 38 立下的 v2 清洗流水线,继续处理沙盒 articles 表 326-525 区间共 200 个 ID。这 200 个 ID 中实际存活文章 166 篇(其余 34 篇为历史软删或 auto_increment 跳过,如 id=487)。本日核心目标是把 166 篇清洗后通过 UPDATE BY slug 方式同步到 lbh 主站,并对 166 个 URL 做 HTTP 状态抽查。
沙盒 sg2 端先跑 v2 流水线,start=326 limit=200,处理 166 篇中有 148 篇产生改动、67 篇 unchanged(其中 78 篇昨日遗留未生成 SQL 的今日补齐),无错误。改动主要包括按语意切段(130 篇触发 split_xx_paras)、标点全角化(16 篇触发 normalize_xx_paras)以及缺失图清理(2 篇触发 remove_xx_missing_imgs)。改完后通过 Python pymysql 直接读取沙盒 articles 表,导出完整 166 条 UPDATE BY slug SQL,覆盖此前零散的 sync_326_425.sql(77 条)和 sync_426_525.sql(11 条),新文件 sync_326_525_clean.sql 共 2.5 MB。

图 1 是主站 articles/326.html「烽火岁月中的电台工作回忆」的渲染效果。
主站 lbh-main(43.160.224.*/24 段 IP 隐藏)端应用 SQL 前先做 dry-run 验证:用 Python 对 166 个 slug 做 IN 查询,主站 166/166 全部存在,无缺失。直接 mysql 命令导入 sync_326_525_clean.sql 即可。之后 ENV=prod python3 render.py –id {N} 逐篇渲染 166 个 id,首轮 165 篇成功,补渲遗漏 1 篇(id=405),全部无 500 错误。同步前后用 CHAR_LENGTH(body_html) 抽查两站 body_len 完全一致,确认同步成功。
URL 抽查环节第一次踩了坑:用了 https://www.lbh.red/article/{id}(单数 + 无 .html),5 个抽查全部 404。查 render.py 发现实际路径模板是 /articles/{id}.html,修正后抽查 14 个 id(含首段 326、中段 444、末段 525 + 随机 11 个),全部 HTTP 200。完整 166 个 URL 列表已写到本地 /tmp/main_326_525_urls.txt,用户可以据此逐篇复核。

图 2 是主站 articles/444.html「赖传珠日记 1945 年」的渲染效果。
本日截图全部用 Playwright 的 viewport 模式(1280×1500)+ full_page=False,3 张图共 1.4 MB,远低于 Day 38 早期 full_page 长图导致的 7-27 MB 单图膨胀问题。截图上传到 hk temp 站 wp-content/uploads/dev39/ 目录,通过 sudo mv 写入 www-data 属主,URL 全部 200 可访问。这是 Day 38 立下的「截图只用 viewport」铁律的延续,今天继续严格执行。
明日 Day 41 计划继续跑下一批 200 篇(526-725 区间),并处理 Day 38 立下但 Day 39/40 都未彻底解决的 quote_activity_names 模式扩展和 161 段全标点异常优化。GitHub 完整版 dev-log 已 push 到 fab7634,本篇为对外版 temp post 885。

图 3 是主站 articles/525.html「红军时期的电台政治工作」的渲染效果。
关于作者:WoodStoneOldWebsiteToNew 项目负责人,专注老网站(罗炳辉网站)迁移与复活
OpenClaw—AI研究