# SmartDietManager **Repository Path**: zeron2022/smart-diet-manager ## Basic Information - **Project Name**: SmartDietManager - **Description**: 一款基于 Qt/QML 开发的跨平台家庭饮食管理应用。旨在解决“吃什么”与“营养管理”痛点,核心采用 Mifflin-St Jeor 公式精准计算 TDEE/BMR,结合 WebSocket 实现家庭成员间 <2s 的实时数据同步。项目严格遵循分层架构与企业级安全规范(Argon2id),涵盖智能菜谱推荐、冰箱库存 FIFO 核销及 OCR 食材识别等完整闭环功能。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-26 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🍳 智能家庭饮食管家 (SmartDietManager) > 让饮食规划高效化,让营养搭配科学化,让家庭协作更温馨。 > > **版本**:v0.5.0 · **平台**:Windows / macOS / Linux · **引擎**:Qt 6.9 + QML --- ## 📊 已实现功能 ### 用户与认证 | 功能 | 说明 | |------|------| | 邮箱/手机号/用户名注册 | 收集身高、体重、年龄、性别、健身目标 | | TDEE/BMR 自动计算 | Mifflin-St Jeor 公式,减脂×0.8 / 增肌×1.15 | | 登录 / Session 持久化 | QSettings 记住登录,启动跳过登录页 | | Argon2id 密码哈希 | 64MB / 3轮 / 4并行 / 16B salt / 32B hash,老旧 SHA-256 自动升级 | | 退出登录 | 清除 Session→退出应用 | ### 家庭管理 | 功能 | 说明 | |------|------| | 创建家庭 | 自动生成 6 位邀请码,创建者自动成为户主 | | 加入家庭 | 输入邀请码加入,去重校验 | | 成员管理 | 户主可移交、移除成员 | | 家庭解散 | 户主专属,事务内 7 步级联删除(软删+物删) | | 邀请码查看 | 仅户主可见 | ### 食材库(107 种) | 功能 | 说明 | |------|------| | 食材浏览 | 列表展示,每 100g 热量/蛋白/碳水/脂肪 | | 食材详情 | 完整营养数据 + 类别标签 | | 预置种子数据 | 首次安装自动注入 107 种食材(肉/水产/蔬菜/主食/乳制品/调味料/其他) | ### 菜谱库(40 道) | 功能 | 说明 | |------|------| | 菜谱浏览 | 双列流布局,kcal/100g + 烹饪时间 + 默认 N 人份 | | 菜谱详情 | 总营养、每 100g 营养、食材清单、标签 | | 创建菜谱 | 表单 + 食材勾选 + 数量输入 + 自动计算总营养 | | 编辑/删除 | 回填已有食材 + 软删除 + 列表自动刷新 | | 搜索 | 实时文本过滤 | | 收藏 | 心形按钮 toggle | | 标签系统 | 21 标签池(减脂/增肌/辣/蒸煮/宴客…),Flow 筛选 + 编辑选择 | ### 每日菜单推荐引擎 | 功能 | 说明 | |------|------| | 三餐独立推荐 | 早餐/午餐/晚餐各 N 道,可调道数 | | 贪心选菜算法 | 按营养比例评分,优先选最接近目标的 | | 份数自适应 | 1.0~N×2.5 倍,步长 0.5 | | 全天不重复 | 三餐间不出现相同菜谱 | | 营养对比图 | Canvas 四柱对比(热量/蛋白/碳水/脂肪) | | 一键全天生成 | 三顿一起生成 | | 单品调节 | 每道菜的份数±按钮 | | 锁定/换菜 | 锁定不参与替换,换一换从同类池中抽取 | ### 采购清单 | 功能 | 说明 | |------|------| | 冰箱感知 | 需购量 = 菜谱需求 − 冰箱已有库存 | | 分类聚合 | 按 meat→seafood→vegetable→staple→dairy→condiment 排序 | | 可调购买量 | 每项 ±50g 自由调整 | | 一键入库 | 确认采购后写入 inventory_batches 表 | ### 冰箱库存 | 功能 | 说明 | |------|------| | 库存展示 | 3 列网格,同食材多批次自动合并 | | 入库天数色条 | 🟢 < 3 天 / 🟡 4~7 天 / 🔴 > 7 天 | | 分类筛选 | 7 个胶囊按钮(全部/肉类/水产/蔬菜/主食/乳制品/调味料) | | FIFO 核销 | 先进先出扣减指定食材 | | 食材聚合 | 多批次总量汇总 | ### 设计系统 | 组件 | 说明 | |------|------| | Theme 单例 | 10 色 + 字号/间距/圆角/动效,QML 全局引用 | | Icon 组件 | Material Icons Outlined 字体 | | 底部导航栏 | TabBar 4 标签(首页/冰箱/菜谱/我的) | | StackView 路由 | Page 切换 | --- ## 🔮 计划中功能 | 阶段 | 内容 | 优先级 | |------|------|:--:| | 掌勺人切换 | 家庭成员轮值,口味偏好倾斜算法 | 高 | | 心愿单 | 成员推荐想吃但未推荐的菜谱,下次优先纳入推荐 | 高 | | 个人中心编辑 | 修改身高/体重/目标,自动重算 TDEE(前次因 QML 稳定性回退) | 高 | | 饮食模式切换 | 减脂/增肌/维持/聚餐/放纵餐,动态调整 TDEE 系数 | 中 | | 冰箱过期提醒 | 过期食材高亮 + 推荐菜谱消耗临期食材 | 中 | | 烹饪核销 | 掌勺人确认扣减库存 + 生成消费记录 + 同步 | 中 | | WebSocket 数据同步 | 多端实时同步,离线自动降级,断点续传(阶段 8) | 低 | | PostgreSQL 云端存储 | 远程中央存储替代 SQLite(阶段 8) | 低 | | 多语言国际化 | i18n 支持中/英文 | 低 | | OCR 小票扫描 | 拍照导入食材 | 低 | | 自动测试套件 | C++ 单元测试 + QML 组件测试 | 低 | --- ## 🛠️ 技术架构 | 层级 | 技术 | 模式 | |------|------|------| | UI | QML + JavaScript | QQmlApplicationEngine + StackView | | 业务 | C++17 | Service 层(QObject + Q_INVOKABLE) | | 数据 | SQLite 3 (WAL) | Repository 模式(CRUD + 软删除 + 乐观锁) | | 密码 | Argon2id | 静态链接 libargon2 | | 构建 | CMake 3.28+ | MSVC 2022 / GCC / Clang | --- ## 📁 项目结构 ``` src/ ├── app/main.cpp # QML 引擎入口 + 依赖注入 ├── core/ # Service 层(Auth/Menu/Purchase/Fridge/Recipe…) ├── data/ # Entity + Repository + DatabaseManager ├── network/ # SyncManager(暂桩) ├── ui/ │ ├── qml/ # 页面与组件 │ └── styles/Theme.qml # 主题单例 ├── utils/ # UUID / 时间 / ORM / 常量 resources/ ├── schema/sqlite_schema.sql # 23 表 + 35+ 索引 DDL ├── fonts/ # Material Icons docs/ ├── 设计文档 (001~009) ├── dev-log/ # 每日开发日志 └── study/ # 学习笔记(101~501) ``` --- ## 🚀 运行 1. 安装 Qt 6.9 (MSVC 2022) 2. `cmake -B build -DCMAKE_PREFIX_PATH=` 3. `cmake --build build` 4. 部署时需将 `Qt6Sql`、`Qt6Quick` 等 dll 放到 exe 同目录 --- ## 👤 开发 单人开发 · 杭州 · 2026