richarjiang
0594831c9f
feat(medications): 添加药品详情页面和删除功能
...
新增药品详情页面,支持查看药品信息、编辑备注、切换提醒状态和删除药品
- 创建动态路由页面 /medications/[medicationId].tsx 展示药品详细信息
- 添加语音输入备注功能,支持 iOS 语音识别
- 实现药品删除确认对话框和删除操作
- 优化药品卡片点击跳转详情页面的交互
- 添加删除操作的加载状态和错误处理
- 改进药品管理页面的开关状态显示和加载指示器
2025-11-10 14:46:13 +08:00
richarjiang
25b8e45af8
feat(medications): 实现完整的用药管理功能
...
添加了药物管理的核心功能,包括:
- 药物列表展示和状态管理
- 添加新药物的完整流程
- 服药记录的创建和状态更新
- 药物管理界面,支持激活/停用操作
- Redux状态管理和API服务层
- 相关类型定义和辅助函数
主要文件:
- app/(tabs)/medications.tsx - 主界面,集成Redux数据
- app/medications/add-medication.tsx - 添加药物流程
- app/medications/manage-medications.tsx - 药物管理界面
- store/medicationsSlice.ts - Redux状态管理
- services/medications.ts - API服务层
- types/medication.ts - 类型定义
2025-11-10 10:02:53 +08:00
richarjiang
3aafc50702
feat(medications): 添加用药管理功能
...
- 新增用药标签页,包含完整的用药记录界面
- 实现用药卡片组件,支持状态显示(已服用/未服用/已错过)
- 增强日期选择器,添加"回到今天"快捷功能
- 添加用药相关的图标支持(pills.fill, plus)
- 集成用药路由配置,支持标签页导航
该功能为用户提供完整的用药管理体验,包括用药记录、状态跟踪和日期筛选等核心功能。
2025-11-06 17:51:06 +08:00
richarjiang
a228280ca4
feat(onboarding): 添加新用户引导流程
...
实现了完整的应用引导功能,包括:
- 新增引导页面UI,包含健康数据追踪、轻断食计划和健康挑战三个介绍页面
- 添加引导状态持久化存储,使用AsyncStorage管理用户完成状态
- 修改应用启动逻辑,根据引导状态决定跳转到主页或引导页
- 在开发者选项中添加重置引导状态功能,方便测试
- 更新路由配置和存储键常量,统一管理引导相关配置
2025-11-06 15:22:31 +08:00
richarjiang
9b1a40cea3
feat(background-task): 实现原生与JS层的任务同步机制
...
解决后台任务在JS监听器未就绪时丢失的问题。新增任务缓存队列,当检测到无JS监听器时将任务暂存,并启动20秒超时计时器等待JS初始化完成。JS层通过markJSReady接口通知原生层准备就绪,触发缓存任务的立即执行。超时后自动切换到默认处理逻辑,确保任务不丢失。
2025-11-06 09:20:52 +08:00
richarjiang
ea22901553
feat(background-task): 完善iOS后台任务系统并优化断食通知和UI体验
...
- 修复iOS后台任务注册时机问题,确保任务能正常触发
- 添加后台任务调试辅助工具和完整测试指南
- 优化断食通知系统,增加防抖机制避免频繁重调度
- 改进断食自动续订逻辑,使用固定时间而非相对时间计算
- 优化统计页面布局,添加身体指标section标题
- 增强饮水详情页面视觉效果,改进卡片样式和配色
- 添加用户反馈入口到个人设置页面
- 完善锻炼摘要卡片条件渲染逻辑
- 增强日志记录和错误处理机制
这些改进显著提升了应用的稳定性、性能和用户体验,特别是在iOS后台任务执行和断食功能方面。
2025-11-05 11:23:33 +08:00
richarjiang
d74046498d
# 分析方案
...
## 变更内容总结
1. **iOS后台任务系统重构** - 修复后台任务无法自动运行的问题
2. **日志系统优化** - 改进日志记录机制,添加队列和批量写入
3. **文档新增** - 添加后台任务修复总结和测试指南文档
4. **应用启动优化** - 添加后台任务状态检查和恢复逻辑
5. **版本号更新** - Info.plist版本从1.0.23升级到1.0.24
## 提交信息类型判断
- **主要类型**: `fix` - 这是一个重要的bug修复,解决了iOS后台任务无法自动运行的核心问题
- **作用域**: `ios-background` - 专注于iOS后台任务功能
- **影响**: 这个修复对iOS用户的后台功能至关重要
## 提交信息
fix(ios-background): 修复iOS后台任务无法自动运行的问题
主要修复内容:
- 修复BackgroundTaskBridge任务调度逻辑,改用BGAppRefreshTaskRequest
- 添加任务完成后自动重新调度机制,确保任务持续执行
- 优化应用生命周期管理,移除重复的后台任务调度
- 在应用启动时添加后台任务状态检查和恢复功能
- 将默认任务间隔从30分钟优化为15分钟
次要改进:
- 重构日志系统,添加内存队列和批量写入机制,提升性能
- 添加写入锁和重试机制,防止日志数据丢失
- 新增详细的修复总结文档和测试指南
技术细节:
- 使用BGAppRefreshTaskRequest替代BGProcessingTaskRequest
- 实现任务过期自动重新调度
- 添加任务执行状态监控和恢复逻辑
- 优化错误处理和日志输出
影响范围: iOS后台任务调度、通知推送、应用状态管理
2025-11-04 19:14:53 +08:00
richarjiang
f80a1bae78
feat(background-task): 实现iOS原生后台任务V2系统并重构锻炼通知消息模板
...
- 新增iOS原生BackgroundTaskBridge桥接模块,支持后台任务注册、调度和完成
- 重构BackgroundTaskManager为V2版本,集成原生iOS后台任务能力
- 在AppDelegate中注册后台任务处理器,确保应用启动时正确初始化
- 重构锻炼通知消息生成逻辑,使用配置化模板提升可维护性
- 扩展健康数据类型映射,支持更多运动项目的中文显示
- 替换原有backgroundTaskManager引用为backgroundTaskManagerV2
2025-11-04 09:41:10 +08:00
richarjiang
fbffa07f74
feat(push-notification): 添加用户登录后自动更新推送token绑定功能
...
- 新增updateTokenUserId方法用于更新设备令牌的用户ID绑定关系
- 添加onUserLogin方法在用户登录成功后自动更新token绑定
- 优化checkAndRegisterToken逻辑,确保每次应用启动都更新用户ID绑定
- 修改UpdateTokenRequest接口,将appVersion和osVersion设为可选参数
- 在用户登录成功后自动触发推送token用户ID绑定更新
2025-11-03 17:58:17 +08:00
richarjiang
635d835a50
feat(fasting): 完善断食通知系统并优化错误提示
...
在应用启动时添加断食通知初始化逻辑,改进错误消息提示,并新增后台任务支持断食通知同步。同时优化挑战加入后的数据刷新流程和会员卡片显示样式。
主要更改:
- 添加断食通知启动检测和初始化
- 改进断食通知错误消息,提供更详细的用户指导
- 新增断食通知后台任务处理
- 优化挑战加入后自动刷新详情和排名数据
- 调整会员价格字体大小以提升视觉效果
2025-11-03 14:13:49 +08:00
richarjiang
ce382794ba
style(membership): 调整会员卡片价格字体大小
2025-11-03 11:17:06 +08:00
richarjiang
0265ecfac2
feat: 添加后台任务调试工具并优化水提醒任务逻辑
2025-11-03 10:55:30 +08:00
richarjiang
16c2351160
feat: 移除目标管理功能模块
...
删除了完整的目标管理功能,包括目标创建、编辑、任务管理等相关页面和组件。同时移除了相关的API服务、Redux状态管理、类型定义和通知功能。应用版本从1.0.20升级到1.0.21。
2025-10-31 08:49:22 +08:00
richarjiang
7cd290d341
feat(membership): 重构会员系统架构并优化VIP卡片显示
...
- 创建独立的会员服务模块 services/membership.ts,统一管理会员计划元数据和工具函数
- 新增 membershipSlice Redux状态管理,集中处理会员数据和状态
- 重构个人中心VIP会员卡片,支持动态显示会员计划和有效期
- 优化会员购买弹窗,使用统一的会员计划配置
- 改进会员数据获取流程,确保状态同步和一致性
2025-10-29 16:08:58 +08:00
richarjiang
fcf1be211f
feat(vip): 实现VIP服务权限控制和食物识别功能限制
...
- 添加VIP服务权限检查hook,支持免费使用次数限制
- 为食物识别功能添加登录验证和VIP权限检查
- 优化RevenueCat用户标识同步逻辑
- 修复会员购买状态检查的类型安全问题
- 为营养成分分析添加登录验证
2025-10-29 09:44:30 +08:00
richarjiang
eaa7f7275c
feat(ui): 调整个人中心和会员购买界面布局
...
- 将推送通知设置移至开发者选项section
- 移除会员购买按钮的协议接受状态限制
- 优化购买按钮的禁用条件逻辑
2025-10-28 11:16:32 +08:00
richarjiang
71a8bb9740
feat(toast): 实现原生Toast系统并优化会员购买错误处理
...
- 新增iOS原生Toast模块(NativeToastManager),提供毛玻璃风格的Toast展示
- 重构ToastContext为原生模块调用,添加错误边界和回退机制
- 优化会员购买流程的错误处理,使用RevenueCat标准错误码
- 调整购买按钮高度和恢复购买按钮字体大小,改善UI体验
- 移除不必要的延迟和注释代码,提升代码质量
2025-10-28 11:04:34 +08:00
richarjiang
db8b50f6d7
feat(membership): 重构会员权益对比表并优化购买界面布局
...
- 重构权益对比数据结构,支持独占、有限、无限三种权限类型
- 新增权限图标显示逻辑,区分VIP和普通用户权限状态
- 优化会员卡片布局,采用三段式布局提升视觉效果
- 实现悬浮购买按钮,支持Liquid Glass毛玻璃效果
- 增强购买流程验证,添加自动选择产品和详细错误处理
- 调整界面间距和样式,提升整体用户体验
2025-10-27 14:43:19 +08:00
richarjiang
82edb2593c
feat(membership): 重构会员购买界面并添加图标库使用规范
...
- 将 MaterialIcons 替换为 Ionicons 以保持图标库一致性
- 重新设计会员购买界面,采用分段卡片布局和权益对比表格
- 添加 Liquid Glass 兼容的悬浮返回按钮
- 优化套餐卡片样式,使用渐变背景和标签展示
- 添加会员权益对比功能,清晰展示 VIP 与普通用户差异
- 更新任务文档,记录图标库使用规范和按钮组件 Liquid Glass 兼容性实现模式
2025-10-27 08:19:15 +08:00
richarjiang
2e11f694f8
feat(membership): 实现会员系统和购买流程
...
- 创建 MembershipModalContext 统一管理会员弹窗
- 优化 MembershipModal 产品套餐展示和购买流程
- 集成 RevenueCat SDK 并初始化内购功能
- 在个人中心添加会员 Banner,引导非会员用户订阅
- 修复日志工具的循环引用问题,确保错误信息正确记录
- 版本更新至 1.0.20
新增了完整的会员购买流程,包括套餐选择、购买确认、购买恢复等功能。会员 Banner 仅对非会员用户展示,已是会员的用户不会看到。同时优化了错误日志记录,避免循环引用导致的序列化失败。
2025-10-24 09:16:04 +08:00
richarjiang
b75a8991ac
feat(auth): 添加登录验证到食物记录相关功能
...
- 在食物拍照、语音记录和营养成分分析功能中添加登录验证
- 使用 ensureLoggedIn 方法确保用户已登录后再调用服务端接口
- 使用 pushIfAuthedElseLogin 方法处理需要登录的页面导航
- 添加新的营养图标资源
- 在路由常量中添加 FOOD_CAMERA 路由定义
- 更新 Memory Bank 任务文档,记录登录验证和路由常量管理的实现模式
2025-10-16 17:45:52 +08:00
richarjiang
339c748a0f
feat(profile): 在个人资料页面显示免费AI使用次数
2025-10-16 17:17:36 +08:00
richarjiang
c6084fe702
feat(nutrition): 添加营养分析历史记录删除和图片预览功能
...
- 新增删除营养分析记录功能,支持本地状态更新和API调用
- 添加图片全屏预览功能,支持缩放和手势操作
- 实现Liquid Glass风格的删除按钮,包含兼容性处理
- 优化历史记录页面布局和交互体验
- 更新Memory Bank文档,添加Liquid Glass按钮实现指南
2025-10-16 16:43:45 +08:00
richarjiang
e4ddd21305
feat(nutrition): 添加营养成分分析历史记录功能
...
- 新增历史记录页面,支持查看、筛选和分页加载营养成分分析记录
- 在分析页面添加历史记录入口,使用Liquid Glass效果
- 优化分析结果展示样式,采用卡片式布局和渐变效果
- 移除流式分析相关代码,简化分析流程
- 添加历史记录API接口和类型定义
2025-10-16 16:02:48 +08:00
richarjiang
b27099c6d9
feat(nutrition): 优化营养成分表分析功能并移除流式显示
...
- 移除流式分析文本显示,简化用户界面
- 修复ImagePicker媒体类型配置,使用数组格式
- 简化API响应处理逻辑,直接使用服务端返回数据
- 移除旧格式转换函数,统一使用新的API响应格式
- 清理冗余状态变量和UI组件,提升代码可维护性
2025-10-16 12:46:43 +08:00
richarjiang
5013464a2c
feat(nutrition): 添加营养成分表拍照分析功能
...
新增营养成分表拍照识别功能,用户可通过拍摄食物包装上的成分表自动解析营养信息:
- 创建成分表分析页面,支持拍照/选择图片和结果展示
- 集成新的营养成分分析API,支持图片上传和流式分析
- 在营养雷达卡片中添加成分表分析入口
- 更新应用版本至1.0.19
2025-10-16 12:16:08 +08:00
richarjiang
bef7d645a8
feat(auth): 为登录页面添加Liquid Glass效果并更新文案
...
- 使用expo-glass-effect为返回按钮添加毛玻璃效果
- 添加兼容性处理,在不支持时使用fallback样式
- 更新副标题文案为"健康生活,自律让我更自由"
- 优化返回按钮尺寸和圆角样式
2025-10-15 19:22:38 +08:00
richarjiang
d39a32c0d8
feat(fasting): add auto-renewal and reset functionality for fasting plans
...
- Implement auto-renewal logic for completed fasting cycles using dayjs
- Add reset button with information modal in FastingOverviewCard
- Configure iOS push notifications for production environment
- Add expo-media-library and react-native-view-shot dependencies
- Update FastingScheduleOrigin type to include 'auto' origin
2025-10-15 19:06:18 +08:00
richarjiang
039138f7e4
refactor(push): 使用logger替换console日志输出
...
将推送通知服务中的console.log和console.error替换为统一的logger工具,
提高日志管理的一致性和可维护性
2025-10-15 10:07:41 +08:00
richarjiang
6cdd2fdf9c
feat(push): 新增iOS APNs推送通知功能
...
- 添加推送通知管理器和设备令牌管理
- 实现推送通知权限请求和令牌注册
- 新增推送通知设置页面
- 集成推送通知初始化到应用启动流程
- 添加推送通知API服务和本地存储管理
- 更新个人页面添加推送通知设置入口
2025-10-14 19:25:35 +08:00
richarjiang
435f5cc65c
feat: 适配 headerbar ios26
2025-10-14 16:31:19 +08:00
richarjiang
cf069f3537
feat(fasting): 重构断食通知系统并增强可靠性
...
- 新增 useFastingNotifications hook 统一管理通知状态和同步逻辑
- 实现四阶段通知提醒:开始前30分钟、开始时、结束前30分钟、结束时
- 添加通知验证机制,确保通知正确设置和避免重复
- 新增 NotificationErrorAlert 组件显示通知错误并提供重试选项
- 实现断食计划持久化存储,应用重启后自动恢复
- 添加开发者测试面板用于验证通知系统可靠性
- 优化通知同步策略,支持选择性更新减少不必要的操作
- 修复个人页面编辑按钮样式问题
- 更新应用版本号至 1.0.18
2025-10-14 15:05:11 +08:00
richarjiang
e03b2b3032
feat(fasting): 新增轻断食功能模块
...
新增完整的轻断食功能,包括:
- 断食计划列表和详情页面,支持12-12、14-10、16-8、18-6四种计划
- 断食状态实时追踪和倒计时显示
- 自定义开始时间选择器
- 断食通知提醒功能
- Redux状态管理和数据持久化
- 新增tab导航入口和路由配置
2025-10-13 19:21:29 +08:00
richarjiang
971aebd560
feat(workout): 新增锻炼结束监听和个性化通知功能
...
实现了iOS HealthKit锻炼数据实时监听,当用户完成锻炼时自动发送个性化鼓励通知。包括锻炼类型筛选、时间范围控制、用户偏好设置等完整功能,并提供了测试工具和详细文档。
2025-10-13 10:05:02 +08:00
12883c5410
perf: 删除不必要的代码
2025-10-11 21:55:39 +08:00
ed3a178aa0
feat(workout): 优化心率图表性能并移除每日总结通知功能
...
- 重构心率数据采样算法,采用智能采样保留峰值、谷值和变化率大的点
- 减少心率图表最大数据点数和查询限制,提升渲染性能
- 移除图表背景线样式,简化视觉呈现
- 完全移除每日总结通知功能相关代码和调用
2025-10-11 21:53:18 +08:00
richarjiang
d43d8c692f
feat(workout): 重构锻炼模块并新增详细数据展示
...
- 移除旧的锻炼会话页面和布局文件
- 新增锻炼详情模态框组件,支持心率区间、运动强度等详细数据展示
- 优化锻炼历史页面,增加月度统计卡片和交互式详情查看
- 新增锻炼详情服务,提供心率分析、METs计算等功能
- 更新应用版本至1.0.17并调整iOS后台任务配置
- 添加项目规则文档,明确React Native开发规范
2025-10-11 17:20:51 +08:00
79ddd41a49
feat(workout): 新增锻炼历史记录功能与健康数据集成
...
- 新增锻炼历史页面,展示最近一个月的锻炼记录详情
- 添加锻炼汇总卡片组件,在统计页面显示当日锻炼数据
- 集成HealthKit锻炼数据获取,支持多种运动类型和详细信息
- 完善锻炼数据处理工具,包含统计分析和格式化功能
- 优化后台任务,随机选择挑战发送鼓励通知
- 版本升级至1.0.16
2025-10-02 22:13:59 +08:00
303c36025b
feat: 优化代码
2025-10-01 22:59:05 +08:00
richarjiang
47c8bfc5bc
feat(water): 后台任务同步HealthKit饮水记录并优化目标读取逻辑
2025-09-30 15:10:48 +08:00
richarjiang
3e6f55d804
feat(challenges): 排行榜支持单位显示与健身圆环自动上报进度
...
- ChallengeRankingItem 新增 unit 字段,支持按单位格式化今日进度
- FitnessRingsCard 监听圆环闭合,自动向进行中的运动挑战上报 1 次进度
- 过滤已结束挑战,确保睡眠、喝水、运动进度仅上报进行中活动
- 移除 StressMeter 调试日志与 challengesSlice 多余打印
2025-09-30 14:37:15 +08:00
richarjiang
b0602b0a99
feat(challenges): 新增挑战详情页与排行榜及轮播卡片交互
...
- 重构挑战列表为横向轮播,支持多进行中的挑战
- 新增挑战详情页 /challenges/[id]/index 与排行榜 /challenges/[id]/leaderboard
- ChallengeProgressCard 支持小时级剩余时间显示
- 新增 ChallengeRankingItem 组件展示榜单项
- 排行榜支持分页加载、下拉刷新与错误重试
- 挑战卡片新增已结束角标与渐变遮罩
- 加入/退出挑战时展示庆祝动画与错误提示
- 统一背景渐变色与卡片阴影细节
2025-09-30 11:33:24 +08:00
richarjiang
d32a822604
feat(challenges): 支持即将开始与已结束挑战的禁用态及睡眠挑战自动进度上报
2025-09-30 10:21:50 +08:00
richarjiang
8f847465ef
feat(challenges): 新增挑战鼓励提醒后台任务与通知支持
...
- 在 backgroundTaskManager 中增加 executeChallengeReminderTask,每日检查已加入且未打卡的挑战并发送鼓励通知
- 扩展 ChallengeNotificationHelpers 提供 sendEncouragementNotification 方法
- 新增 NotificationTypes.CHALLENGE_ENCOURAGEMENT 及对应点击跳转处理
- challengesApi 补充 checkedInToday 字段用于判断今日是否已打卡
- 临时注释掉挑战列表与详情页头部的礼物/分享按钮,避免干扰主流程
2025-09-29 17:24:07 +08:00
richarjiang
d74bd214ed
feat(challenges): 登录态守卫与进度条动画优化
...
- 在 _layout 中仅当已登录时才拉取挑战列表,避免未授权请求
- 挑战详情页加入 ensureLoggedIn 守卫,未登录时跳转登录
- ChallengeProgressCard 新增分段进度动画,提升视觉反馈
- 升级版本号至 1.0.15
2025-09-29 15:39:52 +08:00
richarjiang
970a4b8568
feat(challenges): 新增 ChallengeProgressCard 组件并接入喝水挑战进度上报
...
- 抽离进度卡片为独立组件,支持主题色自定义与复用
- 挑战列表页顶部展示进行中的挑战进度
- 喝水记录自动上报至关联的水挑战
- 移除旧版 challengeSlice 与冗余进度样式
- 统一使用 value 字段上报进度,兼容多类型挑战
2025-09-29 15:14:59 +08:00
richarjiang
9c86b0e565
feat(challenges): 移除旧版挑战页面并优化详情页交互
...
删除废弃的 app/challenge 目录及其所有文件,统一使用新的 challenges 模块。在详情页新增退出挑战确认弹窗,优化浮动 CTA 文案与交互,调整进度卡片样式与布局。
2025-09-29 14:13:10 +08:00
richarjiang
31c4e4fafa
feat(challenges): 移除进度徽章与副标题并动态计算剩余天数
...
- 使用 dayjs 实时计算挑战结束剩余天数,替代接口返回的固定值
- 删除 badge、subtitle 字段及相关渲染逻辑,简化 UI
- 注释掉未使用的打卡操作区块,保持界面整洁
2025-09-29 10:25:22 +08:00
richarjiang
b80af23f4f
feat(challenges): 优化挑战列表与详情页交互体验
...
- 替换 Image 为 expo-image 并启用缓存策略
- 调整礼物按钮尺寸与图标大小
- 加入挑战失败时弹出 Toast 提示
- 统一异步流程并移除冗余状态监听
- 清理调试日志与多余空行
2025-09-29 09:59:47 +08:00
richarjiang
7259bd7a2c
feat(challenges): 接入真实接口并完善挑战列表与详情状态管理
...
- 新增 challengesApi 服务层,支持列表/详情/加入/退出/打卡接口
- 重构 challengesSlice,使用 createAsyncThunk 管理异步状态
- 列表页支持加载、空态、错误重试及状态标签
- 详情页支持进度展示、打卡、退出及错误提示
- 统一卡片与详情数据模型,支持动态状态更新
2025-09-28 14:16:32 +08:00