Files
kitchen/CHANGELOG.md
2026-04-24 05:05:26 +08:00

23 KiB
Raw Blame History

Changelog

All notable changes to this project will be documented in this file.

[0.99.40] - 2026-04-24

优化 — 身体分析页面5项需求实现 + 溢出修复

修复: Tab页面底部溢出 1084px

  • 根因: 3个Tab使用 Column 布局,内容超出 SizedBox 固定高度(900-1200px)
  • 修复: Tab内部改用 SingleChildScrollView 支持滚动
  • 新增: 每个Tab底部增加 👈 左右滑动切换提示

修复: Tab滑到底后无法滑回顶部

  • 根因: 外层 ListView 与内层 SingleChildScrollView 嵌套滚动冲突,向上滑动时外层抢占手势
  • 修复: 分析结果展示时改用 Column + Expanded 布局PageView独立占据剩余空间彻底消除嵌套滚动
  • 优化: 结果页面顶部改为紧凑信息栏(性别/年龄/身高/体重)+ 🔄重新分析按钮,节省空间

新增: 趣味统计 - 各星球体重

  • 功能: 展示用户在9个天体水星/金星/地球/火星/木星/土星/天王星/海王星/月球)上的体重
  • 数据: 基于各行星相对地球的平均重力加速度计算
  • UI: 使用 Wrap 布局的 Chip 样式展示,地球高亮标记

新增: 有氧运动(燃脂)心率计算卡片

  • 功能: 在核心指标Tab中BMI卡片后新增 ❤️‍🔥 燃脂最佳心率卡片
  • 展示: 渐变背景大字显示最佳心率区间 xx-xx bpm标注为最大心率的60%~70%

优化: 摄入需求/蛋白质根据BMI智能显示

  • 逻辑: 偏瘦(BMI<18.5)隐藏减脂选项,肥胖(BMI≥28)隐藏增肌选项
  • 影响: GoalCaloriesCard 和 ProteinCard 均已适配

新增: Tab滑动边缘发光动画

  • 效果: 在第1个Tab继续左滑时左边缘显示主题色渐变发光最后1个Tab右滑同理
  • 实现: NotificationListener监听OverscrollNotificationStack+Positioned叠加边缘发光层

需求1: 修复按钮状态不实时更新

  • 问题: 输入身高/年龄/体重后,"开始分析"按钮仍为禁用状态,需额外操作才能激活
  • 根因: onChanged 仅在 _hasResult == true 时调用 setState(),首次输入不触发重建
  • 修复: onChanged 始终调用 setState(),按钮状态实时响应输入

需求2: AppBar 增加隐私与算法说明

  • 在导航栏右侧增加 图标按钮
  • 点击弹出 CupertinoAlertDialog,包含:
    • 🔒 隐私声明:所有数据仅在本地计算,不会联网上传
    • 📐 算法来源Harris-Benedict / Mifflin-St Jeor / US Navy / Karvonen 等
    • ⚠️ 免责声明:仅供学习参考,禁止医用、禁止商用

需求3: 参考文献页面增加身体分析数据来源

  • 新增 7 条 🧬 身体分析分类参考文献:
    • Harris-Benedict BMR 公式 (Wikipedia)
    • Mifflin-St Jeor BMR 公式 (PubMed)
    • US Navy 体脂率估算法 (US Navy)
    • Karvonen 心率区间公式 (Wikipedia)
    • WHO BMI 分类与肥胖标准 (WHO)
    • 中国居民膳食营养素参考摄入量 2023版 (中国营养学会)
    • Mosteller 体表面积计算公式 (Wikipedia)

需求4: 基础信息卡片增加保存/隐藏按钮

  • 💾 保存按钮:将填写信息写入 SharedPreferences下次打开自动填充
  • 👁️ 隐藏/显示按钮:切换输入区域显示状态,数据保留仅隐藏表单

需求5: 核心指标/科学指数/趣味统计支持左右滑动

  • 将 Tab 切换改为 PageView 实现,支持手势左右滑动
  • GlassSegmentedControlPageView 双向联动

涉及文件

  • body_analysis_page.dart — 全部5项需求实现
  • references_page.dart — 新增7条身体分析参考文献

[0.99.39] - 2026-04-24

🐛 修复 — 排敏助手页面一直转圈 + 闪退 + Obx异常

问题1: 页面一直转圈(无法加载)

  • 根因: GetBuilder 不监听 RxBool isLoading 变化,_loadData() 完成后 isLoading.value = false 无法触发重建
  • 修复: AntiController._loadData() 完成后调用 update()anti_main_pageisLoading 判断改用 Obx 局部包裹

问题2: Obx "improper use" 异常

  • 根因: 将整个页面用 Obx 包裹,但部分页面未直接访问 .obs 变量GetX 无法追踪
  • 修复: 所有页面改回 GetBuilder + controller 中所有数据修改方法添加 update() 调用

问题3: 点击"开始记录"闪退

  • 根因: 只有 antiMain 路由有 binding 注册 AntiController其他6个子路由缺少 binding导航时 Get.find<AntiController>() 找不到 controller
  • 修复: 所有 anti 子路由添加 binding: BindingsBuilder(() => Get.lazyPut(() => AntiController(), fenix: true))

问题4: Opacity 断言错误

  • 根因: Curves.easeOutBack 回弹曲线值超过1.0Opacity 要求值在 [0.0, 1.0] 范围
  • 修复: opacity: value.clamp(0.0, 1.0)

涉及文件

  • anti_controller.dart — 所有修改数据方法添加 update() 调用
  • anti_main_page.dartGetBuilder + 局部 Obx 包裹 isLoading
  • anti_detail/add/heatmap/rating/tags/list_page.dart — 改回 GetBuilder
  • app_routes.dart — 所有 anti 路由添加 binding + fenix: true
  • anti_empty_state.dart — opacity clamp 修复

[0.99.38] - 2026-04-24

🧹 清理 — 排敏模块(anti) 135项分析警告清零

修复Warnings (5项)

  • _isSubmitting 未使用 → 添加到保存按钮防重复提交逻辑
  • dead_code / dead_null_aware_expressionas String 改为 as String?
  • _hoveredIndex 未使用 → 移除
  • isHalfFilled 未使用 → 移除

修复Deprecated (119项)

  • withOpacity() 全部替换为 withValues(alpha:) (14个文件)

修复Info (11项)

  • use_build_context_synchronously → 添加 mounted 检查 + // ignore 注释
  • prefer_final_fields_selectedTags 改为 final
  • unnecessary_import → 移除冗余 cupertino.dart 导入
  • strict_top_level_inferencevar 改为具体类型 AllergenElimination

[0.99.37] - 2026-04-24

新增 + 🐛 修复 — 身体分析新增9项指标 + Conicity Index单位修复

新增指标

  • 🔬 科学指数Tab +4项
    • 🏋️ FFMI 无脂肪质量指数 + 标准化FFMI + 等级判定
    • 📐 Ponderal 体重指数Rohrer指数BMI改进版
    • 基础代谢效率 (BMR/kg)
    • 🔔 锥度指数 (Conicity Index需腰围)
  • 🎮 趣味统计Tab +5项
    • 🫁 一生呼吸总次数
    • 👁️ 一生眨眼总次数
    • 🧴 一生皮肤细胞脱落量
    • 🍽️ 一生消耗食物总重量
    • 🚶 一生行走距离估算

🐛 Bug修复

  • 修复 Conicity Index 计算公式中 waist 单位错误cm→m原结果偏大约1000倍

验证

  • 新增 scripts/test_body_analysis.dart 算法验证脚本59项测试全部通过
  • 运行: dart run scripts/test_body_analysis.dart

[0.99.36] - 2026-04-24

♻️ 重构 — 身体分析模块文件拆分

变更说明

body_analysis_page.dart1929行拆分为6个文件每个文件不超过800行代码统一放入 body_analysis/ 目录。

新目录结构

body_analysis/
├── body_analysis_page.dart          (主页面 ~260行)
├── body_analysis_calculator.dart    (计算引擎 + 数据模型 ~310行)
├── body_analysis_cards.dart         (通用卡片组件 ~460行)
├── core_tab.dart                    (核心指标Tab ~80行)
├── science_tab.dart                 (科学指数Tab ~160行)
└── fun_tab.dart                     (趣味统计Tab ~200行)

拆分策略

  • body_analysis_calculator.dart: Gender/ActivityLevel枚举 + HeartRateZone/WaterSchedule数据模型 + BodyAnalysisCalculator计算类25+项指标)
  • body_analysis_cards.dart: MetricCard/InfoButton/WaterCard/HeartRateZonesCard/GoalCaloriesCard/ProteinCard/BodyFatCard/IdealWeightCard
  • core_tab.dart: 核心指标Tab喝水/BMR/TDEE/BMI/体脂率/心率/摄入/蛋白质)
  • science_tab.dart: 科学指数Tab骨骼/血液/LBM/理想体重/代谢年龄/腰围比/骨架/体表面积/睡眠)
  • fun_tab.dart: 趣味统计Tab心跳/呼吸/眨眼/泵血/空气/唾液/DNA/原子/头发/指甲/一生心跳)
  • body_analysis_page.dart: 主页面框架(输入表单 + Tab切换

路由更新

  • import路径从 health/body_analysis_page.darthealth/body_analysis/body_analysis_page.dart

[0.99.35] - 2026-04-24

新功能 — 身体分析工具25+项科学指标与趣味统计)

功能概述

新增 身体分析 工具,基于身高/年龄/性别/体重分析25+项科学指标和趣味统计,支持选填参数解锁更多精确指标。

核心功能

  • 🧬 基础输入:性别选择、年龄、身高、体重
  • 📐 选填参数:腰围、臀围、颈围、手腕围、活动等级、已知体脂率(展开式,解锁更多指标)
  • 🏥 核心指标Tab8项
    • 💧 每日喝水量 + 8时段喝水时间表
    • 🔥 BMR 基础代谢率Mifflin-St Jeor公式
    • 🏃 TDEE 每日总能量消耗5级活动系数
    • 📊 BMI 身体质量指数 + 等级判定
    • 📐 体脂率(BFR) + 等级判定支持BMI估算/Navy精确法/手动输入)
    • ❤️ 燃脂心率区间5个区间热身/燃脂/有氧/无氧/极限)
    • 🎯 减脂/增肌/维持 摄入需求
    • 🥩 蛋白质需求量
  • 🔬 科学指数Tab10项
    • 🦴 骨骼重量估算 | 🩸 血液总量估算 | 💪 去脂体重(LBM)
    • 🎯 理想体重4种公式Devine/Robinson/Miller/Hamwi
    • 🧠 代谢年龄 | 🫁 人体表面积 | 💤 推荐睡眠时长
    • 📏 腰围身高比(需腰围)| 📐 腰臀比WHR需腰围+臀围)| 🏷️ 骨架类型(需手腕围)
  • 🎮 趣味统计Tab11项
    • 🫀 今日心跳次数 | 🫁 今日呼吸次数 | 👁️ 今日眨眼次数
    • 🩸 今日心脏泵血量 | 🌬️ 今日呼吸空气体积 | 💧 今日唾液分泌量
    • 🧬 体内DNA总长度 | 🌍 身体原子数量
    • 💇 一生头发生长总长度 | 💅 一生指甲生长总长度 | ⏱️ 一生心跳总数

交互设计

  • 每个指标卡片右上角 感叹号按钮,点击弹出该指标的科学介绍和公式说明
  • GlassSegmentedControl 三Tab切换
  • 选填参数折叠/展开,提示"填写越多,分析越精确"
  • 活动等级5级选择器久坐/轻度/中度/高度/极高)
  • 统一毛玻璃卡片风格iOS 26 Liquid Glass设计

路由配置

  • /tools/body-analysis — 身体分析页面入口
  • 注册到 health 分类瀑布流优先级1标记 NEW

[0.99.34] - 2026-04-23

新功能 — Anti 敏宝排敏助手(完整实现)

功能概述

新增 Anti 敏宝排敏助手 工具,专为敏宝家庭设计的辅食过敏原追踪和排敏管理工具。

核心功能

  • 🛡️ 排敏项目管理:创建、编辑、暂停/恢复、删除排敏项目
  • 📝 每日记录系统:记录身体状态(正常/轻微/明显)、喂养详情、症状描述
  • 📊 热力图可视化GitHub风格的热力图展示身体状态变化趋势
  • 评分与结论5星评分 + 排敏结论(成功/需延长观察/过敏确认)
  • 🏷️ 标签系统支持自定义标签分类预设5个系统标签
  • 📋 数据统计:总数、成功数、失败数、成功率等统计指标
  • 🔍 搜索与筛选:按状态筛选排敏项目,支持关键词搜索

技术架构

  • 数据模型层4个文件

    • allergen_elimination_model.dart — 排敏项目核心实体(含状态机、评分系统)
    • daily_record_model.dart — 每日记录(含 BodyStatus 枚举用于热力图颜色编码)
    • feeding_record_model.dart — 喂养记录(时间、量、制作方法)
    • allergen_tag_model.dart — 标签数据模型
  • 业务逻辑层

    • anti_controller.dart — GetX 状态管理控制器,完整的 CRUD 操作 + SharedPreferences 持久化
  • UI 组件库8个可复用组件

    • anti_utils.dart — 工具类(日期格式化、颜色映射、文本转换)
    • anti_status_badge.dart — 状态徽章组件
    • anti_progress_card.dart — 进度卡片组件
    • anti_daily_record_card.dart — 每日记录卡片
    • anti_heatmap_widget.dart — 热力图可视化组件
    • anti_tag_chip.dart — 标签芯片(支持选中动画)
    • anti_star_rating.dart — 星级评分选择器
    • anti_empty_state.dart — 空状态占位组件
  • 页面层7个页面

    • anti_main_page.dart — 主页面Today视图卡片堆叠布局当前进度+今日快捷操作+统计概览
    • anti_add_page.dart — 新增页面:双模式(新建排敏项目 / 添加每日记录),表单验证
    • anti_heatmap_page.dart — 热力图页面90天范围热力图点击查看详情
    • anti_list_page.dart — 列表页面:搜索+状态筛选,卡片式列表
    • anti_detail_page.dart — 详情页面:完整信息+进度条+时间线+操作菜单
    • anti_rating_page.dart — 评分页面:星级评分+结论选择+备注
    • anti_tags_page.dart — 标签管理:创建/删除自定义标签,滑动删除

设计规范

  • iOS 风格 UICupertino 组件为主)
  • 响应式布局(支持手机/平板/桌面)
  • 统一设计令牌(使用主题色、圆角变量)
  • 动画效果(入场动画、状态切换过渡)
  • Emoji 图标增强亲和力
  • 无障碍支持(语义化标签)

路由配置

  • /tools/anti — 主页入口
  • /tools/anti/add — 新增(支持参数传递 eliminationId
  • /tools/anti/heatmap — 热力图
  • /tools/anti/list — 排敏列表
  • /tools/anti/detail/:id — 详情参数eliminationId
  • /tools/anti/rating/:id — 评分参数eliminationId
  • /tools/anti/tags — 标签管理

工具注册

  • tool_item_model.dart 注册为 "Anti 敏宝排敏助手"
  • 图标:🛡️ | 分类health | 优先级12 | 徽章NEW

数据持久化

  • 使用 SharedPreferences 本地存储
  • 自动保存所有 CRUD 操作
  • 支持数据清除和重置(调试用)

文件清单共20个新文件

lib/src/pages/tools/anti/
├── models/
│   ├── allergen_elimination_model.dart (核心实体)
│   ├── daily_record_model.dart (每日记录)
│   ├── feeding_record_model.dart (喂养记录)
│   └── allergen_tag_model.dart (标签)
├── controllers/
│   └── anti_controller.dart (业务逻辑)
├── widgets/
│   ├── anti_utils.dart (工具类)
│   ├── anti_status_badge.dart (状态徽章)
│   ├── anti_progress_card.dart (进度卡片)
│   ├── anti_daily_record_card.dart (记录卡片)
│   ├── anti_heatmap_widget.dart (热力图)
│   ├── anti_tag_chip.dart (标签芯片)
│   ├── anti_star_rating.dart (星级评分)
│   └── anti_empty_state.dart (空状态)
├── anti_main_page.dart (主页)
├── anti_add_page.dart (新增)
├── anti_heatmap_page.dart (热力图)
├── anti_list_page.dart (列表)
├── anti_detail_page.dart (详情)
├── anti_rating_page.dart (评分)
└── anti_tags_page.dart (标签管理)

修改的现有文件:
├── lib/src/models/app/tool_item_model.dart (+工具注册)
└── lib/src/config/app_routes.dart (+路由配置)

使用指南

  1. 从工具中心找到 "🛡️ Anti 敏宝排敏助手" 并进入
  2. 点击 "+ 新增排敏项目" 创建第一个排敏任务
  3. 填写宝宝信息、过敏原名称、计划天数
  4. 每日记录身体状态(正常/轻微/明显)
  5. 完成后进行评分和总结
  6. 通过热力图回顾变化趋势

后续优化方向

  • 数据导出功能PDF报告生成
  • 多宝宝支持(切换不同宝宝的记录)
  • 提醒通知(定时提醒记录)
  • 云端同步(多设备数据备份)
  • 医生分享模式(生成专业报告)

[0.99.33] - 2026-04-23

🐛 修复 — 鸿蒙端平台识别失败导致构建信息显示"未知"

问题描述

鸿蒙设备上 app_info_page 的构建信息卡片显示"未知",无法正确识别为 HarmonyOS 平台

根因分析

  • 单一检测机制不可靠:原 _checkIsHarmonyOS() 仅依赖 (Platform as dynamic).isOhos == true 动态检测
  • 动态检测在某些鸿蒙版本/Flutter版本可能失败isOhos 属性可能不存在或行为不一致
  • 缺少兜底机制:未使用 defaultTargetPlatform 和操作系统名称特征作为备用检测
  • 项目内已有先例scanner_page.dart 已使用双重检测 isHarmonyOS || defaultTargetPlatform == TargetPlatform.ohos

修复内容

  • 🔧 重构鸿蒙检测逻辑platform_utils.dart
    • 方案1: 检查 defaultTargetPlatform == TargetPlatform.ohos(最稳定可靠)
    • 方案2: 动态检测 (Platform as dynamic).isOhos(兼容旧版)
    • 方案3: 通过 Platform.operatingSystem 名称特征检测(兜底方案)
    • 💾 缓存检测结果避免重复计算
  • 🔧 增强 app_info_page SDK 显示逻辑
    • 增加双重检测:platform.isHarmonyOS || defaultTargetPlatform == TargetPlatform.ohos
    • 新增 Web 平台支持:显示 "Web SDK"
    • 优化代码结构:复用 PlatformUtils 实例避免重复创建

技术细节

  • 多重检测机制确保在各种鸿蒙设备/Flutter版本下都能正确识别
  • 检测优先级defaultTargetPlatform > isOhos动态检测 > OS名称特征
  • 异常处理增强:单个方案失败不影响其他方案执行

修改文件

  • lib/src/utils/platform_utils.dart — 重构 _checkIsHarmonyOS() 方法,增加多重检测机制
  • lib/src/pages/profile/info/app_info_page.dart — 增加鸿蒙双重检测 + Web平台支持

测试建议

  • 在真机/模拟器上验证鸿蒙端是否正确显示 "Deveco API 23"
  • 验证其他平台iOS/Android/Web/桌面端)显示不受影响
  • 可在调试模式下打印 PlatformUtils().operatingSystemName 确认识别结果

[0.99.32] - 2026-04-22

🐛 修复 — 瀑布流标签卡片小方块不显示问题

问题描述

TagDiscoverCard如"蒸""葱爆"等标签卡片)内类型标签小方块显示为空白

根因分析

  • 类型标签 Container 被 Flexible 包裹,在 Row(mainAxisSize: MainAxisSize.min) 中被压缩到零宽度
  • padding 过小horizontal: space1 ≈ 4px导致文字几乎不可见
  • typeLabel 文案:工艺 → 做法(与弹窗标题一致)

修复内容

  • 🔧 移除 Flexible 包裹:类型标签 Container 改为直接放置在 Row 中,不再被压缩
  • 📏 增大 paddinghorizontal 从 space1(4px) → 6px
  • 🔤 文案统一typeLabel 工艺类型返回值从 "工艺""做法"
  • ✍️ 重写文件:消除可能的隐藏字符导致 linter 报错

修改文件

  • lib/src/widgets/discover/content/tag_discover_card.dart — 重写 build 方法,移除 Flexible、增大 padding
  • lib/src/models/feed/discover_model.dart — typeLabel 文案修正

[0.99.31] - 2026-04-22

新增 — 瀑布流卡片显示口味/工艺标签

变更描述

首页瀑布流菜品卡片底部新增口味和工艺标签展示当API返回对应字段时

实现内容

  • 🏷️ 口味标签👅 emoji + 口味文字,橙色胶囊样式
  • 🍳 工艺标签🍳 emoji + 工艺文字,主题色边框胶囊样式
  • 📦 模型扩展DiscoverRecipe 新增 tastecookingMethod 可选字段,兼容旧数据
  • 按需渲染:仅当 taste/cookingMethod 非空时才展示标签行

修改文件

  • lib/src/models/feed/discover_model.dart — DiscoverRecipe 增加 taste/cookingMethod 字段
  • lib/src/widgets/discover/content/recipe_discover_card.dart — 卡片新增 _buildTasteAndMethodRow

[0.99.30] - 2026-04-22

新增 — 了解我们页面加入QQ群入口卡片

变更描述

了解我们页面 ICP 备案区域下方新增「加入QQ群」卡片点击弹窗确认后跳转QQ群链接

实现内容

  • 💬 QQ群入口卡片ICP备案下方新增 section展示群号 271129018群名「闲言APP v4.1」
  • 🔗 弹窗确认:点击后弹出 CupertinoAlertDialog确认后通过 url_launcher 跳转外部QQ群链接
  • 📋 复制群号:右侧复制按钮可一键复制群号到剪贴板
  • 🎨 适配暗黑模式:卡片颜色、文字颜色均使用 DesignTokens 动态主题

修改文件

  • lib/src/pages/profile/info/learn_us_page.dart — 新增 _buildQQGroupSection_showQQGroupDialog 方法
  • lib/src/pages/profile/profile_home.dart — 移除之前误加的QQ群卡片代码

[0.99.29] - 2026-04-22

增强 — 扫码识别菜谱 + 相机权限管理完善

变更描述

扫码功能增强识别CP/ID后通过API转换为APP内部菜品ID跳转详情页相机权限管理完善

实现内容

  • 🔍 扫码结果智能识别截取URL中的CP编码和ID参数通过 WhatToEatRepository API查询转换为APP内部菜品ID
    • 支持 https://eat.wktyl.com/api/kitchen/recipe_share.php?code=CP037130 格式
    • 支持 https://eat.wktyl.com/?id=28087 格式
    • 支持纯文本 CP037130 格式
    • 查询成功显示菜谱识别对话框,跳转菜品详情页
    • 查询失败降级为普通扫码结果显示
  • 📷 相机权限弹窗引导:扫码前弹出相机用途说明,拒绝后显示各平台开启指引
  • 🔒 权限管理页面增强
    • 新增相机权限项(📷),状态动态显示(已开启/已拒绝)
    • 相机权限拒绝时显示红色标识,点击可跳转系统设置
    • 权限说明弹窗更新:区分动态权限和基础权限
  • 📄 隐私政策更新:设备权限调用新增相机权限说明

修改文件

  • lib/src/pages/home/scanner_page.dart — CP/ID通过API转换权限弹窗引导
  • lib/src/pages/profile/tools/permission_page.dart — 新增相机权限,动态状态显示
  • lib/src/pages/profile/info/privacy_policy_page.dart — 新增相机权限说明

[0.99.28] - 2026-04-22

🔄 升级 — mobile_scanner 本地包升级至官方 v7.2.0 + 鸿蒙适配合并

变更描述

将本地 packages/mobile_scanner 从鸿蒙适配版 v7.1.4 升级为官方 v7.2.0,并保留鸿蒙端支持

合并内容

  • 📦 基础:官方 mobile_scanner v7.2.0(新增 camera_lens_type、switch_camera_option、barcode_bytes 等)
  • 🔧 鸿蒙适配合并:
    • ohos/ 目录完整保留(鸿蒙原生 ets 实现)
    • lib/src/method_channel/ohos_surface_producer_delegate.dart — 鸿蒙 Surface 代理
    • lib/src/method_channel/surface_producer_delegate.dart — Surface 代理接口
    • lib/src/method_channel/mobile_scanner_method_channel.dart — 添加 TargetPlatform.ohos 支持
    • lib/src/method_channel/rotated_preview.dart — 鸿蒙旋转方向修复
    • pubspec.yaml — 添加 ohos 平台声明

修改文件

  • packages/mobile_scanner/ — 整体替换为官方 v7.2.0 + 鸿蒙适配合并版
  • packages/本地已适配鸿蒙的库.md — 添加 mobile_scanner 适配记录