← BACK
这顿吃什么
微信小程序 + Node 后端:录入冰箱食材让 AI 出菜谱,配份量换算、替代食材与做菜复盘
WeChat MiniProgramNode.jsExpressDeepSeek
ROLE · 全栈独立开发PERIOD · 2026-08 · 前端 30 个 js / 4,961 行,后端约 1,200 行
FEATURES
🧊
冰箱食材录入
食材库 + 自定义添加,数据存在小程序本地,不需要注册登录
🍳
AI 出菜谱
按冰箱现有食材与口味偏好推荐菜品,输出做法、所需厨具与还缺什么
⚖️
份量换算
按人数重算配料用量,而不是给一份固定菜谱
🔄
替代食材建议
缺某样材料时给出可替代方案,配合厨具白名单(24 项)过滤掉做不了的菜
📝
创意菜与复盘
支持自创菜谱生成,以及做完之后记录复盘(哪一步翻车、下次怎么改)
🔌
16 个后端接口
推荐、创意菜、菜谱知识、做菜助手、菜品库、份量、替代、复盘、参考、反馈
TECH
- ▸微信小程序原生 11 个页面(首页 / 厨房 / 推荐 / 菜谱详情 / 加食材 / 烹饪 / 菜品库 / 我的等)
- ▸Node + Express 后端约 1,200 行,DeepSeek 调用带 2 次重试 + JSON 提取与 sanitize
- ▸下厨房抓取:搜索页短 UA、详情页移动端 UA,全局互斥串行,结果进内存缓存(TTL 7 天)
- ▸取数优先级:本地菜谱库 → 内存缓存 → 抓取 → AI 兜底
项目概览
解决「今天吃什么」里的做饭那一半:把冰箱里现有的食材录进去,让 AI 给出能做的菜、缺什么、怎么做。
围绕这个主流程还长出了几件实用的小功能:份量换算(按人数重算配料而不是固定份量)、替代食材(缺料时给替代方案)、创意菜(自己想个组合让它出菜谱)、以及做菜复盘(做完记录哪一步翻车、下次怎么改)。
取数设计
菜谱数据来自下厨房,属于第三方页面,所以做了一条带缓存的取数链:
本地菜谱库 → 内存缓存 → 实时抓取 → AI 兜底
抓取时按页面类型切换 User-Agent(搜索页用短 UA、详情页用移动端 UA),并用一个全局互斥锁保证同一时刻只有一个抓取在跑,抓取结果进内存 Map 缓存(TTL 7 天)。AI 输出则会经过 JSON 提取与清洗,厨具不在白名单(24 项)里的菜会被过滤掉——避免推荐出用户根本做不了的菜。
真实的边界
这个项目的功能比我原先写的要少,需要如实说明:
- 「附近美食」并不存在:README 把它列为两大模式之一,但当前小程序代码里没有任何
wx.cloud、callFunction或getLocation调用;cloudfunctions/nearby(高德 POI 周边搜索)是从未被调用的遗留代码。目前只有「自己做饭」这一条线。 - 本地菜谱库实际不可用:后端启动时读取
recipes.json,但这个文件在仓库和本机都不存在,所以取数链的第一级是空的。 - 服务器上抓不到下厨房:运行日志里有
getaddrinfo ENOTFOUND www.xiachufang.com,抓取分支在线上环境不通。 - 抓取结果存在对不上的情况:实测用不相关的菜名请求,返回的是完全无关的果蔬汁菜谱,且标注来源为「下厨房」——没有触发降级。
- 未正式发布:小程序配置里的 appid 是测试号。
后端本身是上线运行的(https://api.weihong.xyz,PM2 + nginx),前端 apiBase 也指向生产域名,健康检查返回 {"ok":true}。开发在 2026-08-26 后暂停。
SCREENSHOTS
实机演示
小程序实际操作流程:录入冰箱食材、选择口味偏好、AI 生成菜谱与做法。