- 新增 TastePreferenceService 用于管理用户口味偏好设置 - 实现菜谱分享功能,包括 RecipeShareService 和分享页面 - 更新平台工具类以支持鸿蒙系统检测 - 优化收藏页和农场商店页面的UI交互 - 添加新的参考文献和关于页面内容 - 更新API文档至v3.3.0版本
158 lines
9.6 KiB
Markdown
158 lines
9.6 KiB
Markdown
# 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及之前),功能已归档至软件特性清单。
|