内容架构:一份数据,喂页面也喂 AI
2026-06-11约 25 分钟单一数据源Zod工程化
目标
落地「单一数据源」:个人资料只存在于 content/ 一处,页面和 AI 的 system prompt 都从这里读;内容写错要在构建期就炸掉,而不是上线后被面试官发现。
结果
content/schema.ts(Zod)定义资料形状,src/lib/content.ts在模块加载时就 parse——坏内容直接导致next build失败;npm run check:content:校验 schema + 扫描全仓库的【待填写:…】占位符并逐条列出,--strict模式有占位符即失败,投递前必跑;- 验收测试:故意把一个项目的 slug 改成非法值,脚本准确报错定位;改回后全绿。
踩坑与纠正
一个偏离计划的小决定:计划把 Zod schema 放在 src/lib/,实施时挪到了 content/schema.ts。理由有二:用户编辑内容时,「什么字段必填」的答案就在旁边;校验脚本可以用 node 原生 type-stripping 直接跑 .ts,不依赖打包器的路径别名。架构由 AI 提出、由人审定,但执行中发现更优解时允许偏离——偏离要留痕,这条就是留痕。
另一个小坑:node 直接跑 .ts 脚本会报模块类型警告,重命名为 .mts + package.json 加 "type": "module" 解决。
用时与备注
约 25 分钟,含 FAQ 十条问答的初稿撰写(其中「期望薪资」一条故意设计成展示拒答边界的彩蛋)。