团队项目第一次作业
| 作业所属课程 | https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS |
|---|---|
| 作业要求 | https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS/homework/16767 |
| 作业目标 | 开发一个基于智能体或者多智能体的软件,为传统的软件赋予全新的功能和用户体验 |
| 团队名称 | 冰冰冰 |
| 团队成员学号-名字 | 林昕旸-3124005359(组长),刘文俊-3124004480,巫庆城-3124001541 |
团队展示:
队名:冰冰冰
团队项目的具体规划及描述:
做什么:做一个记忆冰箱智能体,提醒你快要坏掉了的蔬菜
具体功能实现:
F-01 食材入库
| 项 | 内容 |
|---|---|
| 输入 | 图片(≤5MB)或手动文本;确认后的字段集合 |
| 处理 | 压缩 → 多模态识别 → 候选列表(按品类预填保质期:叶菜 3 天、蛋 30 天、冷冻 90 天、调味 180 天)→ 用户确认 → 批量写 item与txn_log |
| 输出 | 入库结果与更新后的看板 |
| 异常 | 置信度 <0.6 的项标黄,须用户勾选才入库;识别超时切备用模型,仍失败降级为手动表单;重复名称提示「已有 2 批,是否合并」 |
| 约束 | 单次最多 20 项;保质期默认值可改 |
F-02 库存看板
| 项 | 内容 |
|---|---|
| 输入 | 筛选条件(存放区、分类、状态) |
| 处理 | 按expire_at-today分档,读时计算 |
| 输出 | 卡片列表,临期置顶 |
| 异常 | 已过期项置顶标灰,不自动删除 |
F-03 菜单编排(核心)
| 项 | 内容 |
|---|---|
| 输入 | 天数(默认 3)、每日时长上限(默认 25 分钟)、config.json里的avoid_foods |
| 处理 | ① 算紧急度urgency=1-daysLeft/shelfLife ② 降序取 Top-K 为「必须消耗集合」 ③ 以集合为种子让模型给 2–3 组候选菜 ④ 确定性可行性校验(库存够不够、时长超不超、是否触碰忌口) ⑤ 贪心选覆盖紧急食材最多且时长最优的组合 ⑥ 模型补做法与一句理由 |
| 输出 | menu_plan列表,每道菜标注「青椒 D-1 到期」「缺 1 样:蒜」 |
| 异常 | 库存不足则输出可做部分并提示缺口;模型不可用则用模板菜名,算法结果不变 |
| 可复现口径 | 比的是菜单所用食材组合,菜名与做法文案不纳入比对 |
F-04 购物清单
| 项 | 内容 |
|---|---|
| 处理 | 菜单用料 − 现有库存 = 缺料;追加低于阈值的常备品;按分区排序;同名合并数量 |
| 输出 | 可勾选清单,勾选完成即记录采购 |
| 异常 | 某样食材已被消耗时,刷新后自动从清单移除 |
F-05 浪费统计
| 项 | 内容 |
|---|---|
| 处理 | type=discard的数量 × 单价求和,按品类与月份聚合 |
| 输出 | 总额、次数、品类 Top3、月度趋势、一句人话总结 |
| 异常 | 无丢弃记录时显示「本月还没有丢弃记录」 |
F-06 应用内提醒
| 项 | 内容 |
|---|---|
| 处理 | P1 加载时读时计算,首屏横幅显示「今天有 2 样要优先吃掉」;月度小结在 P4 展示 |
| 约束 | 不做消息推送、不设定时任务、不做后台常驻 |
队员风采:
| 学号 | 3124005359 | 3124004480 | 3124001541 |
|---|---|---|---|
| 成员姓名 | 林昕旸(组长) | 刘文俊 | 巫庆城 |
| 成员性格 | 正常 | 稳重 | 有耐心 |
| 擅长的技术 | Python 基础,会写简单接口和数据库增删改查;模型接入、打包略有了解 | 数据库SQL技术 | 熟悉HTML/CSS/JS /TypeScript +Vue3 |
| 兴趣爱好 | 玩游戏,打羽毛球,听歌 | 阅读书籍 | 数码产品,运动,听歌 |
| 希望的软工角色 | 后端开发 | 测试 | 前端开发 |
团队的首次合照:

团队项目的愿景:希望通过这次的努力,可以打造出让人满意、觉得实用好用的冰箱记忆智能体,帮助大家解决日常生活中的小难题,便利我们的生活,同时也希望我们团队可以从这次的团队项目中能学习到软件开发的技巧,还有留下一次愉快的合作回忆。
需求分析:
前端描述:
P1 库存看板
首屏横幅:今天该优先吃掉的食材条
右上:「拍照入库」按钮,用一行网页标签调起相机
中部:食材卡片列表,按 expire_at − today 分档,≤1 天红、2–3 天黄、>3 天绿,过期项置顶标灰;可按存放区、分类筛选
卡片操作:「用掉」「扔了」「改数量」;写操作一律弹确认卡片
P2 对话页(智能体入口)
接收自然语言,展示工具调用过程;用户可说「今晚吃什么」「青椒用完了」「我不吃香菜」
写操作(入库、消耗、丢弃)必须弹确认卡片,点确认才执行
P3 菜单与清单页
上半:三天菜单卡片,每道菜可展开「为什么选它」与做法,标注「缺 1 样:蒜」
下半:购物清单,按生鲜/冷藏/调味/冷冻分区,可勾选
P4 统计页
本月丢弃金额、次数、品类排行、月度趋势
后端描述:
只用 Python 一种语言,其余都是现成工具。
| 名词 | 是什么 | 实际要做的事 |
|---|---|---|
| FastAPI | 写接口的库 | 函数上加一行路由声明,返回字典就自动变成接口数据 |
| uvicorn | 启动服务 | 一条命令跑起来 |
| sqlite3 | Python 自带的数据库 | 不用安装软件,建表和写查询语句 |
| 模型调用 SDK | 调模型的函数 | 一行调用,跟调写的函数一样 |
| PyInstaller | 打包成 exe | 开发后期一条命令 |
| 工具说明文本 | 描述工具的说明 | 告诉模型有哪些函数、各要什么参数 |
职责划分:模型负责表达,代码负责判断。
模型:看懂照片、理解「随便吃点」这类模糊说法、生成做法与推荐理由、记住忌口。
确定性代码:决定哪几样食材必须本周消耗、库存扣减与 FEFO、效期计算、金额统计、缺料比对。
需求分析文档:
【金山文档 | WPS云文档】 需求分析文档
https://365.kdocs.cn/l/cc2GtXMZzEox
浙公网安备 33010602011771号