richarjiang
51d0dabc9a
refactor(expo-updates): 重构manifest构建逻辑,支持动态获取metadata和真实hash计算
2025-12-05 22:34:33 +08:00
richarjiang
190bc5bce9
refactor(expo-updates): 优化更新ID生成逻辑,基于bundle hash确保ID唯一性
2025-12-05 20:11:29 +08:00
richarjiang
14d791f552
feat: 添加Expo Updates服务端模块和就医资料管理功能
2025-12-05 16:08:53 +08:00
richarjiang
de67132a36
refactor: 移除workouts模块依赖,清理训练计划相关注释
2025-12-05 10:28:50 +08:00
richarjiang
b46d99fe69
feat: 集成Redis模块并重构限流存储机制
2025-12-05 10:03:59 +08:00
richarjiang
8a43b1795b
fix: invite
2025-12-04 18:56:01 +08:00
richarjiang
eecc14d45a
feat(health-profiles): 禁用家庭成员模型的时间戳字段
2025-12-04 17:55:51 +08:00
richarjiang
2d7e067888
feat(health-profiles): 添加健康档案模块,支持健康史记录、家庭健康管理和档案概览功能
2025-12-04 17:15:11 +08:00
richarjiang
03bd0b041e
feat(medications): 添加药品过期预警功能,支持多时间段提醒和标记重置
2025-12-03 19:22:46 +08:00
richarjiang
b12956d80a
feat(ai): 优化健康日报生成,集成用户健康统计数据并增强视觉提示
2025-12-03 10:13:05 +08:00
richarjiang
2ff2c58b43
feat(users): 添加用户每日健康数据步数字段,支持步数记录和更新
2025-12-03 09:00:26 +08:00
richarjiang
c3b59752ee
feat(users): 添加用户每日健康数据记录功能,支持多维度健康指标更新
2025-12-02 19:11:17 +08:00
richarjiang
6cdd2bc137
feat(users): 添加App版本号追踪功能,支持用户版本更新记录
2025-12-02 14:40:59 +08:00
richarjiang
562c66a930
feat(ai): 添加AI报告生成历史记录功能,支持每日生成限制和双API提供商
2025-12-02 12:07:08 +08:00
richarjiang
5b89a07751
stash
2025-12-01 18:12:09 +08:00
richarjiang
7ce51409af
feat(medications): 添加用药AI总结功能,支持生成用户用药计划的重点解读
2025-12-01 11:21:57 +08:00
ae41a2b643
feat(users): add version checking endpoint
...
Add app version checking functionality to notify users when updates are available. The feature extracts the current version from the x-App-Version header, compares it with the latest configured version, and returns update information including download links and release notes.
2025-11-29 20:47:01 +08:00
richarjiang
ff2dfd5bb3
feat(ai): 支持多语言AI分析响应并优化药品识别流程
...
- 饮食分析与药品分析服务新增多语言支持(zh-CN/en-US),根据用户偏好动态调整 Prompt 和返回信息
- 重构药品识别流程,利用 GLM-4.5v 模型将多阶段分析合并为单次全量分析,提升响应速度
- 增加用户语言获取逻辑,并在异步任务状态更新中支持本地化文案
- 移除废弃的药品分析 V1 接口,升级底层模型配置
2025-11-28 16:02:16 +08:00
richarjiang
43f378d44d
feat(users): 添加用户语言偏好字段
...
- 在 User 模型中添加 language 字段,默认值为 'zh-CN'
- 更新 UpdateUserDto 以支持语言偏好参数
- 在用户更新服务中实现语言偏好的保存逻辑
2025-11-27 11:17:27 +08:00
richarjiang
ac231a7742
feat(challenges): 支持自定义挑战类型并优化必填字段验证
...
- 新增 CUSTOM 挑战类型枚举值
- requirementLabel 字段改为可选,允许为空并添加默认值处理
- minimumCheckInDays 最大值从 365 提升至 1000,支持更长周期挑战
- 推送通知模板支持自定义挑战的动态文案生成
- 新增 getCustomEncouragementTemplate 和 getCustomInvitationTemplate 函数
2025-11-27 11:11:26 +08:00
richarjiang
7a05097226
feat(challenges): add vip user restrictions for challenge creation
...
限制非会员用户只能创建一个未归档的自定义挑战,添加用户VIP状态检查和挑战数量限制逻辑
2025-11-27 08:33:46 +08:00
richarjiang
5d64a99ce5
feat(challenges): 添加挑战创建者标识和归档状态过滤
...
- 为挑战详情和列表接口添加isCreator字段标识创建者
- 过滤掉已归档的挑战,避免在列表和操作中显示
- 为挑战详情接口添加JWT认证守卫
- 将自定义挑战的progressUnit字段设为必填
- 优化挑战编辑时的错误提示信息
- 移除冗余的isCreator私有方法,直接在响应中设置标识
2025-11-26 18:57:13 +08:00
richarjiang
26e88ae610
feat(challenges): 添加挑战源和分享代码字段,更新挑战详情和列表接口
2025-11-26 17:26:27 +08:00
richarjiang
029b8f46b9
feat(challenges): 更新自定义挑战功能,支持时间戳转换及数据模型调整
2025-11-26 10:43:42 +08:00
richarjiang
93b4fcf553
feat(challenges): 添加用户自定义挑战功能及分享机制
...
实现完整的自定义挑战系统,支持用户创建、分享和管理个人挑战:
- 数据库扩展:添加 source、creator_id、share_code、is_public、max_participants、challenge_state 字段
- 分享机制:自动生成6位唯一分享码,支持公开和私密模式
- API接口:创建挑战、通过分享码加入、获取创建列表、更新归档挑战、重新生成分享码
- 权限控制:创建者专属编辑权限,频率限制防滥用(每日5个)
- 业务逻辑:人数限制检查、挑战状态流转、参与者统计
- 文档完善:使用文档和部署指南,包含API示例和回滚方案
兼容现有系统挑战,使用相同的打卡、排行榜和勋章系统
2025-11-25 19:07:09 +08:00
richarjiang
2d1d43922d
feat(users): 添加公共访问权限以获取可用勋章列表
2025-11-25 15:45:28 +08:00
richarjiang
f8fcc81438
feat(medications): 增强AI药品识别质量控制和多图片支持
...
- 新增图片可读性预检查机制,识别前先判断图片质量
- 设置置信度阈值为60%,低于阈值自动识别失败
- 支持多图片上传(正面、侧面、辅助图片)提高识别准确度
- 完善识别失败场景的错误分类和用户指导提示
- 新增药品有效期字段支持
- 优化AI提示词,强调安全优先原则
- 更新模型版本为 glm-4.5v 和 glm-4.5-air
数据库变更:
- Medication表新增 sideImageUrl, auxiliaryImageUrl, expiryDate 字段
- DTO层同步支持新增字段的传递和更新
质量控制策略:
- 图片模糊或不可读时直接返回失败
- 无法识别药品名称时主动失败
- 置信度<60%时拒绝识别,建议重新拍摄
- 宁可识别失败也不提供不准确的药品信息
2025-11-21 16:59:36 +08:00
richarjiang
a17fe0b965
feat(medications): 增加基于视觉AI的药品智能录入系统
...
构建了从照片到药品档案的自动化处理流程,通过GLM多模态大模型实现药品信息的智能采集:
核心能力:
- 创建任务追踪表 t_medication_recognition_tasks 存储识别任务状态
- 四阶段渐进式分析:基础识别→人群适配→成分解析→风险评估
- 提供三个REST端点支持任务创建、进度查询和结果确认
- 前端可通过轮询方式获取0-100%的实时进度反馈
- VIP用户免费使用,普通用户按次扣费
技术实现:
- 利用GLM-4V-Plus模型处理多角度药品图像(正面+侧面+说明书)
- 采用GLM-4-Flash模型进行文本深度分析
- 异步任务执行机制避免接口阻塞
- 完整的异常处理和任务失败恢复策略
- 新增AI_RECOGNITION.md文档详细说明集成方式
同步修复:
- 修正会员用户AI配额扣减逻辑,避免不必要的次数消耗
- 优化APNs推送中无效设备令牌的检测和清理流程
- 将服药提醒的提前通知时间从15分钟缩短为5分钟
2025-11-21 10:27:59 +08:00
richarjiang
75fbea2c90
feat(users): 更新用户最后登录时间记录功能
2025-11-20 19:04:38 +08:00
richarjiang
afe6ae1c6a
feat(medications): 实现V2版本药品AI分析功能及结构化数据支持
...
- 新增 V2 版药品分析服务,通过 AI 生成包含适用人群、副作用等字段的结构化 JSON 数据
- 添加 `POST :id/ai-analysis/v2` 接口,集成用户免费次数校验与自动扣费逻辑
- 在药品创建流程中增加异步触发自动 AI 分析的机制
- fix(users): 修复 Apple 登录未获取到邮箱时的报错问题,改为自动生成随机唯一邮箱
- perf(medications): 将服药提醒定时任务的检查频率调整为每 5 分钟一次
- refactor(push-notifications): 移除不再使用的 PushTestService
2025-11-20 17:55:05 +08:00
richarjiang
07fae9bdc0
refactor(push-notifications): 移除推送测试服务模块
...
删除PushTestService及其相关依赖,该服务用于在应用启动时执行挑战相关的推送测试。移除内容包括:
- 删除push-test.service.ts文件(287行代码)
- 从push-notifications.module.ts中移除PushTestService的导入和注册
- 移除了挑战提醒推送测试、活跃参与者查询等测试功能
此变更简化了推送通知模块结构,移除了仅用于测试目的的代码。
2025-11-18 15:33:05 +08:00
richarjiang
bbc6924f5b
feat(users): 添加会员状态自动同步验证功能
...
- 新增登录时异步触发会员状态验证机制,不阻塞响应
- 实现5分钟频率限制,避免过度调用RevenueCat API
- 重构API调用方法,分别获取subscriptions和purchases数据
- 支持终身会员识别和有效期自动更新
- 添加内存缓存记录最后验证时间
- 完善错误处理和日志记录,确保主流程不受影响
2025-11-18 15:31:37 +08:00
1c033cd801
feat(badges): 更新勋章系统,支持UUID作为勋章ID类型
...
feat(challenges): 优化进度报告,添加睡眠挑战勋章授予逻辑
fix(push-notifications): 修复推送测试服务初始化返回值问题
2025-11-15 23:25:02 +08:00
9c7bcb6083
feat(medications): 添加药品分析日志记录功能
2025-11-15 21:18:29 +08:00
richarjiang
bac75f82ba
feat(challenges): 在挑战列表和详情中添加勋章信息展示
...
为睡眠挑战类型添加勋章信息支持,在挑战列表和详情接口中返回 sleepChallengeMonth 勋章配置数据。
- 在 ChallengesModule 中注册 BadgeConfig 模型
- 在 ChallengesService 中注入 BadgeConfig 仓库
- 查询列表时,若存在睡眠挑战则预加载勋章配置
- 查询详情时,若为睡眠挑战则附加勋章信息
- 在 DTO 中新增 BadgeInfoDto 接口定义勋章数据结构
- 仅对激活状态的 sleepChallengeMonth 勋章进行查询和展示
2025-11-14 17:26:41 +08:00
richarjiang
7b4d7c4459
feat(badges): 添加用户勋章系统,支持睡眠挑战勋章自动授予
...
实现完整的用户勋章功能模块:
- 新增 BadgeConfig 和 UserBadge 数据模型,支持勋章配置和用户勋章管理
- 新增 BadgeService 服务,提供勋章授予、查询、展示状态管理等核心功能
- 在挑战服务中集成勋章授予逻辑,完成首次睡眠打卡授予 goodSleep 勋章,完成睡眠挑战授予 sleepChallengeMonth 勋章
- 新增用户勋章相关接口:获取用户勋章列表、获取可用勋章列表、标记勋章已展示
- 支持勋章分类(睡眠、运动、饮食等)、排序、启用状态管理
- 支持勋章来源追踪(挑战、系统、手动授予)和元数据记录
2025-11-14 17:08:02 +08:00
richarjiang
f04c2ccd5d
feat(medications): 添加药物超时提醒功能
...
在MedicationRecord模型中添加overdueReminderSent字段追踪超时提醒状态,在提醒服务中新增定时任务检查超过服药时间1小时的未服用记录,并向用户发送鼓励提醒。该功能每10分钟检查一次,避免重复发送提醒,帮助用户及时补服错过的药物。
2025-11-14 14:47:44 +08:00
richarjiang
5a9be42a93
feat(medications): 添加药品AI分析功能,支持智能用药指导
...
新增基于GLM-4.5V大模型的药品AI分析服务,为用户提供专业的用药指导和健康建议:
- 新增MedicationAnalysisService服务,集成GLM视觉和文本模型
- 实现流式SSE响应,支持实时返回AI分析结果
- 药品模型新增aiAnalysis字段,持久化存储分析结果
- 添加药品识别度判断,无法识别时引导用户补充信息
- 集成用户使用次数限制,免费用户次数用完后提示开通会员
- 支持图片识别分析,结合药品外观提供更准确的建议
- 提供全面的用药指导:适应症、用法用量、注意事项、副作用等
2025-11-12 17:07:39 +08:00
richarjiang
e6f3c79104
refactor(medications): 简化服药时间更新逻辑,采用删除重建策略
...
将更新服药时间的处理方式从复杂的记录更新逻辑改为删除当天记录并重新生成。
这样做的好处:
- 简化代码逻辑,移除了 updateTodayUntakenRecords 方法及其 75 行代码
- 与激活状态更新的处理方式保持一致,提高代码可维护性
- 避免了时间匹配和记录排序的复杂性,更加可靠
- 系统会在定时任务中自动根据新的服药时间重新生成正确的记录
2025-11-11 15:54:09 +08:00
richarjiang
d9c144ff87
feat(medications): 添加提醒发送状态追踪,防止重复推送
...
- 新增 reminder_sent 字段到服药记录表,用于标记提醒发送状态
- 添加数据库索引优化未发送提醒记录的查询性能
- 提醒检查频率从 5 分钟优化至 1 分钟,提升及时性
- 添加主进程检测机制,避免多进程环境下重复发送提醒
- 增强错误处理和发送结果统计功能
2025-11-11 11:13:44 +08:00
richarjiang
2850eba7cf
feat(medications): 优化药物删除功能,添加事务处理和批量操作
...
- 在药物删除时使用事务确保数据一致性
- 删除药物时同时软删除所有相关用药记录
- 优化删除操作性能,使用批量更新替代循环删除
- 扩展删除范围,从删除未服用记录改为删除当天所有记录
- 添加完善的错误处理和日志记录
2025-11-10 14:46:10 +08:00
richarjiang
e25002e018
feat(medications): 新增药物激活状态管理及相关记录更新功能
2025-11-10 11:04:36 +08:00
richarjiang
188b4addca
feat(medications): 新增完整的药物管理和服药提醒功能
...
实现了包含药物信息管理、服药记录追踪、统计分析、自动状态更新和推送提醒的完整药物管理系统。
核心功能:
- 药物 CRUD 操作,支持多种剂型和自定义服药时间
- 惰性生成服药记录策略,查询时才生成当天记录
- 定时任务自动更新过期记录状态(每30分钟)
- 服药前15分钟自动推送提醒(每5分钟检查)
- 每日/范围/总体统计分析功能
- 完整的 API 文档和数据库建表脚本
技术实现:
- 使用 Sequelize ORM 管理 MySQL 数据表
- 集成 @nestjs/schedule 实现定时任务
- 复用现有推送通知系统发送提醒
- 采用软删除和权限验证保障数据安全
2025-11-07 17:29:11 +08:00
richarjiang
37cc2a729b
feat(push-notifications): 新增挑战提醒定时推送功能
...
新增每日定时推送系统,根据用户参与状态发送不同类型的挑战提醒:
- 已参与用户:每日发送鼓励推送
- 未参与用户:隔天发送挑战邀请
- 匿名用户:隔天发送通用邀请
包含推送历史记录表、定时任务调度、多类型文案模板和防重复发送机制
2025-11-03 17:49:14 +08:00
richarjiang
3a3939e1ba
根据提供的 git diff,我来分析这次变更:
...
## 变更分析
这次提交主要涉及 APNs 推送通知功能的优化:
1. **apns.provider.ts** 的变更:
- 重构了通知选项的构建逻辑,将 alert 设置为顶层属性
- 增强了 `createDeviceNotification` 方法,完整复制所有通知选项(badge、sound、contentAvailable、mutableContent、priority、type、data)
- 移除了未使用的 aps 对象
2. **push-notifications.service.ts** 的变更:
- 移除了冗余的 `alert` 字段
- 新增了更多 APNs 通知选项:priority、expiry、collapseId、mutableContent、contentAvailable
这是一次功能增强和代码重构,主要目的是完善 APNs 推送通知的配置选项支持。
## 建议的提交信息
feat(push-notifications): 完善APNs推送通知配置选项支持
- 重构通知选项构建逻辑,优化alert属性设置
- createDeviceNotification方法新增完整选项复制(badge、sound、contentAvailable、mutableContent、priority、type、data)
- 推送服务新增priority、expiry、collapseId、mutableContent、contentAvailable等配置项支持
- 移除冗余的alert字段设置
2025-11-03 17:31:31 +08:00
richarjiang
fa9b28a98f
feat(push-notifications): 新增更新令牌用户ID功能
...
添加新的API端点用于更新设备推送令牌绑定的用户ID,包括:
- 新增UpdateTokenUserIdDto和UpdateTokenUserIdResponseDto
- 在控制器中添加updateTokenUserId端点
- 在服务层实现updateTokenUserId方法
- 在push-token服务中添加底层更新逻辑
- 优化推送测试服务,仅在主进程中执行
2025-11-03 17:08:56 +08:00
richarjiang
200484ce39
feat(push-notifications): 将推送测试改为基于挑战的个性化提醒
...
重构推送测试服务,从简单的测试推送改为针对正在进行中挑战的个性化提醒推送。
新增功能包括:
- 获取正在进行中的挑战和活跃参与者
- 根据挑战类型生成个性化推送内容
- 为挑战参与者发送针对性的提醒推送
- 支持多种挑战类型的推送模板(饮水、运动、饮食、心情、睡眠、体重管理)
2025-11-03 16:11:30 +08:00
richarjiang
fa8feb309d
perf: 优化脚本
2025-10-29 10:15:21 +08:00
richarjiang
d89adaf19a
feat(diet-records): 新增营养成分分析免费使用次数限制
...
在营养成分分析功能中添加免费使用次数检查和扣减机制,非VIP用户免费次数用尽时将无法使用该功能。分析成功后自动扣减用户免费次数,确保资源合理使用。
2025-10-16 17:17:38 +08:00
richarjiang
66a9e65d9b
feat(diet-records): 新增营养成分分析记录删除功能
...
添加删除营养成分分析记录的API端点,支持软删除机制
- 新增DELETE /nutrition-analysis-records/:id接口
- 添加DeleteNutritionAnalysisRecordResponseDto响应DTO
- 在NutritionAnalysisService中实现deleteAnalysisRecord方法
- 包含完整的权限验证和错误处理逻辑
2025-10-16 16:43:42 +08:00