Files
probably-rendering-one-more…/docs/learning-series.md

3.0 KiB

学习资料自己做

三个代码编写的图文作品,每篇 8 张 3:4 画板、10 项工具。三篇共用一张 1080×1440 PNG 封面,通过同一个 S3 图片资产引用,不复制图片。

篇章 详情路径 主题
01 /p/learning-skills-notes 笔记、网课与复习
02 /p/learning-skills-teaching 练习、试卷与教学
03 /p/learning-skills-english 词汇、精读、口语与写作

内容位于 src/content/learning-skills/data.ts,版式位于 Series.tsx 和 src/styles/learning-series.css。每篇依次为共同封面、索引、五张双工具介绍、使用路线与来源;支持分页、索引跳转、连续阅读与同系列跳转。所有小样标注为排版示意;GitHub 来源已于 2026-10-23 核对,尚未逐项安装实测。

public/learning-skills/cover.svg 是封面设计源稿,PNG 成品保存在 S3,路径及校验值登记于 managed-media.json,旧 /learning-skills/cover.png 路径通过媒体 API 提供,不依赖服务器安装中文字体重新渲染。

实际发布

存储初始化不会自动插入示例帖子。生产发布时,明确执行 Compose 的 publish 一次性容器,运行 publish-learning-series.cjs,在真实 PostgreSQL/S3 中发布这三篇。

发布使用稳定 ID、数据库事务和锁;重复发布更新相同作品,保留创建时间,不新增重复帖子、封面资产或贡献记录。遇到相同 slug 被其他作品占用时失败,不覆盖其他作品。封面对象按内容摘要命名,图片与独立文字资产通过 post_assets 引用。分类置于学习工具及对应的笔记复习、教学资料、英语学习分支。

Docker 集成测试会重复执行发布,检查三个作品、共用封面的三次引用、封面尺寸与媒体读取、分类筛选、详情 HTTP 200,以及没有擅自增加贡献。

验收约定

先推送 Git,再等 CI/CD 成功,最后直接访问服务器 http://8.211.154.134:18131/ 验收。不要启动本地网页预览,不把 localhost 作为展示或交付入口。

独立网页与真实截图(新版)

每篇笔记仍使用 /p/<slug>;每一张图的独立 HTML/CSS/TypeScript 原稿使用 /p/<slug>/pages/1 至 /pages/8。这些原稿没有网站导航与笔记说明,固定为 1080×1440;第一张封面也是可渲染的 SVG DOM,而非直接嵌入原来的 PNG。

笔记页展示 page_snapshots 引用的 S3 PNG,可打开原稿、刷新当前一张或更新全部。POST /api/posts/<slug>/snapshots 接收可选 {page: 1..8},GET 返回状态与截图列表。服务只允许代码登记的页面,不接受任意网址。后台 worker 使用 Chromium 截图,等待字体就绪,并检查内容没有压住页脚;网络请求只允许内部 Web 服务。完整一轮成功后在事务中更新引用,失败保留旧图。图片按摘要去重,三篇封面继续共用素材。

部署使用 Docker 内 Chromium 与中文字体,等待 24 张当前版本截图全部完成才确认发布。没有本地浏览器预览。