Files
kitchen/docs/dev/UNFINISHED_FEATURES.md
Developer 346fc795f7 完善
2026-04-11 06:05:12 +08:00

42 KiB
Raw Blame History

📋 未完成功能清单

文档创建: 2026-04-09
最后更新: 2026-04-11
数据来源 说明: 记录所有未完成的功能任务,跟踪开发进度
优先级说明: P1=核心功能 P2=重要功能 P3=增强功能
优先级值1-5: 5=最高优先级(多次提及自动提升)


📊 总体进度

阶段 总任务 已完成 未完成 完成率
三:热量追踪+营养分析 7 7 0 100%
四:购物清单 5 5 0 100%
十三AI+规划高级功能 4 0 4 0% 🔵
十四:接口能力挖掘 8 0 8 0% 🟢
十五:后端接口增强 6 0 6 0% 🔴
十六:用户体验优化+Bug 修复 7 7 0 100%
十七紧急Bug修复 14 14 0 100%
十九综合Bug修复+功能增强 18 16 2 89% 🔄
合计 142 111 31 78%

五、开发阶段

阶段一基础设施P1 已完成

目标:搭建 Hive 本地数据库 + 数据模型 + 持久化收藏

六、页面导航规划

发现页

## 八、开发优先级矩阵

| 功能 | 用户价值 | 技术难度 | 依赖关系 | 优先级 |
|------|---------|---------|---------|--------|
| Hive 本地数据库 | ⭐⭐⭐⭐⭐ | ⭐⭐ | 无 | P1-0 |
| 收藏持久化 | ⭐⭐⭐⭐ | ⭐ | 数据库 | P1-1 |
| 饮食日记 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 数据库 | P1-2 |
| 热量追踪 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 饮食日记 | P1-3 |
| 营养分析报告 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 饮食日记+fl_chart | P1-4 |
| 购物清单 | ⭐⭐⭐⭐ | ⭐⭐ | 数据库 | P2-1 |
| 烹饪计时器 | ⭐⭐⭐ | ⭐⭐ | 无 | P2-2 |
| 用量换算 | ⭐⭐⭐ | ⭐ | 无 | P2-3 |
| 过敏原检测 | ⭐⭐⭐ | ⭐⭐ | 偏好数据 | P2-4 |
| 烹饪笔记 | ⭐⭐ | ⭐⭐ | 数据库 | P3-1 |
| 用餐提醒 | ⭐⭐ | ⭐⭐⭐ | 本地通知 | P3-2 |
| BMI 计算器 | ⭐⭐ | ⭐ | 无 | P3-3 |
| 份量缩放 | ⭐⭐ | ⭐ | 无 | P3-4 |

---

## 九、验收标准


## 🟡 阶段五增强功能P2/P3

**目标**:烹饪计时器 + 用量换算 + 过敏原检测 + 烹饪笔记 + 用餐提醒 + BMI + 份量缩放  
**前置依赖**:各功能独立,无强依赖  


---

## 🔵 阶段八API v2.0.0 迁移 + Bug修复P0/P1

**目标**:迁移到 API v2.0.0 合并接口修复用户反馈的8个严重Bug  


---

## 🔴 阶段九:架构修复+核心BugP0/P1

**目标**:修复架构违规和核心功能缺失  
**发现时间**2026-04-10flutter analyze 全面扫描 + 项目分析)  


## 🟡 阶段十代码质量提升P1/P2

---

## 🟢 阶段十一:烹饪模式+营养仪表盘P1

**目标**:实现核心增强功能,提升应用价值  
**前置依赖**:阶段九完成  

---

## 🟢 阶段十二:社交+通知增强P2

**目标**:增加社交分享和通知提醒功能  
**前置依赖**:阶段十一完成  
**关键阻塞**12.1 需 `share_plus`12.2 需 `flutter_local_notifications`

| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|------|------|---------|--------|------|------|
| 12.1 | 📱 分享菜谱 | `lib/src/pages/home/recipe_detail_page.dart` | P2 | ✅ 已完成 | 分享按钮+生成菜谱文本+调用share_plus |
| 12.2 | 🔔 烹饪提醒通知 | `lib/src/services/notification_service.dart` | P2 | ❌ 未实现 | 定时提醒烹饪步骤,与计时器联动 |
| 12.3 | 🔍 搜索建议/热词 | `lib/src/controllers/search_controller.dart` | P2 | ✅ 已完成 | 从API获取热门标签替代硬编码热词保留fallback |
| 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` | 系统分享 | ❌ | ⚠️ 需适配 |
| `image_picker` | 拍照/相册 | ❌ | ⚠️ 需适配 |
| `screenshot` | 截图 | ✅ | ✅ |

### 验收标准
- [ ] 详情页可分享菜谱卡片到其他应用
- [ ] 烹饪计时器完成时发送本地通知
- [ ] 搜索页展示热门搜索词
- [ ] 烹饪笔记可添加照片

---

## 🔵 阶段十三AI+规划高级功能P3

**目标**:实现智能化和规划类高级功能  
**前置依赖**:阶段十二完成  
**关键阻塞**13.1 需 AI API13.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 | ✅ 已完成 | 添加单位换算Tab(重量/容量/计数)+常用换算表 |
| 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` + 健康算法

### 验收标准
- [ ] "为你推荐"展示个性化推荐菜谱
- [ ] 每周菜单可规划三餐并生成购物清单
- [ ] 份量缩放支持多种单位换算
- [ ] 就寝提醒根据饮食时间智能推荐

---

## 🟢 阶段十四接口能力挖掘P1/P2

**目标**利用已有API接口能力实现App端未开发的功能  
**前置依赖**API v2.0.0 已支持完整接口  
**关键阻塞**:无  
**数据来源**`docs/api/doc/API_DOC.md` + `docs/api/doc/APP_GUIDE.md`

| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|------|------|---------|--------|------|------|
| 14.1 | 🍽️ 用餐时段推荐 | `lib/src/pages/home/meal_time_recommend.dart` | P1 | ❌ 未实现 | 根据时间推荐早餐/午餐/晚餐 |
| 14.2 | 📊 营养分析增强 | `lib/src/pages/nutrition/nutrition_detail_page.dart` | P1 | ❌ 未实现 | 营养成分详情+趋势图表 |
| 14.3 | ⚠️ 过敏原警示增强 | `lib/src/pages/recipe/recipe_detail_page.dart` | P1 | ❌ 未实现 | 详情页过敏原警示+食材替代建议 |
| 14.4 | 🔥 点赞/推荐系统 | `lib/src/services/action_service.dart` | P2 | ❌ 未实现 | 点赞/取消点赞+五星评分 |
| 14.5 | 📱 社交分享 | `lib/src/pages/recipe/share_recipe_page.dart` | P2 | ❌ 未实现 | 生成分享链接+二维码海报 |
| 14.6 | 👤 个性化信息流 | `lib/src/pages/home_page.dart` | P1 | ❌ 未实现 | 基于用户偏好的首页推荐 |
| 14.7 | 🥕 食材详情页 | `lib/src/pages/ingredient/ingredient_detail_page.dart` | P2 | ❌ 未实现 | 食材介绍+营养+选购指南 |
| 14.8 | 📈 浏览量统计 | `lib/src/services/analytics_service.dart` | P2 | ❌ 未实现 | 增加浏览量+热度标签展示 |

### 功能详情

#### 14.1 用餐时段推荐
- **接口支持**`api.php?act=search&keyword=早餐/中餐/晚餐`

---

## 🔴 阶段十六:用户体验优化+Bug修复P0/P1

**目标**修复用户反馈的7个严重问题提升应用稳定性和用户体验  
**发现时间**2026-04-10用户反馈  
**关键阻塞**:无  
**优先级**P0=最高优先级(影响用户使用的严重问题)

| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|------|------|---------|--------|------|------|
| 16.1 | 🚀 启动加载优化+骨架屏 | `lib/src/pages/home_page.dart` | P0 | ✅ 已完成 | 添加超时保护+骨架屏组件+缓存优先策略 |
| 16.2 | 🛠️ 收藏页面"更多"卡死修复 | `lib/src/pages/favorites/favorites_page.dart` | P0 | ✅ 已完成 | 添加Binding+错误处理+空指针保护 |
| 16.3 | 🔍 搜索详情卡死修复 | `lib/src/pages/search/search_page.dart` | P0 | ✅ 已完成 | 为RecipeDetailPage添加Binding+Controller安全获取 |
| 16.4 | 🎲 今天吃什么动态筛选优化 | `lib/src/pages/what_to_eat/what_to_eat_page.dart` | P1 | ✅ 已完成 | 优化UI显示+添加错误提示+空结果处理 |
| 16.5 | 📊 营养中心报告按钮修复 | `lib/src/pages/nutrition/nutrition_center_page.dart` | P1 | ✅ 已完成 | 检查NutritionBinding+添加错误处理 |
| 16.6 | ❤️ 收藏页面UI重构 | `lib/src/pages/profile/favorites_page.dart` | P2 | ✅ 已完成 | iOS 26 Liquid Glass风格(BackdropFilter+半透明)+优化按钮尺寸 |
| 16.7 | 🔥 热门排行数据修复 | `lib/src/repositories/hot_repository.dart` | P1 | ✅ 已完成 | 检查API返回+添加错误提示+调试日志 |

### 问题详情

#### 16.1 启动加载慢+无骨架屏
- **现象**:启动应用时 loading 动画超过10秒首页点击菜谱 loading 超过5秒
- **原因分析**
  1. `RecipeRepository.fetchFeedRecipes()` 没有超时保护
  2. 首页没有骨架屏,只有简单的 loading 动画
  3. 没有缓存机制,每次都要从网络获取数据
- **解决方案**
  1. 添加超时保护12秒
  2. 创建骨架屏组件 `SkeletonLoader`
  3. 添加缓存优先策略,优先显示缓存数据

#### 16.2 收藏页面点击"更多"卡死闪退
- **现象**:收藏页面点击"更多"按钮后应用卡死闪退
- **原因分析**
  1. `ToolsCenterPage` 使用 `Get.put(ToolsController())` 直接注册
  2. 可能 `ToolsController` 初始化时出错
  3. 没有错误处理和空指针保护
- **解决方案**
  1. 创建 `ToolsBinding` 并添加到路由配置
  2. 使用 `Get.find()` 获取 Controller
  3. 添加 try-catch 错误处理

#### 16.3 搜索结果点击详情卡死闪退
- **现象**:搜索后点击详细结果,应用卡死闪退
- **原因分析**
  1. `RecipeDetailPage` 使用 `Get.find<FavoritesController>()`
  2. 如果 Controller 未注册会抛出异常
  3. `ActionController` 和 `ShoppingListController` 初始化可能失败
- **解决方案**
  1. 为 `RecipeDetailPage` 添加完整的 Binding
  2. 所有 Controller 使用 try-catch 保护
  3. 添加空指针检查和默认值

#### 16.4 今天吃什么动态筛选问题
- **现象**:不支持动态筛选,随机选择有时不显示结果
- **原因分析**
  1. 代码已实现动态筛选,但 UI 不够明显
  2. 随机选择不显示结果可能是 API 返回空数据
  3. 没有错误提示
- **解决方案**
  1. 优化 UI使筛选功能更明显
  2. 添加错误提示和空结果处理
  3. 添加调试日志,排查 API 问题

#### 16.5 营养中心报告按钮卡死
- **现象**:点击右上角"报告"按钮应用卡死闪退,"今天"按钮无反应
- **原因分析**
  1. `NutritionReportPage` 使用 `Get.find<MealRecordController>()`
  2. 路由配置中已有 `NutritionBinding`
  3. 可能是 `MealRecordController` 初始化失败
- **解决方案**
  1. 检查 `NutritionBinding` 是否正确注册
  2. 添加错误处理和空指针保护
  3. 添加加载状态提示

#### 16.6 收藏页面UI设计问题
- **现象**:排版杂乱无章,按钮太小点不到,不符合操作逻辑
- **原因分析**
  1. UI 布局不够清晰
  2. 按钮尺寸不符合 iOS 设计规范
  3. 操作流程不顺畅
- **解决方案**
  1. 重构 UI使用 iOS 26 Liquid Glass 风格
  2. 增大按钮尺寸至最小 44x44
  3. 优化操作流程和布局比例

#### 16.7 热门排行数据为空
- **现象**:今日浏览量、点赞数、推荐数都显示"暂无数据"
- **原因分析**
  1. `HotRepository` 调用 `stats_full.php?act=hot` API
  2. API 可能返回空数据或数据结构不匹配
  3. 没有错误提示
- **解决方案**
  1. 检查 API 返回数据结构
  2. 添加错误提示和空数据处理
  3. 添加调试日志,排查 API 问题

### 开发顺序建议

16.1 启动加载优化(影响最大,用户第一印象) → 16.2 收藏页面"更多"修复(严重闪退) → 16.3 搜索详情修复(严重闪退) → 16.5 营养中心修复(功能性问题) → 16.4 今天吃什么优化(体验问题) → 16.7 热门排行修复(数据问题) → 16.6 收藏页面UI重构体验优化


### 验收标准
- [ ] 启动应用 3 秒内显示骨架屏5 秒内加载完成
- [ ] 收藏页面点击"更多"正常跳转,无卡死闪退
- [ ] 搜索结果点击详情正常跳转,无卡死闪退
- [ ] 今天吃什么支持动态筛选,随机选择有结果提示
- [ ] 营养中心报告按钮正常跳转,"今天"按钮有反馈
- [ ] 收藏页面 UI 整洁美观,按钮易于点击
- [ ] 热门排行显示真实数据,无数据时有友好提示

### 技术要点

- **数据文件**`http://eat.wktyl.com/api/assets/eating_times.json`34种时段
- **功能**
  - 🌅 早餐推荐7-10点
  - 🍱 午餐推荐11-14点
  - 🌙 晚餐推荐17-20点
  - 📅 每日菜单规划(早中晚餐)

#### 14.2 营养分析增强
- **接口支持**`api.php?act=full&id=xxx` 返回 `nutrition` 字段
- **数据文件**`http://eat.wktyl.com/api/assets/nutrition_types.json`31种营养成分
- **功能**
  - 📊 营养成分详情展示(维生素/矿物质/宏量营养素)
  - 🎯 每日营养目标追踪
  - 🏋️ 健身餐推荐(高蛋白/低碳水)
  - 📈 营养趋势分析图表

#### 14.3 过敏原警示增强
- **接口支持**`api.php?act=full&id=xxx` 返回 `allergens` 字段
- **数据文件**`http://eat.wktyl.com/api/assets/gmy.json`585种过敏原数据
- **功能**
  - ⚠️ 菜谱详情页过敏原警示
  - 🚫 自动过滤含过敏原菜谱
  - 🔄 食材替代建议
  - 📋 过敏原报告生成

#### 14.4 点赞/推荐系统
- **接口支持**
  - `api_action.php?act=like&type=recipe&id=1&action=like/unlike`
  - `api_action.php?act=recommend&type=recipe&id=1&score=5`
- **功能**
  - 👍 点赞/取消点赞
  - ⭐ 五星评分
  - 📊 用户评价统计
  - 🏆 推荐排行榜

#### 14.5 社交分享
- **接口支持**`api_what_to_eat.php?act=detail&code=CP032892`code字段生成分享链接
- **功能**
  - 🔗 分享链接生成(`https://eat.wktyl.com/recipe/CP032892`
  - 📱 二维码海报
  - 📊 热度标签展示(🔥爆款/📈热门/❤️受欢迎)
  - 👥 社交平台分享

#### 14.6 个性化信息流
- **接口支持**`api_feed.php?act=personal&user_id=xxx`
- **功能**
  - 🎯 基于偏好推荐
  - 🚫 自动过滤过敏原
  - 📊 千人千面首页
  - 🔄 智能刷新

#### 14.7 食材详情页
- **接口支持**`api.php?act=ingredient_detail&id=1`
- **返回字段**`introduction`/`nutrition`/`usage_tip`/`effect`/`guidance`
- **功能**
  - 📖 食材介绍
  - 🥗 营养成分
  - 💡 使用技巧
  - 🏥 食疗功效
  - 🛒 选购指南

#### 14.8 浏览量统计
- **接口支持**
  - `api_action.php?act=view&type=recipe&id=1&count=1`
  - `api.php?act=detail&id=xxx&viewnums=true`
- **功能**
  - 📈 增加浏览量
  - 🔥 热门排行统计
  - 📊 用户浏览历史
  - 📈 趋势分析

### 开发优先级

| 优先级 | 功能 | 说明 |
|--------|------|------|
| **P1** | 用餐时段推荐 | 接口完整,实现简单,用户价值高 |
| **P1** | 个性化信息流 | 接口完整,提升用户体验 |
| **P1** | 过敏原警示增强 | 接口完整,健康安全 |
| **P2** | 点赞/推荐系统 | 接口完整,增加互动 |
| **P2** | 营养分析增强 | 接口完整,健康管理 |
| **P2** | 社交分享 | 接口完整,增加传播 |
| **P2** | 食材详情页 | 接口完整,内容丰富 |
| **P2** | 浏览量统计 | 接口完整,数据驱动 |

### 验收标准
- [ ] 首页根据时段推荐早餐/午餐/晚餐
- [ ] 营养中心展示详细营养成分
- [ ] 详情页显示过敏原警示
- [ ] 详情页可点赞/评分
- [ ] 详情页可分享菜谱
- [ ] 首页个性化推荐
- [ ] 食材可查看详情页
- [ ] 浏览量正确统计

---

## 🔴 阶段十五后端接口增强P1/P2

**目标**:新增后端接口,实现高级功能  
**前置依赖**:后端开发配合  
**关键阻塞**:需要后端新增接口  
**优先级说明**:🔴 红色表示需要后端支持

| 序号 | 任务 | 建议接口 | 优先级 | 状态 | 说明 |
|------|------|---------|--------|------|------|
| 15.1 | 👤 用户注册登录 | `api_user.php?act=register/login` | P1 | ❌ 未实现 | 用户账号体系 |
| 15.2 | 💾 收藏云端同步 | `api_favorite.php?act=add/remove/list` | P1 | ❌ 未实现 | 收藏数据云端存储 |
| 15.3 | 💬 评论系统 | `api_comment.php?act=list/add/delete` | P2 | ❌ 未实现 | 菜谱评论功能 |
| 15.4 | 🔔 消息推送 | `api_message.php?act=list/read` | P2 | ❌ 未实现 | 站内信+推送通知 |
| 15.5 | 📜 浏览历史同步 | `api_history.php?act=add/list` | P2 | ❌ 未实现 | 浏览历史云端存储 |
| 15.6 | 📝 菜谱上传 | `api_recipe.php?act=add/edit/delete` | P2 | ❌ 未实现 | 用户菜谱上传/编辑 |

### 功能详情

#### 15.1 用户注册登录
- **现状**:❌ 无注册登录接口
- **建议接口**

POST api_user.php?act=register { "username": "xxx", "password": "xxx", "email": "xxx" }

POST api_user.php?act=login { "username": "xxx", "password": "xxx" }

GET api_user.php?act=profile&user_id=xxx

- **功能**
- 📱 手机号注册/登录
- 🔗 第三方登录(微信/Apple ID
- 👤 用户资料管理
- 🔐 密码找回

#### 15.2 收藏云端同步
- **现状**:⚠️ 仅本地 Hive 存储
- **建议接口**

POST api_favorite.php?act=add { "user_id": "xxx", "recipe_id": 123 }

GET api_favorite.php?act=list&user_id=xxx

DELETE api_favorite.php?act=remove { "user_id": "xxx", "recipe_id": 123 }

- **功能**
- ☁️ 收藏云端存储
- 🔄 多设备同步
- 📂 收藏分类管理
- 🔗 收藏分享

#### 15.3 评论系统
- **现状**:❌ 无评论接口
- **建议接口**

GET api_comment.php?act=list&recipe_id=123&page=1

POST api_comment.php?act=add { "user_id": "xxx", "recipe_id": 123, "content": "xxx" }

DELETE api_comment.php?act=delete { "user_id": "xxx", "comment_id": 456 }

- **功能**
- 💬 发表评论
- 👍 评论点赞
- 📝 评论回复
- 🔔 评论通知

#### 15.4 消息推送
- **现状**:❌ 无推送接口
- **建议接口**

GET api_message.php?act=list&user_id=xxx

POST api_message.php?act=read { "user_id": "xxx", "message_id": 123 }

- **功能**
- 📬 站内信
- 🔔 推送通知
- 📢 系统公告
- 💬 评论提醒

#### 15.5 浏览历史同步
- **现状**:⚠️ 仅本地存储
- **建议接口**

POST api_history.php?act=add { "user_id": "xxx", "recipe_id": 123 }

GET api_history.php?act=list&user_id=xxx&page=1

- **功能**
- ☁️ 浏览历史云端存储
- 🔄 多设备同步
- 📊 浏览统计
- 🧹 历史清理

#### 15.6 菜谱上传
- **现状**:❌ 无上传接口
- **建议接口**

POST api_recipe.php?act=add { "title": "xxx", "ingredients": [...], "steps": [...] }

PUT api_recipe.php?act=edit { "recipe_id": 123, "title": "xxx" }

DELETE api_recipe.php?act=delete { "recipe_id": 123 }

- **功能**
- 📝 用户菜谱上传
- ✏️ 菜谱编辑
- 🗑️ 菜谱删除
- 📊 菜谱审核

### 开发优先级

| 优先级 | 功能 | 说明 |
|--------|------|------|
| **P1** | 用户注册登录 | 核心功能,其他功能依赖用户体系 |
| **P1** | 收藏云端同步 | 用户数据安全,多设备同步 |
| **P2** | 评论系统 | 增加互动,提升活跃度 |
| **P2** | 消息推送 | 用户触达,提升留存 |
| **P2** | 浏览历史同步 | 用户体验,多设备同步 |
| **P2** | 菜谱上传 | UGC内容丰富平台 |

### 验收标准
- [ ] 用户可注册/登录
- [ ] 收藏数据云端同步
- [ ] 菜谱可评论
- [ ] 收到系统通知
- [ ] 浏览历史云端同步
- [ ] 用户可上传菜谱

---

## 📎 软件特性功能汇总

> 以下功能已开发完成或开发中,从历史版本号归档而来
> 2026-04-11 重新审核:修正不实标记,区分"已完成""部分完成""未完成"

| 功能 | 状态 | 首次版本 | 说明 |
|------|------|---------|------|
| 热量追踪+营养分析 | ⚠️ 部分完成 | v0.3x | 环形图+柱状图+目标设置 ✅;饼图+折线图 ❌ |
| 购物清单 | ⚠️ 部分完成 | v0.4x | 添加/删除/勾选/分类 ✅;从菜谱添加 ❌(页面无入口) |
| 烹饪计时器 | ✅ 已完成 | v0.5x | 多步骤倒计时 |
| 用量换算 | ✅ 已完成 | v0.5x | 常用单位换算 |
| 过敏原检测 | ❌ 未完成 | v0.5x | 标记含过敏原菜谱 — 空壳实现checkAllergens永远返回空列表 |
| 烹饪笔记 | ❌ 未完成 | v0.5x | 按菜谱关联笔记 — 仅有Controller+Model无页面 |
| BMI 计算器 | ✅ 已完成 | v0.5x | 含健康建议 |
| 份量缩放 | ⚠️ 部分完成 | v0.5x | 按比例调整 ✅食材列表硬编码5项不支持从菜谱导入 ❌ |
| 主页体验优化 | ✅ 已完成 | v0.6x | 骨架屏+动画+搜索+详情页 |
| 今天吃什么增强 | ✅ 已完成 | v0.7x | 分类/标签/过敏原三维筛选 |
| API v2.0.0 迁移 | ✅ 已完成 | v0.8x | 合并接口+8个Bug修复 |
| 动态主题 | ✅ 已完成 | v0.6x | 多主题色+暗色模式+卡片滑动方向 |
| Liquid Glass 风格 | ✅ 已完成 | v0.6x | 底栏+搜索栏+分段控件+卡片 |
| 收藏管理 | ✅ 已完成 | v0.8x | 编辑/排序/分类/跳转详情 |
| 静态分析清理 | ✅ 已完成 | v0.52 | 107→1 个 info0 error/warning |
| 工具中心 | ✅ 已完成 | v0.9x | 工具入口Bar+分类筛选+使用频率统计 |
| 过敏原检查工具 | ✅ 已完成 | v0.9x | 食材过敏原查询与分类浏览API数据源 |
| 用餐时段推荐 | ✅ 已完成 | v0.9x | 根据时间推荐早中晚餐菜谱 |
| 每周菜单规划 | ⚠️ 部分完成 | v0.9x | 一周三餐UI ✅;数据不持久化 ❌;从收藏添加 ❌仅snackbar提示 |
| 食材详情查询 | ⚠️ 部分完成 | v0.9x | 食材列表+搜索 ✅;营养信息与选购指南 ❌(仅显示名称和分类) |
| 统一Controller Binding | ✅ 已完成 | v0.63 | AppBinding全局管理+移除重复注册 |

---

## 🛠️ 工具中心开发记录

> 2026-04-10 开发完成

### 已实现工具列表

| 工具名称 | 路由 | 是否联网 | 完成度 | 说明 |
|---------|------|---------|--------|------|
| ⏱️ 烹饪计时器 | `/tools/timer` | ❌ 离线 | ✅ 完整 | 多步骤倒计时 |
| 📏 用量换算 | `/tools/converter` | ❌ 离线 | ✅ 完整 | 常用单位换算 |
| 🧮 BMI 计算器 | `/tools/bmi` | ❌ 离线 | ✅ 完整 | 含健康建议 |
| ⚖️ 份量缩放 | `/tools/scaler` | ❌ 离线 | ⚠️ 部分 | 按比例调整 ✅;食材硬编码,不支持从菜谱导入 ❌ |
| 🥜 过敏原检查 | `/tools/allergen` | ✅ 联网 | ✅ 完整 | 食材过敏原查询 |
| 🍽️ 用餐时段推荐 | `/tools/meal-time` | ✅ 联网 | ✅ 完整 | 根据时间推荐菜谱 |
| 📅 每周菜单规划 | `/tools/planner` | ❌ 离线 | ⚠️ 部分 | UI ✅;数据不持久化 ❌;从收藏添加 ❌ |
| 🥕 食材详情查询 | `/tools/ingredient` | ✅ 联网 | ⚠️ 部分 | 列表+搜索 ✅;营养详情+选购指南 ❌ |
| 📊 营养中心 | `/tools/nutrition` | ✅ 联网 | ⚠️ 部分 | 环形图+目标 ✅;饼图+折线图 ❌ |
| 📈 热门统计 | `/tools/stats` | ✅ 联网 | ✅ 完整 | 热门菜谱排行 |

### 技术实现

1. **工具数据模型** (`tool_item_model.dart`)
 - ToolItem: 工具项数据结构
 - ToolCategory: 工具分类枚举
 - ToolRegistry: 工具注册表

2. **工具控制器** (`tools_controller.dart`)
 - 工具列表管理
 - 使用频率统计SharedPreferences
 - 搜索与分类过滤
 - 常用工具推荐

3. **工具中心页面** (`tools_center_page.dart`)
 - 搜索栏
 - 分类标签筛选
 - 工具网格布局(一行两个)
 - 联网状态指示器(绿点/红点)

4. **收藏页工具入口Bar**
 - 显示常用工具快捷入口
 - 更多工具入口按钮
 - 使用频率排序

### 文件清单

lib/src/ ├── models/tools/ │ └── tool_item_model.dart # 工具数据模型 ├── controllers/tools/ │ └── tools_controller.dart # 工具控制器 └── pages/tools/ ├── tools_center_page.dart # 工具中心页面 ├── allergen_checker_page.dart # 过敏原检查 ├── meal_time_recommend_page.dart # 用餐时段推荐 ├── meal_planner_page.dart # 每周菜单规划 └── ingredient_detail_page.dart # 食材详情查询


---

## 🔴 阶段十七紧急Bug修复P0/P1

**目标**:修复用户反馈的多个严重问题,提升应用稳定性  
**发现时间**2026-04-11用户反馈  
**关键阻塞**:无  
**优先级**P0=最高优先级(影响用户使用的严重问题)

| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|------|------|---------|--------|------|------|
| 17.1 | 🔍 搜索详情卡死修复 | `lib/src/pages/search/search_page.dart` | P0 | ✅ 已完成 | 使用Get.toNamed命名路由跳转 |
| 17.2 | ❤️ 收藏页更多按钮GetX报错 | `lib/src/pages/favorites/favorites_page.dart` | P0 | ✅ 已完成 | 使用命名路由跳转工具中心 |
| 17.3 | 🌙 夜间模式字体颜色优化 | `lib/src/config/design_tokens.dart` | P1 | ✅ 已完成 | 调整DarkDesignTokens文字颜色值 |
| 17.4 | 📊 营养中心报告GetX报错 | `lib/src/bindings/feature_binding.dart` | P1 | ✅ 已完成 | Controller改为permanent注册 |
| 17.5 | 🎲 今天吃什么筛选优化 | `lib/src/pages/what_to_eat/what_to_eat_page.dart` | P1 | ✅ 已完成 | 修复筛选逻辑和随机选择 |
| 17.6 | 🏠 首页加载骨架屏优化 | `lib/src/pages/home_page.dart` | P1 | ✅ 已完成 | 添加骨架屏组件和超时保护 |
| 17.7 | 📋 购物清单UI优化 | `lib/src/pages/shopping/shopping_list_page.dart` | P2 | ✅ 已完成 | 增大图标尺寸,优化布局 |
| 17.8 | ⚙️ 主题设置iOS风格重构 | `lib/src/pages/settings/personalization_page.dart` | P2 | ✅ 已完成 | 重构为iOS设计风格 |
| 17.9 | 🏷️ 口味偏好数据修复 | `lib/src/pages/settings/preference_page.dart` | P1 | ✅ 已完成 | 添加错误处理和默认数据 |
| 17.10 | 👁️ 菜谱详情浏览量统计 | `lib/src/pages/recipe/recipe_detail_page.dart` | P1 | ✅ 已完成 | 增加浏览量并显示 |
| 17.11 | 🔥 热门排行今日数据修复 | `lib/src/pages/hot/hot_page.dart` | P1 | ✅ 已完成 | 修复API参数传递 |
| 17.12 | 🍽️ 用餐时段推荐卡死修复 | `lib/src/pages/tools/meal_time_recommend_page.dart` | P0 | ✅ 已完成 | 添加超时处理和默认数据 |
| 17.13 | 🛠️ 工具中心跳转分裂修复 | `lib/src/controllers/tools/tools_controller.dart` | P0 | ✅ 已完成 | 使用Get.toNamed命名路由 |
| 17.14 | 📝 文档更新 | `docs/dev/UNFINISHED_FEATURES.md` | P2 | ✅ 已完成 | 记录修复内容 |

### 问题详情

#### 17.1 搜索详情卡死
- **现象**:搜索结果点击详情后应用卡死闪退
- **原因**使用Get.to()直接跳转Widget未正确注册Binding
- **方案**改用Get.toNamed('/recipe-detail', arguments: recipeId)

#### 17.2 收藏页更多按钮报错
- **现象**:点击"更多"按钮后GetX报错
- **原因**直接跳转ToolsCenterPage未通过路由系统
- **方案**使用Get.toNamed('/tools')

#### 17.3 夜间模式字体颜色
- **现象**:夜间模式大部分字体灰色看不清
- **原因**DarkDesignTokens文字颜色值过暗
- **方案**调整text2为#EBEBF5text3为#8E8E93

#### 17.4 营养中心报告报错
- **现象**点击报告按钮GetX报错
- **原因**MealRecordController未正确注册
- **方案**在FeatureBinding中使用permanent: true注册

#### 17.5 今天吃什么筛选
- **现象**:分类筛选不支持动态筛选,随机选择无结果
- **原因**:筛选逻辑未正确触发,空结果无提示
- **方案**优化筛选触发机制添加空结果Toast提示

#### 17.6 首页加载优化
- **现象**加载时间超过8秒无骨架屏
- **原因**:无超时保护,无骨架屏组件
- **方案**添加12秒超时保护创建SkeletonLoader组件

#### 17.7 购物清单UI
- **现象**:图标太小,列表分裂,容易误触
- **原因**:图标尺寸过小,间距不合理
- **方案**:增大图标尺寸,优化布局间距

#### 17.8 主题设置风格
- **现象**不符合iOS设计风格
- **原因**使用Material风格组件
- **方案**重构为Cupertino风格符合iOS设计规范

#### 17.9 口味偏好数据
- **现象**:显示"暂无分类数据"
- **原因**API返回数据未正确处理
- **方案**:添加错误处理和默认数据展示

#### 17.10 菜谱浏览量
- **现象**:详情页无浏览量显示
- **原因**:未调用浏览量统计接口
- **方案**加载时调用viewnums接口显示浏览次数

#### 17.11 热门排行今日数据
- **现象**:无今日数据
- **原因**API参数传递错误
- **方案**修复period参数为'today'

#### 17.12 用餐时段推荐卡死
- **现象**:页面卡死黑屏
- **原因**:网络请求无超时处理,无错误状态
- **方案**添加8秒超时添加默认用餐时段数据

#### 17.13 工具中心跳转分裂
- **现象**:跳转页面出现分裂感,左边工具中心右边目标页面
- **原因**:路由跳转方式问题
- **方案**统一使用Get.toNamed命名路由

### 验收标准
- [x] 搜索结果点击详情正常跳转
- [x] 收藏页更多按钮正常跳转
- [x] 夜间模式字体清晰可见
- [x] 营养中心报告按钮正常跳转
- [x] 今天吃什么支持动态筛选
- [x] 首页加载有骨架屏
- [x] 购物清单图标易于点击
- [x] 主题设置符合iOS风格
- [x] 口味偏好正常显示数据
- [x] 菜谱详情显示浏览量
- [x] 热门排行显示今日数据
- [x] 用餐时段推荐正常加载
- [x] 工具中心跳转无分裂感

---

## <20> 阶段十八浑水摸鱼功能补全P1/P2— ✅ 已完成

**目标**:修复标记为"已完成"但实际未完成或仅部分完成的功能  
**发现时间**2026-04-11代码审核  
**完成时间**2026-04-11  
**关键阻塞**:无  
**优先级**P1=影响用户功能完整性

### 问题清单

| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|------|------|---------|--------|------|------|
| 18.1 | 📝 烹饪笔记页面 | `lib/src/pages/tools/cooking_note_page.dart` | P1 | ✅ 已完成 | 创建完整页面,支持按菜谱关联、增删改查 |
| 18.2 | 🥜 过敏原检测实现 | `lib/src/services/allergen_checker.dart` | P1 | ✅ 已完成 | 接入用户偏好设置,实现关键词匹配检测逻辑 |
| 18.3 | ⚖️ 份量缩放-从菜谱导入 | `lib/src/pages/tools/serving_scaler_page.dart` | P2 | ✅ 已完成 | 支持从菜谱详情页跳转时携带食材数据 |
| 18.4 | 📅 菜单规划-数据持久化 | `lib/src/pages/tools/meal_planner_page.dart` | P1 | ✅ 已完成 | 接入SharedPreferences持久化按周保存/加载 |
| 18.5 | 📅 菜单规划-从收藏添加 | `lib/src/pages/tools/meal_planner_page.dart` | P2 | ✅ 已完成 | 实现收藏列表选择弹窗从FavoritesController获取数据 |
| 18.6 | 🛒 购物清单-从菜谱添加入口 | `lib/src/pages/profile/shopping_list_page.dart` | P1 | ✅ 已完成 | 菜谱详情页已有"购物"按钮调用addItemsFromRecipe |
| 18.7 | 🥕 食材详情-营养信息 | `lib/src/pages/tools/ingredient_detail_page.dart` | P2 | ✅ 已完成 | 创建60+食材营养数据库,展示热量/蛋白质/脂肪/碳水/纤维+关键营养素+时令+选购技巧+储存方法 |
| 18.8 | 📊 营养中心-饼图+折线图 | `lib/src/pages/profile/nutrition/nutrition_report_page.dart` | P2 | ✅ 已完成 | 新增MealTypePieChart餐次分布饼图现有折线图+营养素饼图+餐次饼图完整 |

### 实施记录

**第一批P1 — 核心功能缺失)**
1. **18.1 烹饪笔记页面** — 创建CookingNotePage支持添加/编辑/删除笔记,从菜谱详情页跳转
2. **18.2 过敏原检测实现** — AllergenChecker接入PreferenceController11类过敏原关键词匹配
3. **18.4 菜单规划持久化** — 使用StorageService+SharedPreferences按周保存/加载,自动清理过期数据
4. **18.6 购物清单从菜谱添加** — 已确认recipe_detail_page.dart中已有_addToShoppingList方法

**第二批P2 — 功能增强)**
5. **18.3 份量缩放从菜谱导入** — ServingScalerPage支持ingredients+defaultServings参数路由传递数据
6. **18.5 菜单规划从收藏添加** — _addFromFavorites方法CupertinoActionSheet选择收藏菜谱
7. **18.7 食材详情营养信息** — 创建IngredientNutritionDb60+食材),页面展示营养概览/占比/关键营养素/时令/选购/储存
8. **18.8 营养中心饼图+折线图** — 新增MealTypePieChart组件早/午/晚/加餐热量分布),集成到营养报告页

### 新增文件
- `lib/src/services/data/ingredient_nutrition_db.dart` — 食材营养数据库60+种常见食材)

### 验收标准
- [x] 烹饪笔记:可从菜谱详情进入,支持添加/编辑/删除笔记
- [x] 过敏原检测:用户设置过敏原后,菜谱详情页显示过敏原警告
- [x] 菜单规划:退出后重新打开数据不丢失
- [x] 购物清单:菜谱详情页可一键添加食材到购物清单
- [x] 份量缩放:支持从菜谱详情页导入真实食材列表
- [x] 菜单规划:可从收藏列表选择菜谱添加到规划
- [x] 食材详情:显示营养成分数据和选购建议
- [x] 营养报告:包含饼图(营养素占比+餐次分布)和折线图(热量趋势)

---

## 🔴 阶段十九综合Bug修复+功能增强P0/P1/P2— 🔄 进行中

**目标**:修复用户反馈的多个问题,增强现有功能  
**开始时间**2026-04-11  
**关键阻塞**:无  
**优先级**P0=崩溃 P1=功能缺陷 P2=体验优化

### 问题清单

| 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 |
|------|------|---------|--------|------|------|
| 19.1 | 🛠️ 发现页更多按钮卡死 | `lib/src/pages/tools/tools_center_page.dart` | P0 | ✅ 已完成 | 添加ToolsController安全检查防止未注册时崩溃 |
| 19.2 | ⏱️ 烹饪计时器常用预设 | `lib/src/pages/tools/cooking_timer_page.dart` | P1 | ✅ 已完成 | 添加18种常用烹饪步骤快捷添加煮鸡蛋/煮面条/炖汤等) |
| 19.3 | 📋 菜谱详情显示全部数据 | `lib/src/pages/home/recipe_detail_page.dart` | P1 | ✅ 已完成 | 显示浏览量/营养成分/分类/标签/过敏原/时间等全部字段笔记icon横向滚动 |
| 19.4 | 🏷️ 口味偏好分类+标签修复 | `lib/src/models/user_preference_model.dart` | P1 | ✅ 已完成 | 修复PreferenceCategory id字符串解析+children子分类+标签显示 |
| 19.5 | 🔥 热门排行数据修复 | `lib/src/repositories/hot_repository.dart` | P1 | ✅ 已完成 | 添加fallback机制period无数据时回退total |
| 19.6 | 🛒 购物清单按钮增大 | `lib/src/pages/profile/shopping_list_page.dart` | P2 | ✅ 已完成 | 勾选/删除按钮增大至44x44点击区域icon增大至22 |
| 19.7 | 🔄 我的页面左右滑动 | `lib/src/pages/profile/profile_page.dart` | P2 | ✅ 已完成 | 使用PageView替代条件渲染支持手势滑动+SegmentedControl联动 |
| 19.8 | 📝 笔记保存后不显示 | `lib/src/pages/tools/cooking_note_page.dart` | P1 | ✅ 已完成 | 修复异步保存未await+添加Obx响应式刷新 |
| 19.9 | 🌙 深色模式跟随系统 | `lib/src/services/ui/theme_service.dart` | P1 | ✅ 已完成 | 添加DarkModeSource枚举支持system/manual模式监听系统亮度变化 |
| 19.10 | 📝 字体大小全局生效 | `lib/main.dart` | P1 | ✅ 已完成 | 通过GetCupertinoApp.builder设置全局textScaleFactor |
| 19.11 | 📱 底部Tab栏高度+安全区 | `lib/src/widgets/glass/glass_nav_bar.dart` | P1 | ✅ 已完成 | 高度64→68添加底部安全区域padding |
| 19.12 | 🧊 白色区域遮住底部 | `lib/src/widgets/navigation_widgets.dart` | P0 | ✅ 已完成 | 移除SafeArea(bottom:false)GlassNavBar自行处理安全区域 |
| 19.13 | 📂 推荐分类层级导航 | `lib/src/pages/discover/category_browse_page.dart` | P1 | ✅ 已完成 | 大类→小类→菜谱列表→详情新建CategoryBrowsePage |
| 19.14 | 🎲 今天吃什么GetX报错 | `lib/src/pages/discover/what_to_eat_page.dart` | P0 | ✅ 已完成 | 控制器注册+加载优化+分类扁平化 |
| 19.15 | 🔍 搜索显示相似结果 | `lib/src/pages/home/search_page.dart` | P2 | ✅ 已完成 | 无结果时提取关键词模糊搜索,显示相似推荐列表 |
| 19.16 | ⚙️ 设置功能全局生效 | `lib/src/widgets/navigation_widgets.dart` | P1 | 🔄 进行中 | 底部栏样式已全局生效,动画/对话框等仍需逐项接入 |
| 19.17 | 📖 用餐时段推荐页 | `lib/src/pages/tools/eating_times_page.dart` | P2 | ✅ 已完成 | 基于eating_times.json创建5类时段浏览+菜谱列表 |
| 19.18 | 🌐 网络请求优化 | `lib/src/services/api/api_service.dart` | P1 | ✅ 已完成 | 增强日志+重试机制+统一离线检查+缓存解析修复 |

### 实施记录

**19.1 发现页更多按钮卡死**
- 问题:点击收藏页"更多"按钮跳转工具中心时ToolsController未注册导致崩溃
- 方案添加Get.isRegistered检查未注册时显示友好错误页面和返回按钮

**19.2 烹饪计时器常用预设**
- 问题:添加步骤时需要手动输入名称和时长
- 方案添加18种常用烹饪预设煮鸡蛋10min、煮面条8min、炖汤45min等点击自动填充

**19.3 菜谱详情显示全部数据**
- 问题详情页只显示部分数据笔记icon溢出屏幕
- 方案添加statistics/tags/meta/categorizedIngredients/allergens等全部字段显示笔记按钮改为横向滚动

**19.4 口味偏好分类+标签修复**
- 问题API返回id为字符串但模型解析为int导致nullchildren未解析
- 方案PreferenceCategory添加动态类型解析(_parseInt)添加children字段和子分类显示

**19.8 笔记保存后不显示**
- 问题addNote是异步方法但未awaitsetState在数据保存前执行
- 方案await addNote后再setState使用Obx包裹_buildBody实现响应式刷新

**19.9 深色模式跟随系统**
- 问题:深色模式只能手动切换,不支持跟随系统
- 方案添加DarkModeSource枚举(system/manual)main.dart添加WidgetsBindingObserver监听系统亮度变化

**19.10 字体大小全局生效**
- 问题:字体大小设置只在个性化设置页面可见
- 方案通过GetCupertinoApp.builder包裹MediaQuery设置全局textScaleFactor

**19.12 白色区域遮住底部**
- 问题SafeArea(bottom:false)导致底部导航栏下方出现白色区域
- 方案移除外层SafeAreaGlassNavBar自行通过MediaQuery.padding.bottom处理安全区域

**19.13 推荐分类层级导航**
- 问题推荐Tab显示假数据
- 方案创建CategoryBrowsePage实现大类→小类→菜谱列表三级导航CategoryModel添加children字段

### 待解决问题
- 设置功能全局生效:底部栏样式已接入,动画/对话框/消息气泡/卡片方向等仍需逐项接入各页面
- API扩展功能参考API文档扩展更多接口能力阶段十四/十五)

**19.14 今天吃什么GetX报错**
- 问题:页面跳转时控制器未注册,分类数据加载慢
- 方案WhatToEatController在AppBinding注册分类扁平化处理食材1413子类限制20个添加12秒超时

**19.15 搜索显示相似结果**
- 问题:搜索无结果时直接显示空白
- 方案SearchController添加_searchSimilar方法提取关键词子串+常见食材后缀进行模糊搜索,空结果视图显示相似推荐列表

**19.17 用餐时段推荐页**
- 问题设置页需要基于eating_times.json扩展新功能
- 方案创建EatingTimesPage从API获取5类时段数据(standard/combined/frequency/method/other)点击时段搜索菜谱EatingTimeRecipesPage显示结果

**19.18 网络请求优化**
- 问题ApiService日志拦截器无输出、无重试机制、post/put/delete重复代码
- 方案:增强日志拦截器(debugPrint请求/响应/错误)、添加_executeWithRetry(最多2次重试)、统一_executeWithOfflineCheck、修复_tryGetCache缓存数据jsonDecode