# 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及之前),功能已归档至软件特性清单。