0002 菜谱固定 id、应用内反馈与筛选信号
- 状态:已采纳
- 日期:2026-10-18
背景
- 收藏按菜谱在数据里的位置记录,删一行会让后面所有菜的收藏错位,数据因此不敢清理;#98 计划把收藏同步到云端,位置 id 一同步就会出错。
- 普通用户大多不用 GitHub,Issue 表单收不到他们的反馈。
- 想让 AI 定期优化筛选,需要真实的使用数据和一个能对比前后效果的评测。
方案对比
| 问题 | 方案 | 取舍 |
|---|---|---|
| 菜谱 id | 用位置(现状) | 不能删、不能重排 |
| 按菜名 + 视频算哈希 | 改菜名或换视频就变成另一道菜 | |
CSV 新增 id 列,取值等于现在的位置 | 已有收藏无需迁移,老版本客户端也兼容;需要校验防止改动或复用 | |
| 反馈渠道 | GitHub Issue | 普通用户不用 |
| 第三方表单(兔小巢、腾讯问卷) | 零开发,但要跳出应用、不带菜谱信息、难以自动汇总 | |
| 自建后台 | 要维护服务、登录、页面 | |
| CloudBase 云函数 + 集合 | 复用现有 CloudBase,没有新服务;未登录也能提交 | |
| 是否强制登录 | 强制 | 门槛太高,大部分人会放弃 |
| 不强制,登录后带上账号 | 匿名提交按设备限频;登录用户的反馈权重更高,也能回访 | |
| 管理后台 | 先做 /admin | 现阶段反馈量小,不划算 |
| skill 汇总 + PR 审核 + CloudBase 控制台 | 反馈量大到需要非开发者帮忙审核时再做只读看板 |
决定
recipe.csv新增id列。已发布的 id 不能修改或复用,新菜谱用最大 id + 1;CI 用pnpm validate --base对比目标分支。- 菜谱详情页一键反馈,写入
cook-feedback云函数;提交失败时退回 GitHub Issue 表单(现按 0012 保留内容,提供支持中心、可选邮件及 GitHub 入口)。 - 应用匿名记录「无结果的食材组合」和「点开了第几个结果」两类聚合信号,不含账号信息。
pnpm feedback:pull汇总反馈并生成评测样例test/fixtures/search-eval.json,pnpm eval:search评估排序。recipe-data-reviewskill 据此改数据、别名和排序,修改前后的评测指标写进 PR。- 反馈功能是普通网页代码,浏览器和云乐坊容器里都能用,不依赖 Capacitor,与 #98 下线独立 App 的计划一致。
影响
- 需要在 CloudBase 控制台建集合、部署函数、配置导出口令和 HTTP 访问,并允许未登录用户调用该函数(步骤见 菜谱数据)。在此之前,提交会失败并引导用户去 GitHub。
- 删除菜谱现在是安全的,只影响收藏了这道菜的用户;是否删除由维护者决定,skill 不会自动删除。