Files
kitchen/CHANGELOG.md
2026-04-13 07:51:51 +08:00

290 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
All notable changes to this project will be documented in this file.
## [0.92.1] - 2026-04-13
### 📁 目录结构重构 — 所有文件夹不超过8个文件
#### controllers/ (14→1+4子文件夹)
- `controllers/recipe/` — recipe_detail_controller, search_controller
- `controllers/home/` — home_controller, main_navigation_controller
- `controllers/tools/` — tools_controller, what_to_eat_controller, bedtime_reminder_controller
- `controllers/data/` — favorites, browse_history, cooking_note, shopping_list, meal_record, weekly_menu
#### models/ (11→4+2子文件夹)
- `models/user/` — user_goal_model, user_preference_model
- `models/data/` — browse_history, cooking_note, meal_record, shopping_item, weekly_menu
#### widgets/根目录 (11→4+2子文件夹)
- `widgets/common/` — adaptive_widgets, loading_indicator, responsive_grid, skeleton_widgets
- `widgets/recipe/` — recipe_card, recipe_image, nutrition_dashboard_card
#### pages/profile/ (11→5+2子文件夹)
- `pages/profile/data/` — cache_manage, data_center, stats_dashboard
- `pages/profile/social/` — chat, favorites, footprints
#### pages/tools/ (14→3+3子文件夹)
- `pages/tools/health/` — allergen_checker, allergen_report, bmi_calculator, meal_time_recommend
- `pages/tools/cooking/` — cooking_note, cooking_timer, serving_scaler, unit_converter
- `pages/tools/planning/` — meal_planner, weekly_menu_planner, eating_times
#### widgets/glass/ (10→7+1子文件夹)
- `widgets/glass/nav/` — glass_nav_bar, liquid_glass_nav_bar, home_app_bar
#### widgets/recipe_detail/ (20→1+4子文件夹)
- `widgets/recipe_detail/header/` — cover_image, title_section, author_card, meta_info_card, time_info
- `widgets/recipe_detail/content/` — ingredients_section, ingredient_details, steps_section, indices_card, picid_card
- `widgets/recipe_detail/interaction/` — action_bar, rating_dialog, statistics_bar, tags_section
- `widgets/recipe_detail/info/` — nutrition_section, ring_chart, allergen_warning, category_breadcrumb, similar_section
#### 代码质量
- ✅ flutter analyze 零错误通过
- 🔧 修复所有相对路径import3个文件
## [0.92.0] - 2026-04-13
### 🚀 21项功能批量实现 — 评分排行榜/过敏原报告/营养可视化/查重检测/运营大屏等
#### 新增功能
- 🏆 **评分排行榜** — HotPage新增sort=rate排序HotRepository/HotController/HotPage三层联动
- 📋 **过敏原报告页面** — AllergenReportPage选择过敏原→生成报告→安全/风险菜谱分类→替代建议
- 📊 **营养可视化环形图** — NutritionRingChart组件蛋白质/脂肪/碳水/纤维占比环形图+热量达标进度条
- 🎯 **筛选步骤引导** — WhatToEatPage新增3步引导指示器选分类→选口味→开转!
- 🔄 **食材替代建议** — IngredientDetailPage新增30+食材替代映射,点击可跳转查看替代食材
- 🍽️ **相似菜品推荐** — RecipeSimilarSection组件菜品详情页底部推荐同分类菜品
- 🍽️ **食材相关菜谱** — IngredientDetailPage底部显示含该食材的菜谱列表
- 💪 **健身餐推荐** — NutritionCenterPage新增减脂餐/增肌餐/生酮餐/碳水补充快捷入口
-**营养中心快捷功能** — 营养目标/营养报告/购物清单快捷入口
- 🔍 **查重检测页面** — DuplicateCheckPage输入菜谱名称→搜索相似→计算相似度→分级显示
- 📈 **运营数据大屏** — StatsDashboardPage今日/本月/历史排行+浏览/点赞汇总统计
- 📈 **数据管理中心增强** — DataCenterPage新增运营数据大屏入口
#### 工具中心新增
- 📋 过敏原报告 — 工具中心健康分类新增入口
- 🔍 查重检测 — 工具中心数据分类新增入口
- 📊 运营数据大屏 — 工具中心数据分类新增入口
#### 路由注册
- `/allergen-report` — 过敏原报告页面
- `/duplicate-check` — 查重检测页面
- `/stats-dashboard` — 运营数据大屏页面
#### 代码质量
- ✅ flutter analyze 零错误通过
- 🔧 修复nutrition_ring_chart num→double类型转换
- 🔧 修复stats_dashboard_page HotItem属性引用(recipeId→id, title→name)
- 🔧 移除allergen_report_page未使用的_isGenerating字段
## [0.91.21] - 2026-04-13
### 🐛 食材详情页闪退修复 + API能力分析文档更新
#### Bug修复
- 🐛 **setState() after dispose() 闪退** — 食材详情页异步操作完成后页面已销毁仍调用setState
- `_loadIngredientFromArgs()` 添加 `mounted` 检查
- `_loadIngredientByName()` 添加 `mounted` 检查
- `_loadIngredients()` 3处 `setState` 全部添加 `mounted` 检查
- 举一反三扫描15个页面的 `await→setState` 模式,确认其他页面已有保护
#### 文档更新
- 📊 **API能力分析全面更新** — PAGE_STRUCTURE_ANALYSIS.md
- 新增"已使用API接口一览"表8个接口文件+9个Repository
- 新增"未使用API接口一览"表18个未调用接口/参数/静态资源)
- 🟢 已有API可直接开发12项新增筛选步骤引导、编码/模糊查询、食谱子分类)
- 🟡 需组合API开发10项新增食材营养详情、食材替代建议、营养目标追踪、统一格式输出
- 🔴 需后端新开发API13项新增烹饪笔记同步、购物清单同步、每周菜单存储
- 新增"推荐开发路线图"三阶段规划
#### 代码修复
- 🍃 **CupertinoIcons.leaf不存在** — 替换为 `Icons.eco`Material添加 `material.dart` import
- 🧹 **移除不必要的 painting.dart import** — 替换为 `material.dart`
## [0.91.20] - 2026-04-13
### 🥬 食材详情本地缓存 + 缓存管理增强
#### 食材缓存
- 🥬 **IngredientModel.toJson** — 新增序列化方法,支持缓存存储
- 💾 **RecipeRepository.fetchIngredientDetail** — 添加缓存逻辑优先读取本地缓存7天有效期
- 🗑️ **缓存管理页面** — 新增食材详情缓存管理
- 概览卡片:显示食材缓存数量
- 操作按钮:清理食材详情缓存
- 食材列表:显示已缓存食材,支持左滑删除、点击查看
- 单项清理:`_clearSpecificIngredientCache`
## [0.91.19] - 2026-04-13
### 🎨 全局UI统一圆角/颜色/毛玻璃/空状态/加载状态
#### 统一圆角
- 📐 **替换89处硬编码圆角**`BorderRadius.circular(N)``DesignTokens.borderRadiusSm/Md/Lg/Xl/Full`
- 映射规则2-8→Sm, 10-16→Md, 18-20→Lg, 22-28→Xl, 25+→Full
- 9个文件缺少 `design_tokens.dart` import已自动添加
#### 统一颜色
- 🎨 **替换20处硬编码颜色**`Color(0xFFFF3B30)` 等 → `DesignTokens.red/green/orange/purple/blue/teal/text2/text3`
- 映射规则FF3B30/F44336→red, 34C759/4CAF50→green, FFB800→gold, 9C27B0→purple, 3498DB→blue, 1ABC9C→teal, 8E8E93→text2
- 修复 `const DesignTokens.red``DesignTokens.red`(静态字段不是构造函数)
- 修复 `Colors.transparent``const Color(0x00000000)`(避免缺少 import
#### 增强EmptyState
- 💎 **毛玻璃卡片包裹** — 新增 `useGlassCard` 参数默认true
- 🎯 **图标圆形背景** — 使用 `DesignTokens.dynamicPrimary` 主题色圆形背景
- 📏 **行高优化** — message 文本 `height: 1.5` 提升可读性
#### 增强LoadingIndicator
- 💎 **毛玻璃卡片包裹** — 新增 `useGlassCard` 参数
- 🎯 **主题色指示器** — 使用 `DesignTokens.dynamicPrimary` 替代 ThemeService 直接引用
- 📐 **centered参数** — 支持非居中场景(如列表底部加载更多)
## [0.91.18] - 2026-04-13
### 🎨 修复主题色切换全局不生效 + 统一动态主题色引用
#### 核心Bug修复
- 🎨 **主题色切换全局不生效** — 根因UI组件使用 `DesignTokens.primary`(静态常量)而非 `DesignTokens.dynamicPrimary`动态读取ThemeService
- 批量替换 `isDark ? DarkDesignTokens.primary : DesignTokens.primary``DesignTokens.dynamicPrimary`34个文件
- 批量替换 `DesignTokens.primary``DesignTokens.dynamicPrimary`33个文件排除design_tokens.dart定义和theme_service.dart默认值
- 修复 `DarkDesignTokens.dynamicPrimary` 误替换为 `DesignTokens.dynamicPrimary`5个文件
- 修复 `const` 上下文错误:移除包含 `dynamicPrimary``const` 构造函数关键字
- 修复默认参数值错误:`AppProgressBar.color``NutritionLineChart.lineColor` 改为可空+初始化列表
#### 影响范围
- 全部59个dart文件中的439处 `DesignTokens.primary` / `DarkDesignTokens.primary` 引用
- 主题色切换现在能即时生效于所有页面
## [0.91.17] - 2026-04-13
### 📝 文档更新:页面结构分析 + 视图文件引用
#### 核心变更
- 📊 **新增页面结构分析文档**`docs/dev/PAGE_STRUCTURE_ANALYSIS.md`(新建)
- 全局导航图MainTabView → 首页/发现/工具/我的 四大Tab
- 12个页面详细结构图文本符号可视化
- 每个页面跳转关系表(触发元素/跳转方式/目标页面/路由/传参)
- 美观问题分析(严重度分级:🟡高/🟡中/🟢低)
- 功能缺失清单优先级P1-P3
- 全局美观/功能问题汇总
- 📄 **页面视图文件引用**`docs/dev/PAGE_STRUCTURE_ANALYSIS.md`
- 为每个页面添加"📄 页面视图文件"章节
- 仅展示前2个关联视图文件主页面+核心组件/控制器)
- 涵盖:首页/发现/搜索/高级搜索/菜品详情/工具中心/我的/食材详情/分类浏览/标签列表/热门排行/今天吃什么
- 📋 **压缩未完成功能清单**`docs/dev/UNFINISHED_FEATURES.md`
- 从~600行压缩至~130行
- 聚焦未完成任务,已完成阶段仅保留汇总
## [0.91.16] - 2026-04-13
### ✨ 搜索功能修复 + 高级搜索 + 食材详情返回首页
#### 核心变更
- 🔍 **修复搜索功能**`lib/src/controllers/search_controller.dart`
- 切换到 `api_filter.php?act=global_search` 接口,解决搜索无结果问题
- 新增4类搜索结果recipeResults/ingredientResults/tasteTagResults/cookingTagResults
- 新增 SearchIngredientResult 模型解析食材搜索结果
- 新增 `totalResultCount`/`hasAnyResult`/`_autoSelectTab` 便捷方法
- 新增 `searchByFilter()` 支持高级筛选搜索
- 📑 **搜索结果分Tab展示**`lib/src/pages/home/search_page.dart`
- 搜索结果动态Tab📖 菜谱 / 🥬 食材 / 👅 口味 / 🍳 工艺
- 每个Tab显示结果数量徽章
- 自动选择有结果的Tab
- 导航栏增加高级搜索入口(⚙️ slider_horizontal_3图标
- 食材结果卡片显示分类名和菜谱数量
- 口味/工艺标签结果使用2列网格布局
- ⚙️ **新增高级搜索页面**`lib/src/pages/home/advanced_search_page.dart`(新建)
- 4个筛选维度📂 菜谱分类 / 👅 口味标签 / 🍳 工艺标签 / 🕐 用餐时段
- 支持多条件组合筛选
- 支持重置筛选条件
- 底部搜索按钮调用 searchByFilter() 执行筛选
- 🔌 **Repository新增接口**`lib/src/repositories/recipe_repository.dart`
- `fetchMainCategories()`: 获取菜谱大类列表(调用 recipe_main_categories 接口)
- 🛤️ **新增路由**`lib/src/config/app_routes.dart`
- 新增 `advancedSearch` 路由(/advanced-search
- 🏠 **食材详情返回首页**`lib/src/pages/tools/ingredient_detail_page.dart`
- 底部按钮从"返回列表"改为"返回首页"
- 使用 `Get.until((route) => route.isFirst)` 返回根路由
- 📦 **CategoryModel增强**`lib/src/models/recipe/category_model.dart`
- fromJson 支持 `recipe_count` 字段映射到 count
## [0.91.15] - 2026-04-13
### ✨ 发现页推荐Tab新增口味/工艺筛选 + 分类导航修复
#### 核心变更
- 👅 **推荐Tab新增口味筛选**`lib/src/pages/discover/discover_page.dart`
- GlassSegmentedControl 从2段扩展为4段📖 菜谱 / 🥬 食材 / 👅 口味 / 🍳 工艺
- 口味Tab显示口味标签网格3列点击跳转 TagRecipeListPage
- 工艺Tab显示工艺标签网格3列点击跳转 TagRecipeListPage
- 🏷️ **标签网格UI**`lib/src/pages/discover/discover_page.dart`
- 新增 `_buildTagGrid` 方法3列紧凑布局圆角卡片+边框
- 空状态显示🏷️图标+"暂无标签数据"
- 点击标签传递 tagName/tagId/tagType 到 TagRecipeListPage
- 📂 **分类网格重构**`lib/src/pages/discover/discover_page.dart`
- 提取 `_buildCategoryGrid` 方法,与标签网格分离
- 提取 `_buildRecommendContent` 方法根据tab索引切换内容
- 🔌 **Repository新增筛选接口**`lib/src/repositories/recipe_repository.dart`
- `fetchTasteTags()`: 获取口味标签列表
- `fetchCookingTags()`: 获取工艺标签列表
- `filterRecipesByTag()`: 按口味/工艺/分类筛选菜谱
- 🐛 **分类导航修复**`lib/src/pages/discover/category_browse_page.dart`
- 修复点击菜谱/食材分类闪退问题BOTTOM OVERFLOWED
- 使用 CustomScrollView + SliverList 替代 Column + Expanded
## [0.91.14] - 2026-04-13
### ✨ 菜品详情页功能完善 — 评分显示 + 交互跳转
#### 核心变更
-**新增 RecipeRating 模型**`lib/src/models/recipe/recipe_model.dart`
- 对齐 API v2.8.0 rating 字段score/nums/display/status/level/star
- 支持评分状态判断none/few/normal/sufficient/abnormal
- 支持评分等级判断(优秀/推荐/一般/较差/不推荐)
- 提供 `displayText`/`hasRating` 等便捷属性
- 📊 **更新 RecipeStatistics 模型**`lib/src/models/recipe/recipe_model.dart`
- 新增 `rateNums`/`rateScore` 字段,替代旧的 `recommends`/`recommendScore`
- 新增 `rating` (RecipeRating?) 字段
- 旧字段标记为 `@Deprecated`,保持向后兼容
- fromJson 兼容 `rate_nums`/`recommends`/`recommend_count` 多种API字段名
- 📈 **重构 RecipeStatisticsBar**`lib/src/widgets/recipe_detail/recipe_statistics_bar.dart`
- 评分列从"⭐推荐"改为星级+评分文本+等级标签
- 5星评级显示CupertinoIcons.star_fill/star
- 评分等级彩色标签(🌟金色优秀/⭐蓝色推荐/✨灰色一般/⚠️红色较差)
- 无评分时显示灰色星星+"暂无评分"
- 🖼️ **更新 RecipeCoverImage**`lib/src/widgets/recipe_detail/recipe_cover_image.dart`
- 封面图叠加层新增评分徽章(⭐ 4.5
- 有评分时显示评分徽章,无评分时显示热度标签
- 评分等级对应不同徽章颜色
- 🏷️ **标签点击跳转**`lib/src/widgets/recipe_detail/recipe_tags_section.dart`
- 点击标签跳转到 TagRecipeListPage
- 标签添加 chevron_right 图标提示可点击
- 📂 **分类面包屑点击跳转**`lib/src/widgets/recipe_detail/recipe_category_breadcrumb.dart`
- 非末级分类可点击跳转到 CategoryBrowsePage
- 末级分类高亮不可点击
- 面包屑项添加 chevron_right 图标提示可点击
- 🔄 **RecipeDetailPage 传递 rating**`lib/src/pages/home/recipe_detail_page.dart`
- RecipeCoverImage 和 RecipeStatisticsBar 接收 rating 参数
#### 文档更新
- 📋 更新 `docs/dev/UNFINISHED_FEATURES.md` 新增阶段二十九:菜品详情页功能完善
> 📌 已移除更早版本记录(0.91.13及之前),功能已归档至软件特性清单。