Files
what-to-eat/docs/decisions/0001-recipe-data.md
T

42 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 0001 菜谱数据的来源、质量与反馈闭环
- 状态:已实施(数据源为仓库 CSV,飞书已下线)
- 日期:2026-10-18
## 背景
菜谱维护在飞书电子表格里,维护者手动执行 `pnpm fetch` 导出为 `app/data/recipe.csv`。主要问题:
- 没有内容校验。首次校验发现 21 处错误:错别字(「葫芦卜」「方面」)、逗号代替顿号、不在词典里的食材(「肉」「虾仁」「木耳」)、不存在的难度「复杂」。食材写错的菜谱永远筛选不到。
- 失效视频只能等用户提 issue(#63、#83、#50、#47、#38)。
- 外部贡献者要先被拉进飞书才能改数据。
- 597 条中约 29% 缺难度、37% 缺做法。
## 方案对比
| 方案 | 贡献门槛 | 运营成本 | 质量保障 |
| ------------------------------------------------ | --------------- | ------------------- | ---------------------- |
| 继续飞书表格 | 需进飞书 | 手动 fetch 提交 | 无 |
| 飞书多维表格 + 表单 | 低 | 审核表单 + 定时同步 | 字段级校验 |
| 仓库 CSV 为唯一数据源,Issue / PR 贡献 + CI 校验 | Issue 表单或 PR | 只需审 PR | schema 校验 + 定期巡检 |
| 自建数据库后台 | 低 | 运维、鉴权、防灌水 | 自己写 |
## 决定
已实施(与数据源放在哪里无关,两条路线都需要):
- `pnpm validate` 在 CI 中校验食材、厨具词典、取值和视频号格式。
- 每周巡检 B 站视频,失效列表汇总到一个 issue。
- 详情页反馈入口和菜谱 Issue 表单。
- AI 审查做成仓库内的 `recipe-data-review` skill,由维护者在本地用 Codex / DeepSeek 等定期运行,只开 PR。不放在 GitHub Actions 里,避免 API Key 进仓库 Secrets,也不绑定某一家模型。
待定:数据源是否从飞书迁回仓库。倾向迁回仓库,不新开飞书表格(多一份数据只会多一处冲突)。
**结论:已迁回仓库。** `packages/data/recipe.csv` 是唯一数据源,`pnpm fetch` 与飞书依赖已移除;需要批量编辑时用飞书 / Excel 打开 `recipe.csv`,改完提 PR,CI 校验。
## 影响
- ~~收藏以行号为 id,因此不能删除或重排已有行。~~ 已由 [0002](./0002-feedback-and-ids) 引入固定 `id` 列解决;重复行(如「电饭煲版红烧肉」第 12/24 行)仍保留为警告,由维护者决定是否删除。
- 反馈入口用 GitHub Issue,没有 GitHub 账号的用户仍走原来的兔小巢 / 投稿表单。
- AI 只起草、不合并;不允许编造视频号。