生活娱乐-食库管家:家庭冰箱食材进销存 + AI 智能配菜决策

0. 先和大家打个招呼吧 :waving_hand:

  • 我是谁:大家好,我是一名大二学生,平时喜欢折腾点小工具,也经常在宿舍煮点东西吃(我是大厨哦qwq)。

  • 我是怎么用 TRAE 把 Demo 做出来的:
    做这个 Demo 的过程,其实就像找一个特别耐心的搭档一起干活。我先在 TRAE 里把自己的想法一点点讲出来:"我想做一个管理冰箱食材的小工具,能记录买了什么、什么时候过期,最好还能根据现有食材推荐菜谱。"它一边听一边帮我拆成了具体的功能模块,还提醒我可能漏掉的地方。

    最让我惊喜的是,很多我以为要写好久的功能,TRAE 几分钟就能搭出个能跑的版本。比如食材知识库自动填充,我原本打算手动整理几十种食材就放弃了,结果 TRAE 帮我一次性生成了 439 种食材的保质期、存放分区和分类,直接省下了好几天的时间。

    当然也有卡壳的时候。单文件 HTML 双击打开白屏那次,我查了很久也没搞明白是 history 路由的问题,TRAE 帮我定位到 file:// 协议不支持 createWebHistory,改成 hash 路由后就解决了。那一刻真的觉得,有一个能随时讨论、还能直接给代码的助手太方便了。

  • 这个作品不算完美,但它是从我真实的生活痛点里长出来的。希望能被你们喜欢 :sparkles:


一. Demo 简介

食库管家是我做的一款家庭冰箱食材管理小工具,核心就是把冰箱里的食材“记清楚”,顺便用 AI 帮你决定“今天吃什么”。

它把平时家里会遇到的进销存问题——买了什么、还剩多少、什么时候过期——和 AI 配菜结合在一起,目标是让你打开冰箱时心里有数,减少因为忘了吃而浪费的食材。

  • 产品形态:移动端 Web 应用,纯前端单文件 HTML,双击就能在浏览器里跑,不用安装、不用配服务器

  • 面向谁:主要是家里做饭的人,或者像我这种宿舍里想自己开火的;也可以放办公室茶水间大家共用

  • 核心功能(3 个):

    1. 食材台账管理:
      内置了 439 种常见食材,输入名字能自动带出保质期、存放分区、分类,支持入库、编辑、出库、删除这些基础操作
      2.三色临期预警:
      自动算每种食材还能放几天,用绿/黄/红/灰四级显示,红色会触发呼吸动画提醒
      3.AI 菜谱推荐:
      接入了 DeepSeek、智谱清言、OpenAI、Moonshot 几家大模型,根据冰箱里现有食材和口味偏好生成 5-6 道菜谱,会优先推荐用掉临期食材;没配 AI 时也会用本地菜谱兜底
  • 产品截图

  1. 首页

  1. 库存

  1. AI设置(配置API-key)

  1. AI智能生成食谱功能

  1. 报表总览


二. Demo 创作思路

  • 灵感来源
    这个想法其实是从我自己的生活里长出来的。

    每次打开宿舍小冰箱,总能翻出一些已经过期的东西:上周买的青菜忘了吃、半个月前的牛奶鼓包了、冷冻层的肉也不知道放了多久。更常见的是,明明冰箱里还有不少东西,却还是每天为“今天吃什么”发愁,最后又点了外卖。

    我观察下来,家里食材浪费的原因很多时候不是不想节约,而是:看不见、想不起、不会搭。买回来塞进去就忘了,临期不知道,过期才发现;就算记得有,也不知道怎么搭配成一道菜,最后只能眼睁睁看着它坏掉。

  • 想解决的真实痛点

  1. 食材过期浪费—买回来的食材忘记吃,发现时已过期,只能扔掉,既浪费钱又浪费食物
  2. 库存不清—不知道冰箱里还剩什么,去超市又重复购买,回家发现还有一堆
  3. 不知道做什么菜—面对一堆食材不知道如何搭配,每天“今天吃什么”成了难题
  4. 采购无计划—缺什么记不住,到超市才临时想,经常漏买关键食材
  • 为什么做这个方向
  1. “进销存 + AI 配菜”比单纯记账有用
    市面上食材记录 App 不少,但大多只帮你记。我觉得真正有价值的是下一步:知道有什么之后,直接告诉你怎么吃。AI 菜谱推荐就是把库存数据变成“今天可以做什么菜”,解决“不知道吃什么”的痛点。
  2. 做单文件 HTML,降低体验门槛
    比赛评审和用户都不愿意先装环境、配数据库。我把它打包成单个 HTML 文件,双击就能打开,零门槛体验,才能让产品的价值被真正感受到。
  3. 让 AI 优先消耗临期食材
    AI 不是随便推荐几道菜,而是优先用快过期的食材。这样“食材管理”和“配菜决策”就连起来了:临期食材越早被用掉,浪费就越少。

三. Demo 体验地址

  • 本次提交的是一个交互式 HTML 文件,下载后可以直接运行。

食库管家html体验.zip (220.4 KB)

  • 体验方式
  1. 下载本帖附件的 zip 压缩包
  2. 解压后得到 index.html
  3. 双击 index.html,用 Chrome / Edge / Firefox / Safari 打开即可
  4. 使用默认账号登录:账号 admin / 密码 123
  • 技术说明
  1. 文件大小约 700 KB,社区限制 20 MB 以内,完全满足
  2. 支持离线运行,核心功能(入库/出库/查询/预警)不需要联网
  3. AI 菜谱需要联网调用你自己配置的 API Key,没配置时会自动降级为本地菜谱
  4. 数据存在浏览器 LocalStorage 里,不上传服务器,隐私上比较安全

四. TRAE 实践过程

这一部分记录我用 TRAE 完成食库管家的全过程。

  • 4.1 整体开发流程

  • 4.2 关键任务与 Session ID

以下是开发过程中几个关键任务的对话 Session ID

  1. 产品开发规格文档生成
任务:
/spec 基于以下已评审的需求基线,生成项目完整开发Spec: 
 1. 输出 spec.md:项目目标、核心功能模块、技术选型建议、范围边界、核心设计决策 
 2. 输出 tasks.md:按依赖顺序拆解分层开发任务,标注优先级 P0/P1/P2 
 3. 输出 checklist.md:对应每个功能点的可量化验收标准 
 所有文件存入 .trae/specs/ 目录 
 需求基线: `c:\Users\H1314\Desktop\TRAE食库管家\APP\结构化需求清单.md`

Session ID
.4122491384764796:c3556be68486b2c76530f4801b621c0e_6a3f83737295fa5d7de3ccf6.6a3f83827295fa5d7de3ccf8.6a3f838208580dc076a5e631:Trae CN.T(2026/6/27 16:02:10)
  1. 骨架代码生成
1.DB 层
任务一:按照开发计划,生成用户模块数据层代码: 
 1. DO 实体类:UserDO,对应 sys_user 表,使用 MyBatis-Plus 注解 
 2. Mapper 接口:UserMapper,继承 BaseMapper,附带基础CRUD 
 3. 自定义查询在 XML 中编写,必须使用参数化查询,禁止字符串拼接 
 所有类放在对应包下,添加完整类注释与方法注释。
Session ID
.4122491384764796:8ef04681d47e5a90437d0e86d7dc1a6d_6a3f83737295fa5d7de3ccf6.6a3f9d6b7295fa5d7de3cf2a.6a3f9d6b08580dc076a5e638:Trae CN.T(2026/6/27 17:52:43)


2.Service 层
任务二:生成用户模块 Service 层代码: 
 1. UserService 接口 + UserServiceImpl 实现类 
 2. 实现分页查询、新增、编辑、删除、状态修改、重置密码方法 
 3. 新增/编辑做参数合法性校验,删除为逻辑删除 
 4. 业务异常抛出自定义异常类,核心写操作添加 @Transactional 事务注解 
 5. 密码使用 BCrypt 加密存储 
 遵循分层规范,禁止越权操作,补充必要业务注释。
Session ID
.4122491384764796:b3b029c9cb97c36da4a047249b228e80_6a3f83737295fa5d7de3ccf6.6a3f9e387295fa5d7de3cf60.6a3f9e3808580dc076a5e639:Trae CN.T(2026/6/27 17:56:08)


3.Controller 层
任务三:生成用户模块 Controller 层与入参出参类: 
 1. UserController,RESTful 风格接口,路径统一前缀 /system/user 
 2. 对应 Service 层所有方法,封装统一返回结果 
 3. 入参使用 DTO 对象,添加参数校验注解(@NotBlank、@NotNull、@Size 等) 
 4. 接口添加权限注解,标注所需角色/权限标识 
 5. 出参使用 VO 对象,屏蔽敏感字段(如密码、盐值) 
 生成对应的 DTO、VO 类,放在对应包下。
Session ID
.4122491384764796:78e88c0b1fea9028e90dad520ab9aa44_6a3f83737295fa5d7de3ccf6.6a3f9f907295fa5d7de3cfd5.6a3f9f8f08580dc076a5e63a:Trae CN.T(2026/6/27 18:01:52)
  1. AI 菜谱推荐功能实现
任务:Implement the code according to the implementation plan provided in file `c:\Users\H1314\Desktop\TRAE食库管家\APP\AI菜谱推荐_实现方案.md` . You may make appropriate modifications to the original plan as needed, provided that the following requirements are met: 1) The code must be fully functional and run without errors in the specified development environment; 2) All core functional requirements outlined in the implementation plan must be satisfied; 3) The implementation must adhere to basic coding standards and best practices for maintainability. Focus on delivering a working solution that meets the specified business needs while ensuring code stability and correctness.

Session ID
.4122491384764796:09ad6053b619e09cbb95c2b200e59c65_6a409894a874a3ede6f07ef5.6a437fe4e052c31108bcef3e.6a437fe48c638326339a9e99:Trae CN.T(2026/6/30 16:35:48)
  1. 美化主题修改前端代码
任务:在保持现有所有功能接口及互动按钮完整可用的前提下,对前端页面进行全面美化与视觉重构。设计需围绕食物、食谱及冰箱三大核心元素构建主题鲜明的界面,确保整体视觉效果符合现代用户审美标准,色调系统保持高度统一与和谐。色彩方案应避免使用高饱和度配色,优先选择柔和、自然的色调组合。 
 
 为提升用户体验,需为不同类别的食材设计专属底色标识系统,确保用户能够通过颜色直观区分各类食材。针对临期食品,需设计醒目的视觉提醒机制,可采用颜色预警(如黄色表示即将过期,红色表示已过期)、图标提示及位置优先级调整等多种方式组合实现。 
 
 完成设计后,需输出一份详细的前端设计说明文档(Markdown格式),并存储于项目主文件夹根目录下。该文档应包含界面设计理念、色彩规范、元素布局说明、交互逻辑说明及关键视觉元素的实现细节等内容。

Session ID
.4122491384764796:4c2f5626d7bdf9a21a651c27f338f952_6a43ff23611392bc29d1f6ad.6a44008b611392bc29d1f6b7.6a44008b674b21c1d5b1352b:Trae CN.T(2026/7/1 01:44:43)
  1. 食材知识库构建
任务:我将提供一份食材知识库文档 `c:\Users\H1314\Desktop\TRAE食库管家\APP\食材知识库-300种常见食材.md` ,请基于该文档实现一个食材入库辅助功能。该功能需要在用户进行食材入库操作时,根据食材名称自动匹配并填写分类、单位、保质期天数及存放分区等信息。系统自动填写的信息应允许用户进行手动修改和调整,以适应实际情况。请确保自动填写的信息准确对应文档中的食材数据,并提供友好的用户交互界面,方便用户查看和修改自动填充的内容。

Session ID
.4122491384764796:9895d39676e83e15a9aeb020f0a1f710_6a45ff8e48d6dcd6127c8112.6a46030448d6dcd6127c81eb.6a4603038cb9dd82ee420ac1:Trae CN.T(2026/7/2 14:19:48)
  1. 以下为开发过程截图补充

  • 4.3 几个关键技术决策的思考过程

  1. 决策一:为什么用 daysLeft(剩余天数)排序而非 status(状态分级)做 AI 输入?
    一开始我想直接把 green/yellow/red 这些状态传给 AI。但后来和 TRAE 讨论后意识到,status 是粗分,daysLeft 是精确数字。比如同样是 red,鸡蛋只剩 2 天,鸡胸肉还有 3 天,鸡蛋显然更应该优先用。所以最后在 Prompt 里注入了准确的剩余天数,并加上**【紧急消耗】【临期】**这些标签,让大模型自己判断优先级。

  2. 决策二:AI 降级兜底策略
    Demo 演示时最怕的就是网络或 API 出问题。我设计了一条完整的降级链路:

    没配 API Key → 直接返回 5 道本地经典菜谱
    API 超时 / CORS 拦截 / 401 / 429 / 5xx → 自动降级为本地菜谱
    顶部显示黄色降级提示条,告诉用户当前是本地菜谱
    这样就算断网,演示也不会翻车,核心功能链路仍然是完整的。

  3. 决策三:单文件 HTML 的路由选择
    做单文件交付时我踩了个坑:用 createWebHistory 路由,双击用 file:// 协议打开时,页面跳转直接失效。后来和 TRAE 一起排查,改成 createWebHashHistory(hash 路由),#/inventory 这种锚点跳转即使在 file:// 下也很稳定,路由守卫、params、query 都能正常用。

  4. 决策四:食材分类的专属底色系统
    为了让用户一眼看出食材属于哪一类,我给 5 类食材设计了专属底色,灵感来自食材本身的视觉联想:蔬菜用鼠尾草绿、肉禽蛋奶用暖玫瑰、水产用雾霾蓝、干货调料用暖驼、速冻食品用冰灰蓝。通过卡片左侧 4px 色条 + 浅底实现,颜色不只是好看,也承载了“新鲜→临期→过期”的渐进语义。


五. 技术实现概览


六.功能模块清单


七.开发心得

做这个项目最大的感受是:AI 辅助开发真的能把“想法到产品”的距离拉近很多。

以前要做这样一个应用,从需求梳理、UI 设计、前端开发到联调,少说也要几周。这次用 TRAE,我把主要精力放在“想清楚要做什么”和“把关关键决策”上,具体的代码实现交给 AI 完成,效率提升非常明显。

几个具体感受:

  1. 需求想清楚比代码写得多更重要 我花了不少时间用 TRAE 整理结构化需求清单,明确边界约束。不做什么和做什么同样重要,这能让后面的开发方向更清晰,少走很多弯路。
  2. AI 降级策略是 Demo 的生命线 演示最怕翻车。设计完整的降级链路后,即使断网、API 失败,核心体验也依然完整。这个思路我觉得所有 Demo 项目都可以借鉴。
  3. 单文件交付降低体验门槛 双击即用、零配置,让评审和用户能第一时间接触到产品价值。比起需要配环境的方案,单文件的体验转化率明显更高。
  4. 视觉一致性提升专业感 统一的暖意厨房主题、莫兰迪色系、分类专属底色,让产品看起来不像临时拼凑的 Demo,更像是一件用心打磨的作品。

八.报名帖链接

已通过的社区报名帖链接:

2 个赞

大二就能做出这么完整的产品,厉害!"冰箱食材进销存+AI配菜"这个组合很实用。

你们用AI解决"食材管理+配菜决策",我们用AI解决"服饰识别+知识查询",都是把垂直领域的专业知识结构化,然后用AI降低使用门槛。

识蕴的做法是构建了79个维度的汉服知识图谱(朝代、形制、等级、工艺),基于1333张文物级标注数据。你们的食库管家应该也需要建立"食材知识库+配菜规则库"。

垂直AI产品的难点都在于"知识怎么来、怎么结构化、怎么让AI准确理解"。同为垂直AI赛道,交流下经验 [握手]
我们作品:生活娱乐赛道 + 识蕴 AI汉服图鉴社交小程序

1 个赞

大家快来找我交流心得哦

2 个赞

很喜欢这个功能,很实用,感觉可以不止食材,家庭中购买的各类消耗品,纸,洗漱用品,零食饮料,等等,都可以进行进销存记录,还可以记录保存位置。

1 个赞

哈哈,"看不见、想不起、不会搭"这三个词总结得太精准了,冰箱食材浪费确实是每个做饭的人都会遇到的真问题,这个切入点我很喜欢。
几个我觉得做得很用心的地方:439种食材知识库自动填充这个体验应该很爽,不用手动输保质期和分区;AI优先消耗临期食材的设计把"管理"和"决策"串起来了,不是单纯记账;本地菜谱降级兜底也考虑到了Demo演示时断网的尴尬。

说个小建议:你这个项目完全可以部署一个在线版啊,用 Vercel 或者 GitHub Pages 把 HTML 托管上去,评委和网友直接点链接就能体验,不用下载zip再解压。现在比赛帖子里能直接点开体验的项目更容易被投票,毕竟很多人懒得下载。部署的话,把 Vue Router 的 hash 模式保持不变,静态文件直接扔上去就行。

已投票支持!欢迎来交流~顺便也贴一下我的项目:

帖子:【社会服务赛道】DPU·需求势能引擎:让AI通过12维需求分析,读懂你话语背后的真实意思(含人格模拟|装逼检测|智能对话分析) 在线体验:http://122.51.21.225

1 个赞