461 lines
20 KiB
Markdown
461 lines
20 KiB
Markdown
# 📋 未完成功能清单
|
||
|
||
> 文档创建: 2026-04-09
|
||
> 最后更新: 2026-04-10
|
||
> 数据来源: `LOCAL_FEATURES_PLAN.md` 阶段三~五 + 项目全面分析
|
||
> 说明: 记录所有未完成的功能任务,跟踪开发进度
|
||
> 优先级说明: P1=核心功能 P2=重要功能 P3=增强功能
|
||
> 优先级值1-5: 5=最高优先级(多次提及自动提升)
|
||
|
||
---
|
||
|
||
## 📊 总体进度
|
||
|
||
| 阶段 | 总任务 | 已完成 | 未完成 | 完成率 |
|
||
|------|--------|--------|--------|--------|
|
||
| 三:热量追踪+营养分析 | 7 | 7 | 0 | 100% ✅ |
|
||
| 四:购物清单 | 5 | 5 | 0 | 100% ✅ |
|
||
| 五:增强功能 | 7 | 7 | 0 | 100% ✅ |
|
||
| 六:主页体验优化 | 5 | 5 | 0 | 100% ✅ |
|
||
| Bug 修复 | 19 | 19 | 0 | 100% ✅ |
|
||
| 七:今天吃什么增强 | 5 | 5 | 0 | 100% ✅ |
|
||
| 八:API v2.0.0 迁移+Bug修复 | 9 | 9 | 0 | 100% ✅ |
|
||
| 九:架构修复+核心Bug | 6 | 0 | 6 | 0% 🔴 |
|
||
| 十:代码质量提升 | 5 | 0 | 5 | 0% 🟡 |
|
||
| 十一:烹饪模式+营养仪表盘 | 4 | 0 | 4 | 0% 🟢 |
|
||
| 十二:社交+通知增强 | 4 | 0 | 4 | 0% 🟢 |
|
||
| 十三:AI+规划高级功能 | 4 | 0 | 4 | 0% 🔵 |
|
||
| **合计** | **80** | **57** | **23** | **71%** |
|
||
|
||
---
|
||
|
||
|
||
|
||
|
||
|
||
### 技术要点
|
||
|
||
- `ShoppingItemModel` 已有 `category` 字段,分类展示直接用 `groupby`
|
||
- 勾选已购用 `isChecked` 字段,写入 Hive 持久化
|
||
- 从菜谱添加需解析 `RecipeModel.ingredients`,转为 `ShoppingItemModel` 列表
|
||
- 购物清单页面需 iOS26 Liquid Glass 风格
|
||
|
||
### 已完成文件清单
|
||
|
||
| 文件路径 | 说明 |
|
||
|---------|------|
|
||
| `lib/src/controllers/shopping/shopping_list_controller.dart` | 购物清单控制器 |
|
||
| `lib/src/pages/shopping/shopping_list_page.dart` | 购物清单页面 |
|
||
| `lib/src/models/shopping/shopping_item_model.dart` | 购物清单模型(已存在) |
|
||
|
||
### 路由
|
||
|
||
| 路由路径 | 页面 |
|
||
|---------|------|
|
||
| `/shopping-list` | 购物清单页面 |
|
||
|
||
---
|
||
|
||
## 🟡 阶段五:增强功能(P2/P3)
|
||
|
||
**目标**:烹饪计时器 + 用量换算 + 过敏原检测 + 烹饪笔记 + 用餐提醒 + BMI + 份量缩放
|
||
**前置依赖**:各功能独立,无强依赖
|
||
**关键阻塞**:5.5 用餐提醒需 `flutter_local_notifications`
|
||
|
||
| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|
||
|------|------|---------|--------|------|------|
|
||
| 5.1 | 烹饪计时器页面 | `lib/src/pages/tools/cooking_timer_page.dart` | P2 | ✅ 已完成 | 已添加入口到"我的"首页 |
|
||
|
||
### 开发顺序建议
|
||
|
||
|
||
|
||
---
|
||
|
||
## 🟡 阶段七:今天吃什么增强(P1)
|
||
|
||
**目标**:实现接口支持的动态筛选功能
|
||
**前置依赖**:接口已支持(`api_what_to_eat.php` v1.24.0)
|
||
**分析结论**:接口已完整支持随机/智能/分类/标签/营养素筛选,APP端未调用
|
||
|
||
| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|
||
|------|------|---------|--------|------|------|
|
||
| 7.1 | 实现分类筛选UI | `what_to_eat_page.dart` | P1 | ✅ 已完成 | 显示接口返回的分类列表供选择 |
|
||
| 7.2 | 实现标签筛选UI | `what_to_eat_page.dart` | P1 | ✅ 已完成 | 显示接口返回的标签列表 |
|
||
| 7.3 | 实现营养素筛选UI | `what_to_eat_page.dart` | P1 | ✅ 已完成 | 热量/蛋白质/脂肪范围滑块 |
|
||
| 7.4 | 调用 available_filters 接口 | `what_to_eat_repository.dart` | P1 | ✅ 已完成 | 根据已选条件获取可用筛选 |
|
||
| 7.5 | 保存筛选偏好 | `HiveService` | P2 | ✅ 已完成 | 本地记住用户偏好 |
|
||
|
||
### 接口分析
|
||
|
||
| 端点 | APP调用 | 说明 |
|
||
|------|---------|------|
|
||
| `act=random` | ✅ 已调用 | 随机模式 |
|
||
| `act=smart` | ✅ 已调用 | 智能模式(仅用偏好) |
|
||
| `act=config` | ✅ 已调用 | 获取配置 |
|
||
| `act=subcategories` | ✅ 已调用 | 获取子分类 |
|
||
| `act=available_filters` | ✅ 已调用 | 动态筛选 |
|
||
|
||
### 筛选参数(接口支持)
|
||
|
||
| 参数 | 类型 | APP实现 |
|
||
|------|------|--------|
|
||
| `include_categories` | int[] | ✅ 已实现 |
|
||
| `exclude_categories` | int[] | ✅ 已实现 |
|
||
| `include_tags` | int[] | ✅ 已实现 |
|
||
| `exclude_tags` | int[] | ✅ 已实现 |
|
||
| `exclude_allergens` | string[] | ✅ 已实现 |
|
||
| `nutrition` | string | ✅ 已实现 |
|
||
|
||
### 验收标准
|
||
- [x] 支持分类多选筛选
|
||
- [x] 支持标签多选筛选
|
||
- [x] 支持营养素范围筛选
|
||
- [x] 筛选结果实时更新
|
||
|
||
---
|
||
|
||
## 🔵 阶段八:API v2.0.0 迁移 + Bug修复(P0/P1)
|
||
|
||
**目标**:迁移到 API v2.0.0 合并接口,修复用户反馈的8个严重Bug
|
||
|
||
|
||
|
||
---
|
||
|
||
## 🔴 阶段九:架构修复+核心Bug(P0/P1)
|
||
|
||
**目标**:修复架构违规和核心功能缺失
|
||
**发现时间**:2026-04-10(flutter analyze 全面扫描 + 项目分析)
|
||
**关键阻塞**:无
|
||
|
||
| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|
||
|------|------|---------|--------|------|------|
|
||
| 9.1 | 热门排行点击跳转详情 | `lib/src/pages/hot/hot_page.dart` | P0 | ❌ 未修复 | L148 有 TODO,点击无响应,需跳转到 RecipeDetailPage |
|
||
| 9.2 | 首页改用 Repository 层 | `lib/src/pages/home_page.dart` | P0 | ❌ 未修复 | 直接使用 `_apiService` 绕过 Repository,需改为 `RecipeRepository` |
|
||
| 9.3 | 合并收藏功能(去重) | `cart_controller.dart` + `favorites_controller.dart` | P1 | ❌ 未修复 | CartController 实为收藏功能但命名混乱,需统一为 FavoritesController |
|
||
| 9.4 | 合并搜索控制器(去重) | `search_controller.dart` + `search/search_controller.dart` | P1 | ❌ 未修复 | 两个搜索控制器并存,需合并为一个 |
|
||
| 9.5 | 聊天页面功能化或移除 | `lib/src/pages/chat_module/chat_page.dart` | P2 | ❌ 未修复 | 纯 Demo 硬编码消息,需接入真实功能或移除入口 |
|
||
| 9.6 | 多语言词条扩充 | `app_zh.arb` / `app_en.arb` | P1 | ❌ 未修复 | 仅 21 词条,大量中文硬编码,需补全页面文字 |
|
||
|
||
### 问题详情
|
||
|
||
#### 9.1 热门排行点击无法跳转详情
|
||
- **现象**:热门排行列表项点击无响应
|
||
- **代码位置**:`hot_page.dart:148` — `// TODO: 点击跳转到菜谱详情页`
|
||
- **方案**:使用 `Get.toNamed('/recipe-detail', arguments: item.id)` 跳转
|
||
|
||
#### 9.2 首页绕过 Repository 层
|
||
- **现象**:`home_page.dart` 直接 `final ApiService _apiService = ApiService()`
|
||
- **影响**:违反架构分层,无法统一缓存/错误处理/数据转换
|
||
- **方案**:改为 `final RecipeRepository _recipeRepository = RecipeRepository()`,通过 Repository 获取数据
|
||
|
||
#### 9.3 收藏功能重复
|
||
- **现象**:`CartController` + `CartPage` 和 `FavoritesController` + `FavoritesPage` 两套并存
|
||
- **影响**:收藏状态不同步,代码冗余
|
||
- **方案**:
|
||
1. 删除 `CartController` + `CartPage`
|
||
2. 将 CartController 的 quantity 逻辑合并到 FavoritesController
|
||
3. 底部 Tab 收藏入口统一指向 FavoritesPage
|
||
|
||
#### 9.4 搜索控制器重复
|
||
- **现象**:`controllers/search_controller.dart` 和 `controllers/search/search_controller.dart` 两个文件
|
||
- **影响**:搜索逻辑分散,修改一处容易遗漏另一处
|
||
- **方案**:保留 `search/search_controller.dart`(目录结构更规范),删除根目录版本,更新所有引用
|
||
|
||
#### 9.5 聊天页面
|
||
- **现象**:`ChatPage` 只有硬编码消息 `{'text': '你好,这是聊天示例。', 'me': false}`
|
||
- **方案A**:接入 AI 聊天 API(如菜谱问答)
|
||
- **方案B**:改为"意见反馈"页面
|
||
- **方案C**:移除入口,待后续有需求再添加
|
||
|
||
#### 9.6 多语言覆盖率
|
||
- **现象**:`app_zh.arb` 仅 21 词条,大量页面文字如"今天吃什么"、"热门排行"、"我的足迹"等硬编码
|
||
- **方案**:逐页面提取硬编码文字到 arb 文件,优先覆盖核心页面(首页、搜索、详情、发现)
|
||
|
||
### 开发顺序建议
|
||
|
||
```
|
||
9.1 热门排行跳转详情(最小改动,立竿见影)
|
||
→ 9.2 首页改用 Repository(架构规范)
|
||
→ 9.4 合并搜索控制器(消除冗余)
|
||
→ 9.3 合并收藏功能(消除冗余)
|
||
→ 9.6 多语言词条扩充(持续进行)
|
||
→ 9.5 聊天页面(最后处理)
|
||
```
|
||
|
||
### 验收标准
|
||
- [ ] 热门排行点击可跳转到菜谱详情页
|
||
- [ ] 首页通过 Repository 层获取数据
|
||
- [ ] 收藏功能只有一套实现
|
||
- [ ] 搜索功能只有一套实现
|
||
- [ ] 聊天页面有真实功能或已移除入口
|
||
- [ ] 核心页面文字已提取到 arb 文件
|
||
|
||
---
|
||
|
||
## 🟡 阶段十:代码质量提升(P1/P2)
|
||
|
||
**目标**:提升代码可维护性和健壮性
|
||
**前置依赖**:阶段九完成
|
||
**关键阻塞**:无
|
||
|
||
| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|
||
|------|------|---------|--------|------|------|
|
||
| 10.1 | 统一 Controller 注册 | `lib/src/bindings/app_binding.dart` | P1 | ❌ 未实现 | 部分用 `Get.put()`,部分用 `Get.find()`,需统一 Binding |
|
||
| 10.2 | HiveService 数据迁移机制 | `lib/src/services/data/hive_service.dart` | P2 | ❌ 未实现 | Box schema 变更时无迁移策略,可能导致数据丢失 |
|
||
| 10.3 | 统一错误处理 | `lib/src/services/api/api_exception.dart` | P1 | ❌ 未实现 | 部分 Repository 抛 Exception,部分返回空数据,需统一错误码 |
|
||
| 10.4 | 离线缓存策略 | `lib/src/services/data/storage_service.dart` | P1 | ❌ 未实现 | API 数据仅靠 Dio 缓存,离线时首页无数据 |
|
||
| 10.5 | DesignTokens 与 ThemeService 解耦 | `lib/src/config/design_tokens.dart` | P2 | ❌ 未实现 | 页面混用静态常量和动态值,暗色模式适配不一致 |
|
||
|
||
### 问题详情
|
||
|
||
#### 10.1 Controller 注册不统一
|
||
- **现象**:部分页面在 `build()` 中 `Get.put()`,部分在 `onInit()` 中 `Get.find()`
|
||
- **影响**:Controller 生命周期不可控,可能重复创建或找不到
|
||
- **方案**:每个页面创建对应 Binding,在 `AppBinding` 中统一注册
|
||
|
||
#### 10.2 HiveService 无数据迁移
|
||
- **现象**:Box schema 变更后直接崩溃或数据丢失
|
||
- **方案**:添加 `boxVersion` 字段,打开 Box 时检查版本号,执行迁移逻辑
|
||
|
||
#### 10.3 错误处理不统一
|
||
- **现象**:`RecipeRepository` 抛 `Exception`,`FeedRepository` 返回空列表
|
||
- **方案**:定义 `AppException` 层级(NetworkException / ParseException / StorageException),Repository 统一抛出
|
||
|
||
#### 10.4 离线缓存
|
||
- **现象**:无网络时首页显示"暂无菜谱"
|
||
- **方案**:API 成功时将数据写入 Hive,离线时从 Hive 读取
|
||
|
||
#### 10.5 DesignTokens 解耦
|
||
- **现象**:页面同时使用 `DesignTokens.text1`(静态)和 `themeService.textColor.value`(动态)
|
||
- **方案**:所有颜色值通过 `ThemeService` 获取,`DesignTokens` 仅保留间距/圆角/字号等不变量
|
||
|
||
### 开发顺序建议
|
||
|
||
```
|
||
10.1 统一 Controller 注册(架构基础)
|
||
→ 10.3 统一错误处理(稳定性)
|
||
→ 10.4 离线缓存(用户体验)
|
||
→ 10.2 HiveService 迁移机制(数据安全)
|
||
→ 10.5 DesignTokens 解耦(代码规范)
|
||
```
|
||
|
||
### 验收标准
|
||
- [ ] 所有 Controller 通过 Binding 注册
|
||
- [ ] HiveService 支持 schema 版本迁移
|
||
- [ ] Repository 统一抛出 AppException
|
||
- [ ] 离线时首页可显示缓存数据
|
||
- [ ] 页面颜色值统一通过 ThemeService 获取
|
||
|
||
---
|
||
|
||
## 🟢 阶段十一:烹饪模式+营养仪表盘(P1)
|
||
|
||
**目标**:实现核心增强功能,提升应用价值
|
||
**前置依赖**:阶段九完成
|
||
**关键阻塞**:无
|
||
|
||
| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|
||
|------|------|---------|--------|------|------|
|
||
| 11.1 | 🍳 烹饪模式 | `lib/src/pages/recipe/cooking_mode_page.dart` | P1 | ❌ 未实现 | 详情页"开始烹饪"按钮,步骤引导+计时器联动 |
|
||
| 11.2 | 📊 营养追踪仪表盘 | `lib/src/pages/home/nutrition_dashboard.dart` | P1 | ❌ 未实现 | 首页展示今日营养摄入环形图,整合 MealRecordController |
|
||
| 11.3 | 🛒 菜谱食材一键加入购物清单 | `lib/src/pages/recipe/recipe_detail_page.dart` | P1 | ❌ 未实现 | 详情页"加入购物清单"按钮,自动解析食材 |
|
||
| 11.4 | 📖 菜谱步骤图文模式 | `lib/src/pages/recipe/recipe_detail_page.dart` | P2 | ❌ 未实现 | 步骤展开/折叠,每步配图+计时器 |
|
||
|
||
### 功能详情
|
||
|
||
#### 11.1 烹饪模式
|
||
- **入口**:菜谱详情页 → "🍳 开始烹饪"按钮
|
||
- **功能**:
|
||
- 全屏步骤引导,左右滑动切换步骤
|
||
- 当前步骤高亮,已完成步骤置灰
|
||
- 每步自动启动计时器(如有时间信息)
|
||
- 支持语音播报(TTS)
|
||
- 支持暂停/继续/跳过
|
||
- **技术方案**:PageView + StepIndicator + CookingTimerController
|
||
|
||
#### 11.2 营养追踪仪表盘
|
||
- **入口**:首页顶部卡片区域
|
||
- **功能**:
|
||
- 今日热量/蛋白质/脂肪/碳水摄入环形图
|
||
- 与每日目标对比进度
|
||
- 点击跳转到营养中心详情
|
||
- **技术方案**:NutritionRing widget + MealRecordController
|
||
|
||
#### 11.3 食材一键加入购物清单
|
||
- **入口**:菜谱详情页 → "🛒 加入购物清单"按钮
|
||
- **功能**:
|
||
- 解析 `RecipeModel.ingredients` 为 `ShoppingItemModel` 列表
|
||
- 弹出确认弹窗,可勾选/取消勾选食材
|
||
- 确认后写入 Hive
|
||
- **技术方案**:ShoppingListController.addFromRecipe()
|
||
|
||
#### 11.4 步骤图文模式
|
||
- **入口**:菜谱详情页步骤区域
|
||
- **功能**:
|
||
- 步骤卡片展开/折叠
|
||
- 每步配图(如有)
|
||
- 每步计时器快捷按钮
|
||
- 步骤编号 + 预计时间
|
||
|
||
### 开发顺序建议
|
||
|
||
```
|
||
11.3 食材加入购物清单(最小改动,复用现有 ShoppingListController)
|
||
→ 11.2 营养追踪仪表盘(复用现有 NutritionRing + MealRecordController)
|
||
→ 11.4 步骤图文模式(增强详情页)
|
||
→ 11.1 烹饪模式(最复杂,需新建页面)
|
||
```
|
||
|
||
### 验收标准
|
||
- [ ] 详情页有"开始烹饪"按钮,点击进入步骤引导模式
|
||
- [ ] 首页显示今日营养摄入环形图
|
||
- [ ] 详情页可一键将食材加入购物清单
|
||
- [ ] 详情页步骤支持展开/折叠
|
||
|
||
---
|
||
|
||
## 🟢 阶段十二:社交+通知增强(P2)
|
||
|
||
**目标**:增加社交分享和通知提醒功能
|
||
**前置依赖**:阶段十一完成
|
||
**关键阻塞**:12.1 需 `share_plus`,12.2 需 `flutter_local_notifications`
|
||
|
||
| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|
||
|------|------|---------|--------|------|------|
|
||
| 12.1 | 📱 分享菜谱 | `lib/src/pages/recipe/recipe_detail_page.dart` | P2 | ❌ 未实现 | 生成菜谱卡片图片,支持系统分享 |
|
||
| 12.2 | 🔔 烹饪提醒通知 | `lib/src/services/notification_service.dart` | P2 | ❌ 未实现 | 定时提醒烹饪步骤,与计时器联动 |
|
||
| 12.3 | 🔍 搜索建议/热词 | `lib/src/pages/search/search_page.dart` | P2 | ❌ 未实现 | 搜索页展示热门搜索词,输入时自动补全 |
|
||
| 12.4 | 📸 拍照记录 | `lib/src/pages/tools/cooking_note_page.dart` | P3 | ❌ 未实现 | 烹饪笔记支持拍照上传,记录成品 |
|
||
|
||
### 功能详情
|
||
|
||
#### 12.1 分享菜谱
|
||
- **入口**:菜谱详情页 → 分享按钮
|
||
- **功能**:
|
||
- 生成菜谱卡片图片(封面+标题+食材摘要)
|
||
- 调用 iOS Share Sheet / Android 分享面板
|
||
- 支持保存到相册
|
||
- **技术方案**:`screenshot` + `share_plus`
|
||
|
||
#### 12.2 烹饪提醒通知
|
||
- **入口**:烹饪模式 → 设置提醒
|
||
- **功能**:
|
||
- 烹饪步骤到达时发送本地通知
|
||
- 计时器完成时通知
|
||
- 支持自定义提醒时间
|
||
- **技术方案**:`flutter_local_notifications`
|
||
|
||
#### 12.3 搜索建议/热词
|
||
- **入口**:搜索页搜索栏
|
||
- **功能**:
|
||
- 空搜索框时展示热门搜索词
|
||
- 输入时自动补全建议
|
||
- 热门搜索词从 API 获取
|
||
- **技术方案**:`RecipeRepository.fetchTags()` 获取热词
|
||
|
||
#### 12.4 拍照记录
|
||
- **入口**:烹饪笔记 → 拍照按钮
|
||
- **功能**:
|
||
- 调用相机拍照或从相册选择
|
||
- 图片压缩后保存到本地
|
||
- 笔记列表展示缩略图
|
||
- **技术方案**:`image_picker` + 本地文件存储
|
||
|
||
### 需引入的外部依赖
|
||
|
||
| 依赖 | 用途 | 纯Dart | 鸿蒙兼容 |
|
||
|------|------|--------|---------|
|
||
| `share_plus` | 系统分享 | ❌ | ⚠️ 需适配 |
|
||
| `flutter_local_notifications` | 本地通知 | ❌ | ⚠️ 需适配 |
|
||
| `image_picker` | 拍照/相册 | ❌ | ⚠️ 需适配 |
|
||
| `screenshot` | 截图 | ✅ | ✅ |
|
||
|
||
### 验收标准
|
||
- [ ] 详情页可分享菜谱卡片到其他应用
|
||
- [ ] 烹饪计时器完成时发送本地通知
|
||
- [ ] 搜索页展示热门搜索词
|
||
- [ ] 烹饪笔记可添加照片
|
||
|
||
---
|
||
|
||
## 🔵 阶段十三:AI+规划高级功能(P3)
|
||
|
||
**目标**:实现智能化和规划类高级功能
|
||
**前置依赖**:阶段十二完成
|
||
**关键阻塞**:13.1 需 AI API,13.2 需日历组件
|
||
|
||
| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|
||
|------|------|---------|--------|------|------|
|
||
| 13.1 | 🤖 AI 菜谱推荐 | `lib/src/services/ai_recommend_service.dart` | P3 | ❌ 未实现 | 基于口味偏好+浏览历史,智能推荐菜谱 |
|
||
| 13.2 | 📅 每周菜单规划 | `lib/src/pages/tools/meal_planner_page.dart` | P3 | ❌ 未实现 | 日历视图规划一周饮食,自动生成购物清单 |
|
||
| 13.3 | 🧮 食材用量换算增强 | `lib/src/pages/tools/serving_scaler_page.dart` | P3 | ❌ 未实现 | 增强份量缩放,支持不同单位换算 |
|
||
| 13.4 | 🌙 就寝提醒 | `lib/src/pages/settings/health_reminder_page.dart` | P3 | ❌ 未实现 | 根据饮食时间推荐健康作息 |
|
||
|
||
### 功能详情
|
||
|
||
#### 13.1 AI 菜谱推荐
|
||
- **入口**:首页"为你推荐"Tab
|
||
- **功能**:
|
||
- 基于用户口味偏好(PreferenceController)
|
||
- 基于浏览历史(FootprintsPage 数据)
|
||
- 基于收藏记录(FavoritesController)
|
||
- 推荐相似菜谱
|
||
- **技术方案**:调用后端推荐 API 或本地协同过滤算法
|
||
|
||
#### 13.2 每周菜单规划
|
||
- **入口**:工具页 → "📅 每周菜单"
|
||
- **功能**:
|
||
- 日历视图选择日期
|
||
- 每日早/中/晚三餐分配菜谱
|
||
- 自动汇总生成购物清单
|
||
- 支持拖拽调整
|
||
- **技术方案**:自定义日历组件 + Hive 持久化
|
||
|
||
#### 13.3 食材用量换算增强
|
||
- **入口**:工具页 → 份量缩放
|
||
- **功能**:
|
||
- 支持克/千克/磅/盎司互转
|
||
- 支持毫升/升/杯/汤匙互转
|
||
- 常用食材密度表
|
||
- **技术方案**:扩展 `serving_scaler_page.dart`,添加单位换算 Tab
|
||
|
||
#### 13.4 就寝提醒
|
||
- **入口**:设置 → 健康提醒
|
||
- **功能**:
|
||
- 根据晚餐时间推荐就寝时间
|
||
- 睡前不宜进食提醒
|
||
- 与营养追踪联动
|
||
- **技术方案**:`flutter_local_notifications` + 健康算法
|
||
|
||
### 验收标准
|
||
- [ ] "为你推荐"展示个性化推荐菜谱
|
||
- [ ] 每周菜单可规划三餐并生成购物清单
|
||
- [ ] 份量缩放支持多种单位换算
|
||
- [ ] 就寝提醒根据饮食时间智能推荐
|
||
|
||
---
|
||
|
||
## 📎 软件特性功能汇总
|
||
|
||
> 以下功能已开发完成或开发中,从历史版本号归档而来
|
||
|
||
| 功能 | 状态 | 首次版本 | 说明 |
|
||
|------|------|---------|------|
|
||
| 热量追踪+营养分析 | ✅ 已完成 | v0.3x | 环形图+饼图+折线图+目标设置 |
|
||
| 购物清单 | ✅ 已完成 | v0.4x | 添加/删除/勾选/分类/从菜谱添加 |
|
||
| 烹饪计时器 | ✅ 已完成 | v0.5x | 多步骤倒计时 |
|
||
| 用量换算 | ✅ 已完成 | v0.5x | 常用单位换算 |
|
||
| 过敏原检测 | ✅ 已完成 | v0.5x | 标记含过敏原菜谱 |
|
||
| 烹饪笔记 | ✅ 已完成 | v0.5x | 按菜谱关联笔记 |
|
||
| BMI 计算器 | ✅ 已完成 | v0.5x | 含健康建议 |
|
||
| 份量缩放 | ✅ 已完成 | v0.5x | 按比例调整食材用量 |
|
||
| 主页体验优化 | ✅ 已完成 | v0.6x | 骨架屏+动画+搜索+详情页 |
|
||
| 今天吃什么增强 | ✅ 已完成 | v0.7x | 分类/标签/过敏原三维筛选 |
|
||
| API v2.0.0 迁移 | ✅ 已完成 | v0.8x | 合并接口+8个Bug修复 |
|
||
| 动态主题 | ✅ 已完成 | v0.6x | 多主题色+暗色模式+卡片滑动方向 |
|
||
| Liquid Glass 风格 | ✅ 已完成 | v0.6x | 底栏+搜索栏+分段控件+卡片 |
|
||
| 收藏管理 | ✅ 已完成 | v0.8x | 编辑/排序/分类/跳转详情 |
|
||
| 静态分析清理 | ✅ 已完成 | v0.52 | 107→1 个 info,0 error/warning |
|