# 📋 未完成功能清单 > 文档创建: 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% ✅ | | **合计** | **124** | **95** | **29** | **77%** | --- ## 五、开发阶段 ### 阶段一:基础设施(P1)✅ 已完成 **目标**:搭建 Hive 本地数据库 + 数据模型 + 持久化收藏 ## 六、页面导航规划 ``` 发现页 └── 📊 营养中心 ├── 🍽️ 饮食日记(日历视图 + 每日记录列表) │ └── ➕ 添加记录(底部弹窗:选餐次 + 选菜谱/手动输入) ├── 🔥 热量追踪(环形进度 + 三大营养素比例 + 目标线) └── 📊 分析报告(周/月趋势折线图 + 营养素饼图) 我的页面 ├── 📋 购物清单(分类展示 + 勾选已购) ├── ⏱️ 烹饪计时器(多步骤倒计时) ├── 🔄 用量换算 ├── 🎯 BMI 计算器 └── ⚙️ 设置 ├── 🎯 每日营养目标 ├── 🔔 用餐提醒 └── ⚠️ 过敏原管理 ``` --- ## 八、开发优先级矩阵 | 功能 | 用户价值 | 技术难度 | 依赖关系 | 优先级 | |------|---------|---------|---------|--------| | 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 --- ## 🔴 阶段九:架构修复+核心Bug(P0/P1) **目标**:修复架构违规和核心功能缺失 **发现时间**:2026-04-10(flutter analyze 全面扫描 + 项目分析) ## 🟡 阶段十:代码质量提升(P1/P2) **目标**:提升代码可维护性和健壮性 **前置依赖**:阶段九完成 **关键阻塞**:无 | 序号 | 任务 | 产出文件 | 优先级 | 状态 | 说明 | |------|------|---------|--------|------|------| | 10.1 | 统一 Controller 注册 | `lib/src/bindings/feature_binding.dart` | P1 | ✅ 已完成 | 创建 FeatureBinding,路由添加 binding 参数,页面改用 Get.find() | | 10.2 | HiveService 数据迁移机制 | `lib/src/services/data/hive_service.dart` | P2 | ✅ 已完成 | 添加 schema 版本号 + 迁移函数,支持 Box 升级 | | 10.3 | 统一错误处理 | `lib/src/errors/app_exception.dart` | P1 | ✅ 已完成 | 定义 AppException + AppErrorCode + Result,统一错误码映射 | | 10.4 | 离线缓存策略 | `lib/src/services/data/cache_service.dart` | P1 | ✅ 已完成 | 新增 CacheService,支持 TTL 过期 + 离线读取 | | 10.5 | DesignTokens 与 ThemeService 解耦 | `lib/src/services/ui/theme_service.dart` | P2 | ✅ 已完成 | 新增 DynamicTokens 类,ThemeService.tokens 统一获取主题颜色 | ### 验收标准 - [x] 所有 Controller 通过 Binding 注册 - [x] HiveService 支持 schema 版本迁移 - [x] Repository 统一抛出 AppException - [x] 离线时首页可显示缓存数据 - [x] 页面颜色值统一通过 ThemeService 获取 --- ## 🟢 阶段十一:烹饪模式+营养仪表盘(P1) **目标**:实现核心增强功能,提升应用价值 **前置依赖**:阶段九完成 --- ## 🟢 阶段十二:社交+通知增强(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` | 系统分享 | ❌ | ⚠️ 需适配 | | `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` + 健康算法 ### 验收标准 - [ ] "为你推荐"展示个性化推荐菜谱 - [ ] 每周菜单可规划三餐并生成购物清单 - [ ] 份量缩放支持多种单位换算 - [ ] 就寝提醒根据饮食时间智能推荐 --- ## 🟢 阶段十四:接口能力挖掘(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/favorites/favorites_page.dart` | P2 | ❌ 未实现 | iOS 26 Liquid Glass风格+优化按钮尺寸 | | 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()` 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()` 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 整洁美观,按钮易于点击 - [ ] 热门排行显示真实数据,无数据时有友好提示 ### 技术要点 #### 骨架屏组件 ```dart class SkeletonLoader extends StatefulWidget { final double width; final double height; final BorderRadius? borderRadius; const SkeletonLoader({ required this.width, required this.height, this.borderRadius, }); } class _SkeletonLoaderState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; @override void initState() { super.initState(); _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 1500), )..repeat(); } @override Widget build(BuildContext context) { return AnimatedBuilder( animation: _controller, builder: (context, child) { return Container( width: widget.width, height: widget.height, decoration: BoxDecoration( color: Colors.grey[300], borderRadius: widget.borderRadius, ), ); }, ); } } ``` #### Controller 安全获取 ```dart FavoritesController? _favoritesController; @override void initState() { super.initState(); try { _favoritesController = Get.find(); } catch (e) { debugPrint('FavoritesController not found: $e'); _favoritesController = null; } } ``` #### 超时保护 ```dart Future> fetchFeedRecipes() async { try { final results = await _recipeRepository.fetchFeedRecipes() .timeout(const Duration(seconds: 12)); return results; } on TimeoutException { debugPrint('fetchFeedRecipes timeout'); return []; } catch (e) { debugPrint('fetchFeedRecipes error: $e'); return []; } } ``` - **数据文件**:`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内容,丰富平台 | ### 验收标准 - [ ] 用户可注册/登录 - [ ] 收藏数据云端同步 - [ ] 菜谱可评论 - [ ] 收到系统通知 - [ ] 浏览历史云端同步 - [ ] 用户可上传菜谱 --- ## 📎 软件特性功能汇总 > 以下功能已开发完成或开发中,从历史版本号归档而来 | 功能 | 状态 | 首次版本 | 说明 | |------|------|---------|------| | 热量追踪+营养分析 | ✅ 已完成 | 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 | | 工具中心 | ✅ 已完成 | v0.9x | 工具入口Bar+分类筛选+使用频率统计 | | 过敏原检查工具 | ✅ 已完成 | v0.9x | 食材过敏原查询与分类浏览 | | 用餐时段推荐 | ✅ 已完成 | v0.9x | 根据时间推荐早中晚餐菜谱 | | 每周菜单规划 | ✅ 已完成 | v0.9x | 一周三餐规划与进度追踪 | | 食材详情查询 | ✅ 已完成 | v0.9x | 食材营养信息与选购指南 | --- ## 🛠️ 工具中心开发记录 > 2026-04-10 开发完成 ### 已实现工具列表 | 工具名称 | 路由 | 是否联网 | 说明 | |---------|------|---------|------| | ⏱️ 烹饪计时器 | `/tools/timer` | ❌ 离线 | 多步骤倒计时 | | 📏 用量换算 | `/tools/converter` | ❌ 离线 | 常用单位换算 | | 🧮 BMI 计算器 | `/tools/bmi` | ❌ 离线 | 含健康建议 | | ⚖️ 份量缩放 | `/tools/scaler` | ❌ 离线 | 按比例调整食材用量 | | 🥜 过敏原检查 | `/tools/allergen` | ✅ 联网 | 食材过敏原查询 | | 🍽️ 用餐时段推荐 | `/tools/meal-time` | ✅ 联网 | 根据时间推荐菜谱 | | 📅 每周菜单规划 | `/tools/planner` | ❌ 离线 | 一周三餐规划 | | 🥕 食材详情查询 | `/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为#EBEBF5,text3为#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] 工具中心跳转无分裂感