feat(hrv): 添加心率变异性监控和压力评估功能
- 新增 HRV 监听服务,实时监控心率变异性数据 - 实现 HRV 到压力指数的转换算法和压力等级评估 - 添加智能通知服务,在压力偏高时推送健康建议 - 优化日志系统,修复日志丢失问题并增强刷新机制 - 改进个人页面下拉刷新,支持并行数据加载 - 优化勋章数据缓存策略,减少不必要的网络请求 - 重构应用初始化流程,优化权限服务和健康监听服务的启动顺序 - 移除冗余日志输出,提升应用性能
This commit is contained in:
@@ -2,7 +2,6 @@ import { useAppDispatch, useAppSelector } from '@/hooks/redux';
|
||||
import { ChallengeType } from '@/services/challengesApi';
|
||||
import { reportChallengeProgress, selectChallengeList } from '@/store/challengesSlice';
|
||||
import { deleteWaterIntakeFromHealthKit, getWaterIntakeFromHealthKit, saveWaterIntakeToHealthKit } from '@/utils/health';
|
||||
import { logger } from '@/utils/logger';
|
||||
import { Toast } from '@/utils/toast.utils';
|
||||
import { getQuickWaterAmount, getWaterGoalFromStorage, setWaterGoalToStorage } from '@/utils/userPreferences';
|
||||
import { refreshWidget, syncWaterDataToWidget } from '@/utils/widgetDataSync';
|
||||
@@ -532,21 +531,15 @@ export const useWaterDataByDate = (targetDate?: string) => {
|
||||
setError(null);
|
||||
|
||||
try {
|
||||
logger.debug('🚰 开始获取饮水记录,日期:', date);
|
||||
const options = createDateRange(date);
|
||||
logger.debug('🚰 查询选项:', options);
|
||||
|
||||
const healthKitRecords = await getWaterIntakeFromHealthKit(options);
|
||||
logger.debug('🚰 从HealthKit获取到的原始数据:', healthKitRecords);
|
||||
|
||||
// 转换数据格式并按时间排序
|
||||
const convertedRecords = healthKitRecords
|
||||
.map(convertHealthKitToWaterRecord)
|
||||
.sort((a, b) => new Date(b.recordedAt).getTime() - new Date(a.recordedAt).getTime());
|
||||
|
||||
logger.debug('🚰 转换后的记录:', convertedRecords);
|
||||
logger.debug('🚰 记录数量:', convertedRecords.length);
|
||||
|
||||
setWaterRecords(convertedRecords);
|
||||
return convertedRecords;
|
||||
} catch (error) {
|
||||
@@ -689,11 +682,7 @@ export const useWaterDataByDate = (targetDate?: string) => {
|
||||
|
||||
// 计算指定日期的统计数据
|
||||
const waterStats = useMemo(() => {
|
||||
logger.debug('🚰 计算waterStats - waterRecords:', waterRecords);
|
||||
logger.debug('🚰 计算waterStats - dailyWaterGoal:', dailyWaterGoal);
|
||||
|
||||
if (!waterRecords || waterRecords.length === 0) {
|
||||
logger.debug('🚰 没有饮水记录,返回默认值');
|
||||
return {
|
||||
totalAmount: 0,
|
||||
completionRate: 0,
|
||||
@@ -704,10 +693,6 @@ export const useWaterDataByDate = (targetDate?: string) => {
|
||||
const totalAmount = waterRecords.reduce((total, record) => total + record.amount, 0);
|
||||
const completionRate = dailyWaterGoal > 0 ? Math.min((totalAmount / dailyWaterGoal) * 100, 100) : 0;
|
||||
|
||||
logger.debug('🚰 计算结果 - totalAmount:', totalAmount);
|
||||
logger.debug('🚰 计算结果 - completionRate:', completionRate);
|
||||
logger.debug('🚰 计算结果 - recordCount:', waterRecords.length);
|
||||
|
||||
return {
|
||||
totalAmount,
|
||||
completionRate,
|
||||
|
||||
Reference in New Issue
Block a user