Files
kitchen/CHANGELOG.md
Developer ceb11d9aac feat: 新增口味偏好服务和菜谱分享功能
- 新增 TastePreferenceService 用于管理用户口味偏好设置
- 实现菜谱分享功能,包括 RecipeShareService 和分享页面
- 更新平台工具类以支持鸿蒙系统检测
- 优化收藏页和农场商店页面的UI交互
- 添加新的参考文献和关于页面内容
- 更新API文档至v3.3.0版本
2026-04-18 08:29:31 +08:00

158 lines
9.6 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.98.9] - 2026-04-18
### ✨ 新增 — 菜谱分享本地存储 + 3天自动过期清理
#### 菜谱分享数据推送Flutter → PHP
- 📤 **RecipeShareService**:新增菜谱分享数据推送服务,将菜谱数据推送到 `recipe_share.php` 本地存储
- 🔄 **先推送后生成**:二维码海报生成前先推送数据到服务器,推送失败仍显示海报(降级策略)
- 📱 **完整数据推送**:推送菜谱标题/简介/封面/分类/食材/营养/评分等完整信息
- 🎯 **CRUD接口**:支持创建/更新/删除菜谱分享数据
#### recipe_share.php 重构
- 💾 **本地JSON存储**从调用外部API改为本地JSON文件存储`cache/kitchen/recipe_*.json`
-**3天自动过期**数据写入时自动设置3天过期时间读取时自动检查并清理过期文件
- 🧹 **清理接口**:新增 `?act=cleanup` 接口,手动清理所有过期数据
- 📋 **数据目录共享**:与 `kitchen.php` 共享 `cache/kitchen/` 目录
#### 二维码海报组件改进
- 🎨 **加载提示**:推送数据时显示 CupertinoActivityIndicator 加载动画
- 📦 **RecipeModel传递**`showQrPosterSheet` 新增 `recipe` 参数,支持完整菜谱数据传递
- 🔗 **recipe_action_bar**:新增 `recipe` 字段,详情页传递完整菜谱对象
#### 修改文件
- `lib/src/services/data/recipe_share_service.dart` — 新增菜谱分享数据推送服务
- `lib/src/widgets/recipe_detail/interaction/recipe_qr_poster.dart` — 改为先推送数据再生成二维码
- `lib/src/widgets/recipe_detail/interaction/recipe_action_bar.dart` — 新增 recipe 参数
- `lib/src/pages/home/recipe_detail_page.dart` — 传递 recipe 到操作栏
- `docs/api/recipe_share.php` — 重构为本地存储新增3天过期清理功能
## [0.98.8] - 2026-04-18
### ✨ 新增 — 二维码分享URL生成 + PHP分享页面
#### 二维码URL生成
- 🔗 **QR URL重构**二维码URL从硬编码改为通过 `ApiConfig.baseUrl` 动态生成
- 📱 **URL格式**`https://eat.wktyl.com/api/recipe_share.php?code=CP00001``?id=123`
- 🆔 **双重参数**:支持 `code`(菜谱编码)和 `recipeId`数字ID两种查询方式
- 🔄 **降级策略**:优先使用 code无 code 时使用 recipeId均无则生成 app scheme URL
#### PHP分享页面recipe_share.php
- 🍳 **美观分享页**iOS风格设计深色模式自适应毛玻璃效果流畅动画
- 📊 **访问统计**:自动记录每次扫码访问,按菜谱统计浏览量
- 📝 **访问日志**记录IP、UA、来源等保留最近200条
- 🏷️ **OG标签**:支持微信/社交媒体分享预览(标题/描述/封面图)
- 🔌 **API代理**:通过调用 `api.php` 获取数据,不直接查询数据库
- 📈 **管理接口**`?act=stats` 查看统计、`?act=log` 查看日志、`?act=api` 返回JSON
#### 修改文件
- `lib/src/widgets/recipe_detail/interaction/recipe_qr_poster.dart` — QR URL生成逻辑重构新增 recipeId 参数
- `lib/src/widgets/recipe_detail/interaction/recipe_action_bar.dart` — 新增 recipeId 传递
- `lib/src/pages/home/recipe_detail_page.dart` — 传入 recipe.id 到二维码组件
- `docs/api/recipe_share.php` — 新增PHP分享页面
## [0.98.7] - 2026-04-18
### ✨ 新增 — 口味偏好持久化 + 菜品详情页偏好标注
#### 口味偏好持久化
- 💾 **TastePreferenceService**:新增口味偏好持久化服务,所有偏好值写入 SharedPreferences
- 🥗 **饮食类型/辣度/口味/烹饪水平/人数/健康目标**6项偏好值全部持久化应用重启后自动恢复
- 🔄 **PreferencePage 接入**:偏好设置页改用 `TastePreferenceService` 读写,移除本地 State 临时变量
- 🧹 **枚举统一**DietType/SpiceLevel/CookingLevel/ServingSize/HealthGoal 统一定义在 `TastePreferenceService`
#### 菜品详情页偏好标注
- 💚 **我的偏好卡片**:在菜品详情页过敏原警告下方新增「我的偏好」标注卡片
- 🌶️ **辣度匹配**:对比用户辣度偏好与菜品口味标签,标注「很匹配/一般/不太匹配」
- 👅 **口味匹配**:对比用户甜/咸/酸偏好与菜品口味,计算匹配度
- 👨‍🍳 **难度匹配**:对比用户烹饪水平与菜品难度,标注匹配度
- 🥗 **饮食类型匹配**:检测菜品食材是否包含用户饮食禁忌(素食/纯素/低碳水/生酮/清真等)
- ⚠️ **过敏原标注**:只标注用户选择的过敏原,显示「安全」或「含过敏原」
#### 修改文件
- `lib/src/services/user/taste_preference_service.dart` — 新增口味偏好持久化服务
- `lib/src/pages/profile/settings/preference_page.dart` — 接入 TastePreferenceService
- `lib/src/widgets/recipe_detail/info/recipe_taste_preference.dart` — 新增菜品偏好标注组件
- `lib/src/pages/home/recipe_detail_page.dart` — 集成偏好标注组件
- `lib/src/app_binding.dart` — 注册 TastePreferenceService
## [0.98.6] - 2026-04-18
### ✨ 新增与改进
#### 软件信息页面
- 🖼️ **头部卡片图标**:将 emoji 替换为应用图标 `icon_128x128.png`,图标与文本左右居中对齐
- 📦 **assets/icons 注册**:在 `pubspec.yaml` 中添加 `assets/icons/` 资源目录
#### 参考文献页面
- 📚 **新增参考文献**:从 8 条扩充至 18 条,覆盖 BMI、过敏原、特殊人群、烹饪安全、慢病防控、GI 数据库等
- 🏷️ **分类标签优化**:分类名增加 emoji 前缀(🥗 营养健康、⚠️ 过敏原、⚖️ 体重管理等)
#### 偏好设置页面(重写)
- 🥗 **饮食类型**:普通/素食/纯素/低碳水/生酮/地中海/清真
- 🌶️ **辣度偏好**:不吃辣/微辣/中辣/重辣/变态辣
- 👅 **口味偏好**:甜度/咸度/酸度滑块调节
- 👨‍🍳 **烹饪水平**:厨房小白/入门选手/熟练厨师/厨艺大师
- 🍚 **每餐人数**1-2人/3-4人/5人+
- 🎯 **健康目标**:减脂/增肌/控糖/心血管/肠胃/免疫/骨骼(多选)
-**偏好摘要卡片**:底部汇总所有偏好设置
- 🔄 **重置功能**:一键重置所有偏好
#### 路由修复
- 🐛 **修复 /about 路由未注册**:在 `PageRegistry.registerAll` 中补充 about/privacyPolicy/guide 路由
- 🐛 **修复 app_routes.dart 乱码**`'分类浏览'` 替换损坏的 Unicode 字符
## [0.98.5] - 2026-04-18
### ✨ 新增 — 软件信息页面 + 了解我们页面
#### 软件信息页面
- 📱 **新增软件信息页面**:展示应用版本、技术栈、构建信息、后端服务、设备信息、更新日志
- 🎨 **毛玻璃头部卡片**:渐变背景 + BackdropFilter 毛玻璃效果,展示应用名称和版本
- ⚙️ **技术栈展示**2×2 网格布局展示 Dart / GetX / Hive / Dio 技术栈
- 🔨 **构建信息**版本号、内部版本号、打包时间、Build SDK支持点击复制
- 🖥️ **后端服务信息**:展示 PHP / Nginx / API 地址
- 📱 **设备信息**操作系统、设备类型、Dart 版本(动态获取)、渲染引擎(三层检测+标注)、屏幕尺寸和像素密度
- 🎨 **渲染引擎检测**三层检测机制API → 引擎 → 平台),使用 `defaultTargetPlatform` + `TargetPlatform.ohos` 精准识别
- 🐛 **修复鸿蒙端设备信息显示 Unknown**`PlatformUtils.isHarmonyOS` 改用 `Platform.isOhos` 替代字符串匹配
- 🐛 **修复鸿蒙端渲染引擎显示默认**:改用 `defaultTargetPlatform` 枚举匹配,鸿蒙端正确显示 `Impeller (平台)`
- 📋 **更新日志**:展示版本更新记录
- 🔓 **隐藏开发者模式**:连续点击 Flutter 标签 5 次激活开发者模式
- 📄 **开源框架弹窗**:展示所有依赖的开源协议
- 🔗 **关于页面入口修改**:软件信息从打开 URL 改为跳转 AppInfoPage
#### 了解我们页面
- 📖 **了解我们页面**:新增 `LearnUsPage`展示开发者信息、团队信息、官网链接和ICP备案号
- 🔗 **关于页面入口**:关于页面"了解我们"入口从打开外部链接改为跳转新页面
- 🎨 **iOS风格UI**:使用 CupertinoPageScaffold + DesignTokens 统一主题,支持深色模式
- 📋 **链接确认弹窗**:点击外部链接时弹出 CupertinoAlertDialog 确认,支持复制链接
#### 修改文件
- `lib/src/pages/profile/app_info_page.dart` — 新增软件信息页面
- `lib/src/pages/profile/learn_us_page.dart` — 新增了解我们页面
- `lib/src/pages/profile/about_page.dart` — 软件信息/了解我们入口改为跳转新页面
## [0.98.4] - 2026-04-18
### 🐛 修复 — 小妈菜园交互优化 + 商店布局修复
#### 变更
- 🔇 **消息限流机制**:添加 Toast 限流5秒内最多2次10秒内最多3次重复消息自动过滤避免气泡弹出过于频繁
- 🔄 **消息系统统一**:所有 `Get.snackbar` 替换为 `ToastService`,统一使用项目消息服务
- 📐 **商店布局重构**:种子商店卡片从单行布局改为上下分行(名称+购买按钮同行,信息标签换行),使用 `Wrap` 防止溢出
- 📤 **分享功能确认**`FarmShareUtil` 已支持图片+文本分享(`Share.shareXFiles` + `text`),无需修改
#### 修改文件
- `lib/src/controllers/farm/farm_game_controller.dart` — 添加消息限流、替换 Get.snackbar
- `lib/src/controllers/farm/farm_shop_controller.dart` — 替换 Get.snackbar 为 ToastService
- `lib/src/pages/tools/farm/farm_shop_page.dart` — 重构卡片布局,信息标签和购买按钮分行
> 📌 已移除较早版本记录(0.98.3及之前),功能已归档至软件特性清单。