From a47f0fb72e95c467539291ded797c82f755b4891 Mon Sep 17 00:00:00 2001 From: richarjiang Date: Mon, 1 Dec 2025 10:49:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=94=A8=E8=8D=AF=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E9=9B=86=E6=88=90AI=E6=99=BA=E8=83=BD=E5=88=86=E6=9E=90?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=8F=90=E4=BE=9B=E7=94=A8=E8=8D=AF?= =?UTF-8?q?=E4=BE=9D=E4=BB=8E=E6=80=A7=E6=B7=B1=E5=BA=A6=E6=B4=9E=E5=AF=9F?= =?UTF-8?q?=E5=92=8C=E4=B8=93=E4=B8=9A=E5=81=A5=E5=BA=B7=E5=BB=BA=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(tabs)/medications.tsx | 116 ++- app/medications/ai-summary.tsx | 886 ++++++++++++++++++ .../images/medicine/medicine-ai-summary.png | Bin 0 -> 152591 bytes components/StepsCard.tsx | 72 +- components/StepsCardOptimized.tsx | 323 ------- components/ui/IconSymbol.tsx | 3 + .../ui/MedicationAiSummaryInfoSheet.tsx | 454 +++++++++ i18n/en/medication.ts | 73 +- i18n/zh/medication.ts | 73 +- ios/Podfile.lock | 208 ++-- services/challengesApi.ts | 1 + services/medications.ts | 9 + services/notifications.ts | 16 +- types/medication.ts | 22 + utils/notificationHelpers.ts | 4 +- 15 files changed, 1792 insertions(+), 468 deletions(-) create mode 100644 app/medications/ai-summary.tsx create mode 100644 assets/images/medicine/medicine-ai-summary.png delete mode 100644 components/StepsCardOptimized.tsx create mode 100644 components/ui/MedicationAiSummaryInfoSheet.tsx diff --git a/app/(tabs)/medications.tsx b/app/(tabs)/medications.tsx index ce12cb4..d598f91 100644 --- a/app/(tabs)/medications.tsx +++ b/app/(tabs)/medications.tsx @@ -5,6 +5,7 @@ import { TakenMedicationsStack } from '@/components/medication/TakenMedicationsS import { ThemedText } from '@/components/ThemedText'; import { IconSymbol } from '@/components/ui/IconSymbol'; import { MedicalDisclaimerSheet } from '@/components/ui/MedicalDisclaimerSheet'; +import { MedicationAiSummaryInfoSheet } from '@/components/ui/MedicationAiSummaryInfoSheet'; import { Colors } from '@/constants/Colors'; import { useMembershipModal } from '@/contexts/MembershipModalContext'; import { useAppDispatch, useAppSelector } from '@/hooks/redux'; @@ -59,6 +60,7 @@ export default function MedicationsScreen() { const [isCelebrationVisible, setIsCelebrationVisible] = useState(false); const [disclaimerVisible, setDisclaimerVisible] = useState(false); const [pendingAction, setPendingAction] = useState<'manual' | null>(null); + const [aiSummaryInfoVisible, setAiSummaryInfoVisible] = useState(false); // 从 Redux 获取数据 const selectedKey = selectedDate.format('YYYY-MM-DD'); @@ -115,6 +117,33 @@ export default function MedicationsScreen() { setPendingAction(null); }, []); + const handleOpenAiSummary = useCallback(async () => { + // 先检查登录状态 + const isLoggedIn = await ensureLoggedIn(); + if (!isLoggedIn) return; + + // 检查 VIP 权限 + const access = checkServiceAccess(); + if (!access.canUseService) { + // 非会员显示介绍弹窗 + setAiSummaryInfoVisible(true); + return; + } + + // 会员直接跳转到 AI 总结页面 + router.push('/medications/ai-summary'); + }, [checkServiceAccess, ensureLoggedIn]); + + const handleAiSummaryInfoConfirm = useCallback(() => { + setAiSummaryInfoVisible(false); + // 点击"我要订阅"后,弹出会员订阅弹窗 + openMembershipModal(); + }, [openMembershipModal]); + + const handleAiSummaryInfoClose = useCallback(() => { + setAiSummaryInfoVisible(false); + }, []); + const handleOpenMedicationManagement = useCallback(() => { router.push('/medications/manage-medications'); }, []); @@ -285,31 +314,59 @@ export default function MedicationsScreen() { - - {isLiquidGlassAvailable() ? ( + {isLiquidGlassAvailable() ? ( + - + - ) : ( - - - - )} - + + ) : ( + + + + )} - - {isLiquidGlassAvailable() ? ( + {isLiquidGlassAvailable() ? ( + + + + + + ) : ( + + + + )} + + {isLiquidGlassAvailable() ? ( + - ) : ( - - - - )} - + + ) : ( + + + + )} @@ -430,6 +491,13 @@ export default function MedicationsScreen() { onClose={handleDisclaimerClose} onConfirm={handleDisclaimerConfirm} /> + + {/* AI 用药总结介绍弹窗 */} + ); } diff --git a/app/medications/ai-summary.tsx b/app/medications/ai-summary.tsx new file mode 100644 index 0000000..09aa7b4 --- /dev/null +++ b/app/medications/ai-summary.tsx @@ -0,0 +1,886 @@ +import { ThemedText } from '@/components/ThemedText'; +import { HeaderBar } from '@/components/ui/HeaderBar'; +import { IconSymbol } from '@/components/ui/IconSymbol'; +import { getMedicationAiSummary } from '@/services/medications'; +import { type MedicationAiSummary, type MedicationAiSummaryItem } from '@/types/medication'; +import { useFocusEffect } from '@react-navigation/native'; +import dayjs from 'dayjs'; +import { LinearGradient } from 'expo-linear-gradient'; +import React, { useCallback, useMemo, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + ActivityIndicator, + Modal, + ScrollView, + StyleSheet, + Text, + TouchableOpacity, + View, +} from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; + +export default function MedicationAiSummaryScreen() { + const { t } = useTranslation(); + const insets = useSafeAreaInsets(); + + const [summary, setSummary] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const [lastUpdated, setLastUpdated] = useState(''); + const [showInfoModal, setShowInfoModal] = useState(false); + const [showCompletionInfoModal, setShowCompletionInfoModal] = useState(false); + + const fetchSummary = useCallback(async () => { + setLoading(true); + setError(null); + try { + const data = await getMedicationAiSummary(); + setSummary(data); + setLastUpdated(dayjs().format('YYYY.MM.DD HH:mm')); + } catch (err: any) { + const status = err?.status; + if (status === 403) { + setError(t('medications.aiSummary.error403')); + } else { + setError(err?.message || t('medications.aiSummary.genericError')); + } + setSummary(null); + } finally { + setLoading(false); + } + }, [t]); + + useFocusEffect( + useCallback(() => { + fetchSummary(); + }, [fetchSummary]) + ); + + const handleExplainRefresh = useCallback(() => { + setShowInfoModal(true); + }, []); + + const handleExplainCompletion = useCallback(() => { + setShowCompletionInfoModal(true); + }, []); + + const medicationItems = summary?.medicationAnalysis ?? []; + const isEmpty = !loading && !error && medicationItems.length === 0; + + const stats = useMemo(() => { + const plannedDoses = medicationItems.reduce((acc, item) => acc + (item.plannedDoses || 0), 0); + const takenDoses = medicationItems.reduce((acc, item) => acc + (item.takenDoses || 0), 0); + const completion = plannedDoses > 0 ? takenDoses / plannedDoses : 0; + const avgCompletion = + medicationItems.length > 0 + ? medicationItems.reduce((acc, item) => acc + (item.completionRate || 0), 0) / + medicationItems.length + : 0; + const plannedDays = medicationItems.reduce((acc, item) => acc + (item.plannedDays || 0), 0); + + return { + plannedDoses, + takenDoses, + completion, + avgCompletion, + plannedDays, + activePlans: medicationItems.length, + }; + }, [medicationItems]); + + const completionPercent = Math.min(100, Math.round(stats.completion * 100)); + + const renderMedicationCard = (item: MedicationAiSummaryItem) => { + const percent = Math.min(100, Math.round((item.completionRate || 0) * 100)); + return ( + + + + {item.name} + + {t('medications.aiSummary.daysLabel', { + days: item.plannedDays, + times: item.timesPerDay, + })} + + + + + + {t('medications.aiSummary.badges.adherence')} + + + + + + + + + + {t('medications.aiSummary.completionLabel', { value: percent })} + + + + + + {t('medications.aiSummary.doseSummary', { + taken: item.takenDoses, + planned: item.plannedDoses, + })} + + + {dayjs(item.startDate).format('YYYY.MM.DD')} + + + + ); + }; + + const headerTitle = ( + + {t('medications.aiSummary.title')} + {t('medications.aiSummary.subtitle')} + + ); + + return ( + + + + + + + + + } + /> + + + + + + {t('medications.aiSummary.overviewTitle')} + + + {lastUpdated ? t('medications.aiSummary.updatedAt', { time: lastUpdated }) : ' '} + + + + + + {completionPercent}% + + {t('medications.aiSummary.doseSummary', { + taken: stats.takenDoses, + planned: stats.plannedDoses, + })} + + + + + + + + {t('medications.aiSummary.badges.safety')} + + {stats.activePlans} + + {t('medications.aiSummary.stats.activePlans')} + + + + + + + + {t('medications.aiSummary.stats.avgCompletion')} + + + {Math.round(stats.avgCompletion * 100)}% + + + + + {t('medications.aiSummary.stats.activeDays')} + + {stats.plannedDays} + + + + {t('medications.aiSummary.stats.takenDoses')} + + {stats.takenDoses} + + + + + {error ? ( + + {error} + + {t('medications.aiSummary.retry')} + + + ) : ( + <> + + + + {t('medications.aiSummary.keyInsights')} + + + + + {t('medications.aiSummary.pillChip')} + + + + + {summary?.keyInsights || t('medications.aiSummary.keyInsightPlaceholder')} + + + + + + + {t('medications.aiSummary.listTitle')} + + + + + + {loading ? ( + + + + {t('medications.aiSummary.refresh')} + + + ) : isEmpty ? ( + + + {t('medications.aiSummary.emptyTitle')} + + + {t('medications.aiSummary.emptyDescription')} + + + ) : ( + {medicationItems.map(renderMedicationCard)} + )} + + + )} + + + setShowInfoModal(false)} + > + setShowInfoModal(false)} + > + e.stopPropagation()} + style={styles.infoModal} + > + + + {t('medications.aiSummary.infoModal.badge')} + {t('medications.aiSummary.infoModal.title')} + setShowInfoModal(false)} + style={styles.infoClose} + accessibilityLabel="close" + > + + + + + + {t('medications.aiSummary.infoModal.point1')} + + + {t('medications.aiSummary.infoModal.point2')} + + + {t('medications.aiSummary.infoModal.point3')} + + + {t('medications.aiSummary.infoModal.point4')} + + + + setShowInfoModal(false)} + > + + {t('medications.aiSummary.infoModal.button')} + + + + + + + + + setShowCompletionInfoModal(false)} + > + setShowCompletionInfoModal(false)} + > + e.stopPropagation()} + style={styles.infoModal} + > + + + {t('medications.aiSummary.completionInfoModal.badge')} + {t('medications.aiSummary.completionInfoModal.title')} + setShowCompletionInfoModal(false)} + style={styles.infoClose} + accessibilityLabel="close" + > + + + + + + {t('medications.aiSummary.completionInfoModal.point1')} + + + {t('medications.aiSummary.completionInfoModal.point2')} + + + {t('medications.aiSummary.completionInfoModal.point3')} + + + {t('medications.aiSummary.completionInfoModal.point4')} + + + {t('medications.aiSummary.completionInfoModal.point5')} + + + + setShowCompletionInfoModal(false)} + > + + {t('medications.aiSummary.completionInfoModal.button')} + + + + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#0b0f16', + }, + scrollContent: { + paddingHorizontal: 20, + gap: 20, + }, + glowTop: { + position: 'absolute', + top: -80, + left: -40, + width: 200, + height: 200, + backgroundColor: '#1b2a44', + opacity: 0.35, + borderRadius: 140, + }, + glowBottom: { + position: 'absolute', + bottom: -120, + right: -60, + width: 240, + height: 240, + backgroundColor: '#123125', + opacity: 0.25, + borderRadius: 200, + }, + iconButton: { + width: 40, + height: 40, + borderRadius: 14, + borderWidth: 1, + borderColor: 'rgba(255,255,255,0.08)', + alignItems: 'center', + justifyContent: 'center', + backgroundColor: 'rgba(255,255,255,0.04)', + }, + headerTitle: { + alignItems: 'center', + flex: 1, + gap: 6, + }, + badge: { + flexDirection: 'row', + alignItems: 'center', + gap: 6, + paddingHorizontal: 10, + paddingVertical: 6, + borderRadius: 999, + backgroundColor: '#d6b37f', + }, + badgeText: { + color: '#0b0f16', + fontSize: 12, + fontWeight: '700', + fontFamily: 'AliBold', + }, + title: { + color: '#f6f7fb', + fontSize: 22, + fontFamily: 'AliBold', + }, + subtitle: { + color: '#b9c2d3', + fontSize: 14, + fontFamily: 'AliRegular', + }, + heroCard: { + borderRadius: 24, + padding: 18, + borderWidth: 1, + borderColor: 'rgba(255,255,255,0.06)', + shadowColor: '#000', + shadowOpacity: 0.25, + shadowRadius: 16, + gap: 14, + }, + heroHeader: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + }, + heroLabel: { + color: '#f5f6fb', + fontSize: 16, + fontFamily: 'AliBold', + }, + updatedAt: { + color: '#8b94a8', + fontSize: 12, + fontFamily: 'AliRegular', + }, + heroMainRow: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + gap: 16, + }, + heroLeft: { + flex: 1, + minWidth: 0, + }, + heroValue: { + color: '#36d0a5', + fontSize: 38, + lineHeight: 42, + fontFamily: 'AliBold', + letterSpacing: 0.5, + flexShrink: 1, + }, + heroCaption: { + color: '#c2ccdf', + fontSize: 13, + fontFamily: 'AliRegular', + marginTop: 4, + }, + heroProgressTrack: { + marginTop: 12, + height: 10, + borderRadius: 10, + backgroundColor: 'rgba(255,255,255,0.08)', + overflow: 'hidden', + }, + heroProgressFill: { + height: '100%', + borderRadius: 10, + backgroundColor: '#36d0a5', + }, + heroChip: { + paddingHorizontal: 14, + paddingVertical: 12, + borderRadius: 18, + backgroundColor: 'rgba(214, 179, 127, 0.12)', + borderWidth: 1, + borderColor: 'rgba(214, 179, 127, 0.3)', + minWidth: 120, + alignItems: 'flex-start', + gap: 4, + }, + heroChipLabel: { + color: '#d6b37f', + fontSize: 12, + fontFamily: 'AliRegular', + }, + heroChipValue: { + color: '#f6f7fb', + fontSize: 20, + fontFamily: 'AliBold', + lineHeight: 24, + }, + heroChipHint: { + color: '#b9c2d3', + fontSize: 12, + fontFamily: 'AliRegular', + }, + heroStatsRow: { + flexDirection: 'row', + gap: 12, + justifyContent: 'space-between', + }, + heroStatItem: { + flex: 1, + padding: 12, + borderRadius: 14, + backgroundColor: 'rgba(255,255,255,0.04)', + borderWidth: 1, + borderColor: 'rgba(255,255,255,0.04)', + }, + heroStatLabel: { + color: '#9dabc4', + fontSize: 12, + fontFamily: 'AliRegular', + }, + heroStatValue: { + color: '#f6f7fb', + fontSize: 18, + marginTop: 6, + fontFamily: 'AliBold', + }, + sectionCard: { + borderRadius: 20, + padding: 16, + backgroundColor: 'rgba(255,255,255,0.03)', + borderWidth: 1, + borderColor: 'rgba(255,255,255,0.05)', + gap: 12, + }, + sectionHeader: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + sectionTitle: { + color: '#f5f6fb', + fontSize: 16, + fontFamily: 'AliBold', + }, + pillChip: { + flexDirection: 'row', + alignItems: 'center', + gap: 6, + backgroundColor: '#d6b37f', + paddingHorizontal: 10, + paddingVertical: 6, + borderRadius: 999, + }, + pillChipText: { + color: '#0b0f16', + fontSize: 12, + fontFamily: 'AliBold', + }, + insightText: { + color: '#d9e2f2', + fontSize: 15, + lineHeight: 22, + fontFamily: 'AliRegular', + }, + planList: { + gap: 12, + }, + planCard: { + borderRadius: 16, + padding: 14, + backgroundColor: 'rgba(255,255,255,0.04)', + borderWidth: 1, + borderColor: 'rgba(255,255,255,0.06)', + gap: 10, + }, + planHeader: { + flexDirection: 'row', + alignItems: 'center', + gap: 10, + }, + planName: { + color: '#f6f7fb', + fontSize: 16, + fontFamily: 'AliBold', + }, + planMeta: { + color: '#9dabc4', + fontSize: 12, + fontFamily: 'AliRegular', + marginTop: 2, + }, + planChip: { + flexDirection: 'row', + alignItems: 'center', + gap: 6, + paddingHorizontal: 10, + paddingVertical: 6, + borderRadius: 999, + backgroundColor: 'rgba(214, 179, 127, 0.15)', + borderWidth: 1, + borderColor: 'rgba(214, 179, 127, 0.35)', + }, + planChipText: { + color: '#d6b37f', + fontSize: 12, + fontFamily: 'AliBold', + }, + progressRow: { + flexDirection: 'row', + alignItems: 'center', + gap: 10, + }, + progressTrack: { + flex: 1, + height: 10, + borderRadius: 10, + backgroundColor: 'rgba(255,255,255,0.08)', + overflow: 'hidden', + }, + progressFill: { + height: '100%', + backgroundColor: '#36d0a5', + borderRadius: 10, + }, + progressValue: { + color: '#f6f7fb', + fontSize: 12, + fontFamily: 'AliBold', + }, + planFooter: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + }, + planStat: { + color: '#c7d1e4', + fontSize: 13, + fontFamily: 'AliRegular', + }, + planDate: { + color: '#7f8aa4', + fontSize: 12, + fontFamily: 'AliRegular', + }, + errorCard: { + padding: 16, + borderRadius: 16, + backgroundColor: 'rgba(255, 86, 86, 0.08)', + borderWidth: 1, + borderColor: 'rgba(255, 86, 86, 0.3)', + alignItems: 'center', + gap: 12, + }, + errorTitle: { + color: '#ff9c9c', + fontSize: 14, + textAlign: 'center', + fontFamily: 'AliBold', + }, + retryButton: { + paddingHorizontal: 16, + paddingVertical: 10, + borderRadius: 999, + backgroundColor: '#ff9c9c', + }, + retryText: { + color: '#0b0f16', + fontSize: 13, + fontFamily: 'AliBold', + }, + loadingRow: { + flexDirection: 'row', + alignItems: 'center', + gap: 10, + paddingVertical: 12, + }, + loadingText: { + color: '#c7d1e4', + fontSize: 13, + fontFamily: 'AliRegular', + }, + emptyState: { + paddingVertical: 12, + gap: 6, + }, + emptyTitle: { + color: '#f6f7fb', + fontSize: 15, + fontFamily: 'AliBold', + }, + emptySubtitle: { + color: '#9dabc4', + fontSize: 13, + fontFamily: 'AliRegular', + lineHeight: 20, + }, + infoOverlay: { + flex: 1, + backgroundColor: 'rgba(0,0,0,0.6)', + justifyContent: 'center', + alignItems: 'center', + paddingHorizontal: 20, + }, + infoModal: { + width: '100%', + maxWidth: 400, + borderRadius: 24, + overflow: 'hidden', + borderWidth: 1, + borderColor: 'rgba(255,255,255,0.1)', + }, + infoGradient: { + padding: 24, + gap: 20, + }, + infoHeader: { + alignItems: 'center', + justifyContent: 'center', + marginBottom: 4, + }, + infoBadge: { + color: '#d6b37f', + fontSize: 24, + lineHeight: 28, + fontFamily: 'AliBold', + marginBottom: 10, + letterSpacing: 0.5, + }, + infoTitle: { + color: '#f6f7fb', + fontSize: 16, + fontFamily: 'AliBold', + textAlign: 'center', + }, + infoClose: { + position: 'absolute', + right: -4, + top: -4, + padding: 8, + width: 36, + height: 36, + alignItems: 'center', + justifyContent: 'center', + borderRadius: 18, + backgroundColor: 'rgba(255,255,255,0.05)', + }, + infoContent: { + gap: 14, + }, + infoText: { + color: '#d9e2f2', + fontSize: 14, + lineHeight: 18, + fontFamily: 'AliRegular', + }, + infoButtonContainer: { + marginTop: 12, + alignItems: 'center', + }, + infoButtonWrapper: { + // minWidth: 120, + // maxWidth: 180, + }, + infoButton: { + borderRadius: 12, + paddingVertical: 10, + paddingHorizontal: 28, + alignItems: 'center', + overflow: 'hidden', + }, + infoButtonGlass: { + paddingVertical: 10, + paddingHorizontal: 28, + alignItems: 'center', + }, + infoButtonText: { + color: '#0b0f16', + fontSize: 15, + fontFamily: 'AliBold', + letterSpacing: 0.2, + }, + infoIconButton: { + width: 28, + height: 28, + borderRadius: 14, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: 'rgba(139, 148, 168, 0.1)', + }, +}); diff --git a/assets/images/medicine/medicine-ai-summary.png b/assets/images/medicine/medicine-ai-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..c3851efb1e22f163458b4c5b5e78419531ff9a4a GIT binary patch literal 152591 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℘c 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 = ({ }) => { const { t } = useTranslation(); const router = useRouter(); + const dispatch = useAppDispatch(); + const challenges = useAppSelector(selectChallengeList); - const [stepCount, setStepCount] = useState(0) - const [hourlySteps, setHourSteps] = useState([]) + const [stepCount, setStepCount] = useState(0); + const [hourlySteps, setHourSteps] = useState([]); + + // 过滤出已参加的步数挑战 + const joinedStepsChallenges = useMemo( + () => challenges.filter((challenge) => challenge.type === ChallengeType.STEP && challenge.isJoined && challenge.status === 'ongoing'), + [challenges] + ); + + // 跟踪上次上报的记录,避免重复上报 + const lastReportedRef = useRef<{ date: string; value: number } | null>(null); const getStepData = useCallback(async (date: Date) => { @@ -59,6 +73,42 @@ const StepsCard: React.FC = ({ } }, [curDate]); + // 步数挑战进度上报逻辑 + useEffect(() => { + if (!curDate || !stepCount || !joinedStepsChallenges.length) { + return; + } + + // 如果当前日期不是今天,不上报 + if (!dayjs(curDate).isSame(dayjs(), 'day')) { + return; + } + + const dateKey = dayjs(curDate).format('YYYY-MM-DD'); + const lastReport = lastReportedRef.current; + + if (lastReport && lastReport.date === dateKey && lastReport.value === stepCount) { + return; + } + + const reportProgress = async () => { + const stepsChallenge = joinedStepsChallenges.find((c) => c.type === ChallengeType.STEP); + if (!stepsChallenge) { + return; + } + + try { + await dispatch(reportChallengeProgress({ id: stepsChallenge.id, value: stepCount })).unwrap(); + } catch (error) { + logger.warn('StepsCard: Challenge progress report failed', { error, challengeId: stepsChallenge.id }); + } + + lastReportedRef.current = { date: dateKey, value: stepCount }; + }; + + reportProgress(); + }, [dispatch, joinedStepsChallenges, curDate, stepCount]); + // 优化:减少动画值数量,只为有数据的小时创建动画 const animatedValues = useRef>(new Map()).current; diff --git a/components/StepsCardOptimized.tsx b/components/StepsCardOptimized.tsx deleted file mode 100644 index 6b6b180..0000000 --- a/components/StepsCardOptimized.tsx +++ /dev/null @@ -1,323 +0,0 @@ -import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { - Animated, - StyleSheet, - Text, - TouchableOpacity, - View, - ViewStyle, - InteractionManager -} from 'react-native'; - -import { fetchHourlyStepSamples, fetchStepCount, HourlyStepData } from '@/utils/health'; -import { logger } from '@/utils/logger'; -import dayjs from 'dayjs'; -import { Image } from 'expo-image'; -import { useRouter } from 'expo-router'; -import { AnimatedNumber } from './AnimatedNumber'; - -interface StepsCardProps { - curDate: Date - stepGoal: number; - style?: ViewStyle; -} - -const StepsCardOptimized: React.FC = ({ - curDate, - style, -}) => { - const router = useRouter(); - - const [stepCount, setStepCount] = useState(0) - const [hourlySteps, setHourSteps] = useState([]) - const [isLoading, setIsLoading] = useState(false) - - // 优化:使用debounce减少频繁的数据获取 - const debounceTimer = useRef(null); - - const getStepData = useCallback(async (date: Date) => { - try { - setIsLoading(true); - logger.info('获取步数数据...'); - - // 先获取步数,立即更新UI - const steps = await fetchStepCount(date); - setStepCount(steps); - - // 清除之前的定时器 - if (debounceTimer.current) { - clearTimeout(debounceTimer.current); - } - - // 使用 InteractionManager 在空闲时获取更复杂的小时数据 - InteractionManager.runAfterInteractions(async () => { - try { - const hourly = await fetchHourlyStepSamples(date); - setHourSteps(hourly); - } catch (error) { - logger.error('获取小时步数数据失败:', error); - } finally { - setIsLoading(false); - } - }); - - } catch (error) { - logger.error('获取步数数据失败:', error); - setIsLoading(false); - } - }, []); - - useEffect(() => { - if (curDate) { - getStepData(curDate); - } - }, [curDate, getStepData]); - - // 优化:减少动画值数量,只为有数据的小时创建动画 - const animatedValues = useRef>(new Map()).current; - - // 优化:简化柱状图数据计算,减少计算量 - const chartData = useMemo(() => { - if (!hourlySteps || hourlySteps.length === 0) { - return Array.from({ length: 24 }, (_, i) => ({ hour: i, steps: 0, height: 0 })); - } - - // 优化:只计算有数据的小时的最大步数 - const activeSteps = hourlySteps.filter(data => data.steps > 0); - if (activeSteps.length === 0) { - return Array.from({ length: 24 }, (_, i) => ({ hour: i, steps: 0, height: 0 })); - } - - const maxSteps = Math.max(...activeSteps.map(data => data.steps)); - const maxHeight = 20; - - return hourlySteps.map(data => ({ - ...data, - height: data.steps > 0 ? (data.steps / maxSteps) * maxHeight : 0 - })); - }, [hourlySteps]); - - // 获取当前小时 - const currentHour = new Date().getHours(); - - // 优化:延迟执行动画,减少UI阻塞 - useEffect(() => { - const hasData = chartData && chartData.length > 0 && chartData.some(data => data.steps > 0); - - if (hasData && !isLoading) { - // 使用 InteractionManager 确保动画不会阻塞用户交互 - InteractionManager.runAfterInteractions(() => { - // 只为有数据的小时创建和执行动画 - const animations = chartData - .map((data, index) => { - if (data.steps > 0) { - // 懒创建动画值 - if (!animatedValues.has(index)) { - animatedValues.set(index, new Animated.Value(0)); - } - - const animValue = animatedValues.get(index)!; - animValue.setValue(0); - - // 使用更高性能的timing动画替代spring - return Animated.timing(animValue, { - toValue: 1, - duration: 200, // 减少动画时长 - useNativeDriver: false, - }); - } - return null; - }) - .filter(Boolean) as Animated.CompositeAnimation[]; - - // 批量执行动画,提高性能 - if (animations.length > 0) { - Animated.stagger(50, animations).start(); - } - }); - } - }, [chartData, animatedValues, isLoading]); - - // 优化:使用React.memo包装复杂的渲染组件 - const ChartBars = useMemo(() => { - return chartData.map((data, index) => { - // 判断是否是当前小时或者有活动的小时 - const isActive = data.steps > 0; - const isCurrent = index <= currentHour; - - // 优化:只为有数据的柱体创建动画插值 - const animValue = animatedValues.get(index); - let animatedScale: Animated.AnimatedInterpolation | undefined; - let animatedOpacity: Animated.AnimatedInterpolation | undefined; - - if (animValue && isActive) { - animatedScale = animValue.interpolate({ - inputRange: [0, 1], - outputRange: [0, 1], - }); - - animatedOpacity = animValue.interpolate({ - inputRange: [0, 1], - outputRange: [0, 1], - }); - } - - return ( - - {/* 背景柱体 - 始终显示,使用相似色系的淡色 */} - - - {/* 数据柱体 - 只有当有数据时才显示并执行动画 */} - {isActive && ( - - )} - - ); - }); - }, [chartData, currentHour, animatedValues]); - - const CardContent = () => ( - <> - {/* 标题和步数显示 */} - - - 步数 - {isLoading && 加载中...} - - - {/* 柱状图 */} - - - - {ChartBars} - - - - - {/* 步数和目标显示 */} - - stepCount !== null ? `${Math.round(v)}` : '——'} - resetToken={stepCount} - /> - - - ); - - return ( - { - // 传递当前日期参数到详情页 - const dateParam = dayjs(curDate).format('YYYY-MM-DD'); - router.push(`/steps/detail?date=${dateParam}`); - }} - activeOpacity={0.8} - > - - - ); -}; - -const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'space-between', - borderRadius: 20, - padding: 16, - shadowColor: '#000', - shadowOffset: { - width: 0, - height: 4, - }, - shadowOpacity: 0.08, - shadowRadius: 20, - elevation: 8, - }, - header: { - flexDirection: 'row', - justifyContent: 'flex-start', - alignItems: 'center', - }, - titleIcon: { - width: 16, - height: 16, - marginRight: 6, - resizeMode: 'contain', - }, - title: { - fontSize: 14, - color: '#192126', - fontWeight: '600' - }, - loadingText: { - fontSize: 10, - color: '#666', - marginLeft: 8, - }, - chartContainer: { - flex: 1, - justifyContent: 'center', - marginTop: 6 - }, - chartWrapper: { - width: '100%', - alignItems: 'center', - }, - chartArea: { - flexDirection: 'row', - alignItems: 'flex-end', - height: 20, - width: '100%', - maxWidth: 240, - justifyContent: 'space-between', - paddingHorizontal: 4, - }, - barContainer: { - width: 4, - height: 20, - alignItems: 'center', - justifyContent: 'flex-end', - position: 'relative', - }, - chartBar: { - width: 4, - borderRadius: 1, - position: 'absolute', - bottom: 0, - }, - statsContainer: { - alignItems: 'flex-start', - marginTop: 6 - }, - stepCount: { - fontSize: 18, - fontWeight: '600', - color: '#192126', - }, -}); - -export default StepsCardOptimized; \ No newline at end of file diff --git a/components/ui/IconSymbol.tsx b/components/ui/IconSymbol.tsx index 73720f0..6f6eced 100644 --- a/components/ui/IconSymbol.tsx +++ b/components/ui/IconSymbol.tsx @@ -30,6 +30,9 @@ const MAPPING = { 'info.circle': 'info', 'magnifyingglass': 'search', 'xmark': 'close', + 'chevron.left': 'chevron-left', + 'sparkles': 'auto-awesome', + 'arrow.clockwise': 'refresh', } as IconMapping; /** diff --git a/components/ui/MedicationAiSummaryInfoSheet.tsx b/components/ui/MedicationAiSummaryInfoSheet.tsx new file mode 100644 index 0000000..93b12ef --- /dev/null +++ b/components/ui/MedicationAiSummaryInfoSheet.tsx @@ -0,0 +1,454 @@ +import { Ionicons } from '@expo/vector-icons'; +import { GlassView, isLiquidGlassAvailable } from 'expo-glass-effect'; +import * as Haptics from 'expo-haptics'; +import { Image } from 'expo-image'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { + ActivityIndicator, + Animated, + BackHandler, + Dimensions, + Modal, + StyleSheet, + Text, + TouchableOpacity, + View +} from 'react-native'; +import ImageViewing from 'react-native-image-viewing'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import { useI18n } from '../../hooks/useI18n'; +import { triggerLightHaptic } from '../../utils/haptics'; + +const { height: screenHeight } = Dimensions.get('window'); + +interface MedicationAiSummaryInfoSheetProps { + visible: boolean; + onClose: () => void; + onConfirm: () => void; + loading?: boolean; +} + +/** + * AI 用药总结介绍弹窗组件 + * 用于展示 AI 用药总结功能的介绍和说明 + */ +export function MedicationAiSummaryInfoSheet({ + visible, + onClose, + onConfirm, + loading = false, +}: MedicationAiSummaryInfoSheetProps) { + const { t } = useI18n(); + const insets = useSafeAreaInsets(); + const translateY = useRef(new Animated.Value(screenHeight)).current; + const backdropOpacity = useRef(new Animated.Value(0)).current; + const [showImagePreview, setShowImagePreview] = useState(false); + + // 预览图片 - 直接使用 require 资源 + const imageSource = require('@/assets/images/medicine/medicine-ai-summary.png'); + + useEffect(() => { + if (visible) { + translateY.setValue(screenHeight); + backdropOpacity.setValue(0); + + Animated.parallel([ + Animated.timing(backdropOpacity, { + toValue: 1, + duration: 200, + useNativeDriver: true, + }), + Animated.spring(translateY, { + toValue: 0, + useNativeDriver: true, + bounciness: 6, + speed: 12, + }), + ]).start(); + } else { + Animated.parallel([ + Animated.timing(backdropOpacity, { + toValue: 0, + duration: 150, + useNativeDriver: true, + }), + Animated.timing(translateY, { + toValue: screenHeight, + duration: 240, + useNativeDriver: true, + }), + ]).start(() => { + translateY.setValue(screenHeight); + backdropOpacity.setValue(0); + }); + } + }, [visible, backdropOpacity, translateY]); + + // 处理Android返回键关闭图片预览 + useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + if (showImagePreview) { + setShowImagePreview(false); + return true; // 阻止默认返回行为 + } + return false; + }); + + return () => backHandler.remove(); + }, [showImagePreview]); + + // 处理图片预览 + const handleImagePreview = useCallback(() => { + triggerLightHaptic(); + setShowImagePreview(true); + }, []); + + const handleClose = () => { + // 安全地执行触觉反馈,避免因触觉反馈失败导致页面卡顿 + Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light).catch((error) => { + console.warn('[AI_SUMMARY] Haptic feedback failed:', error); + }); + onClose(); + }; + + const handleConfirm = () => { + if (loading) return; + // 安全地执行触觉反馈,避免因触觉反馈失败导致页面卡顿 + Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success).catch((error) => { + console.warn('[AI_SUMMARY] Haptic feedback failed:', error); + }); + onConfirm(); + }; + + if (!visible) { + return null; + } + + return ( + + + + + + + + + + {/* 图标和标题 */} + + + + + {t('medications.aiSummaryInfo.title')} + + + {/* 介绍图片区域 */} + + + {/* 右上角查看大图提示按钮 */} + + {isLiquidGlassAvailable() ? ( + + + + ) : ( + + + + )} + + + + {/* 功能介绍内容 */} + + + + + + + {t('medications.aiSummaryInfo.features.intelligent.title')} + + {t('medications.aiSummaryInfo.features.intelligent.description')} + + + + + + + + + + {t('medications.aiSummaryInfo.features.tracking.title')} + + {t('medications.aiSummaryInfo.features.tracking.description')} + + + + + + + + + + {t('medications.aiSummaryInfo.features.professional.title')} + + {t('medications.aiSummaryInfo.features.professional.description')} + + + + + + {/* 确认按钮 - 支持 Liquid Glass */} + + + {isLiquidGlassAvailable() ? ( + + {loading ? ( + + ) : ( + <> + + {t('medications.aiSummaryInfo.confirmButton')} + + )} + + ) : ( + + {loading ? ( + + ) : ( + <> + + {t('medications.aiSummaryInfo.confirmButton')} + + )} + + )} + + + + + + {/* 图片预览 */} + setShowImagePreview(false)} + swipeToCloseEnabled={true} + doubleTapToZoomEnabled={true} + FooterComponent={() => ( + + setShowImagePreview(false)} + > + {t('medications.detail.imageViewer.close')} + + + )} + /> + + ); +} + +const styles = StyleSheet.create({ + overlay: { + flex: 1, + justifyContent: 'flex-end', + backgroundColor: 'transparent', + }, + backdrop: { + ...StyleSheet.absoluteFillObject, + backgroundColor: 'rgba(15, 23, 42, 0.45)', + }, + sheet: { + backgroundColor: '#fff', + borderTopLeftRadius: 28, + borderTopRightRadius: 28, + paddingHorizontal: 24, + paddingTop: 16, + shadowColor: '#000', + shadowOpacity: 0.12, + shadowRadius: 16, + shadowOffset: { width: 0, height: -4 }, + elevation: 16, + gap: 20, + }, + handle: { + width: 50, + height: 4, + borderRadius: 2, + backgroundColor: '#E5E7EB', + alignSelf: 'center', + marginBottom: 8, + }, + header: { + flexDirection: 'row', + alignItems: 'center', + gap: 12, + }, + iconContainer: { + width: 40, + height: 40, + borderRadius: 20, + backgroundColor: '#F3E8FF', + alignItems: 'center', + justifyContent: 'center', + }, + title: { + fontSize: 20, + fontWeight: '700', + color: '#111827', + }, + imageContainer: { + width: '100%', + height: 380, + borderRadius: 16, + overflow: 'hidden', + backgroundColor: '#F9FAFB', + }, + introImage: { + width: '100%', + height: '100%', + borderRadius: 16, + }, + contentContainer: { + gap: 16, + paddingVertical: 8, + }, + featureItem: { + flexDirection: 'row', + gap: 12, + alignItems: 'flex-start', + }, + featureIcon: { + width: 36, + height: 36, + borderRadius: 18, + backgroundColor: '#F3E8FF', + alignItems: 'center', + justifyContent: 'center', + }, + featureContent: { + flex: 1, + }, + featureTitle: { + fontSize: 16, + fontWeight: '600', + color: '#111827', + marginBottom: 4, + }, + featureDescription: { + fontSize: 14, + lineHeight: 20, + color: '#6B7280', + }, + actions: { + marginTop: 8, + }, + confirmButton: { + height: 56, + borderRadius: 18, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + gap: 8, + overflow: 'hidden', // 保证玻璃边界圆角效果 + }, + fallbackButton: { + backgroundColor: '#8B5CF6', + shadowColor: 'rgba(139, 92, 246, 0.45)', + shadowOffset: { width: 0, height: 10 }, + shadowOpacity: 1, + shadowRadius: 20, + elevation: 6, + }, + confirmText: { + fontSize: 16, + fontWeight: '700', + color: '#fff', + }, + // 图片预览相关样式 + viewImageButton: { + position: 'absolute', + top: 12, + right: 12, + zIndex: 1, + }, + glassViewButton: { + width: 32, + height: 32, + borderRadius: 16, + alignItems: 'center', + justifyContent: 'center', + overflow: 'hidden', + }, + fallbackViewButton: { + borderWidth: 1, + borderColor: 'rgba(0, 0, 0, 0.1)', + backgroundColor: 'rgba(255, 255, 255, 0.8)', + }, + imageViewerFooter: { + position: 'absolute', + bottom: 60, + left: 20, + right: 20, + alignItems: 'center', + zIndex: 1, + }, + imageViewerFooterButton: { + backgroundColor: 'rgba(0, 0, 0, 0.7)', + paddingHorizontal: 24, + paddingVertical: 12, + borderRadius: 20, + }, + imageViewerFooterButtonText: { + color: '#FFF', + fontSize: 16, + fontWeight: '500', + }, +}); \ No newline at end of file diff --git a/i18n/en/medication.ts b/i18n/en/medication.ts index 57d507d..af7f7b2 100644 --- a/i18n/en/medication.ts +++ b/i18n/en/medication.ts @@ -469,4 +469,75 @@ export const medications = { button: 'Got it!', }, }, -}; \ No newline at end of file + aiSummary: { + title: 'AI Medication Summary', + headerBadge: 'AI Insight', + subtitle: 'Adherence and safety overview', + overviewTitle: 'Adherence snapshot', + keyInsights: 'AI key insight', + refresh: 'DeepSeek is analyzing, please wait...', + stats: { + activePlans: 'Active plans', + plannedDoses: 'Planned doses', + takenDoses: 'Taken doses', + completion: 'Overall completion', + avgCompletion: 'Avg adherence', + activeDays: 'Planned days', + }, + badges: { + adherence: 'Adherence', + safety: 'Monitoring', + }, + doseSummary: 'Completed {{taken}} / {{planned}}', + daysLabel: '{{days}} day plan • {{times}} times/day', + completionLabel: '{{value}}% completed', + emptyTitle: 'No active medication plans', + emptyDescription: 'Activate or add a plan to generate the AI summary.', + error403: 'Free AI quota is used up, please upgrade to continue.', + genericError: 'Unable to load AI summary, please try again later.', + keyInsightPlaceholder: 'No AI insight available yet.', + listTitle: 'Plan breakdown', + updatedAt: 'Updated {{time}}', + pillChip: 'Professional advice', + retry: 'Retry', + infoModal: { + badge: 'Info', + title: 'Refresh & Adherence', + point1: '• Daily Generation: Based on active medication plans and actual check-in data, generated daily.', + point2: '• Refresh Effect: Retrieves the latest plan vs. actual completion and AI analysis, no extra quota used.', + point3: '• Adherence: Degree of following the plan (completion rate). Higher means better compliance and lower risk.', + point4: '• Statistics: Only counts plans with isActive=true and not deleted; completion only counts records with status "taken".', + button: 'Got it', + }, + completionInfoModal: { + badge: 'Calculation', + title: 'Completion Calculation Logic', + point1: '• Overall completion = (Total actual doses taken ÷ Total planned doses) × 100%', + point2: '• Actual doses taken: Number of medication records marked as "taken"', + point3: '• Planned doses: Total doses calculated from the plan start date to current date based on daily frequency', + point4: '• Detailed calculation: (Current date - Start date + 1) × Daily doses, e.g.: Day 5 with 2 daily doses = 10 total planned doses', + point5: '• Individual plan completion = (Actual doses taken for that plan ÷ Planned doses for that plan) × 100%', + button: 'Understood', + }, + }, + aiSummaryInfo: { + title: 'AI Medication Summary', + placeholderImage: 'Intro Image', + viewImage: 'View Full Image', + features: { + intelligent: { + title: 'Intelligent Analysis', + description: 'AI deeply analyzes your medication records to provide personalized health recommendations', + }, + tracking: { + title: 'Trend Tracking', + description: 'Long-term tracking of medication effects to help optimize treatment plans', + }, + professional: { + title: 'Professional & Reliable', + description: 'Based on medical knowledge base, providing safe and reliable health analysis', + }, + }, + confirmButton: 'Subscribe Now', + }, +}; diff --git a/i18n/zh/medication.ts b/i18n/zh/medication.ts index c5d1af6..aec5fa7 100644 --- a/i18n/zh/medication.ts +++ b/i18n/zh/medication.ts @@ -469,4 +469,75 @@ export const medications = { button: '知道了!', }, }, -}; \ No newline at end of file + aiSummary: { + title: 'AI 用药总结', + headerBadge: 'AI 专业总结', + subtitle: '依从性与安全重点', + overviewTitle: '用药总览', + keyInsights: 'AI 重点解读', + refresh: 'DeepSeek 正在进行分析,请稍等', + stats: { + activePlans: '进行中计划', + plannedDoses: '计划总次数', + takenDoses: '已完成次数', + completion: '总体完成度', + avgCompletion: '平均依从度', + activeDays: '计划天数', + }, + badges: { + adherence: '依从性', + safety: '监测建议', + }, + doseSummary: '已完成 {{taken}} / {{planned}} 次', + daysLabel: '{{days}} 天计划 · 每日 {{times}} 次', + completionLabel: '完成度 {{value}}%', + emptyTitle: '暂无开启的用药计划', + emptyDescription: '激活或新增计划后,将自动生成 AI 总结。', + error403: '免费使用次数已用完,请开通会员获取更多使用次数', + genericError: '获取AI总结失败,请稍后重试', + keyInsightPlaceholder: '暂未生成解读', + listTitle: '计划分解', + updatedAt: '更新于 {{time}}', + pillChip: '专业建议', + retry: '重试', + infoModal: { + badge: '说明', + title: '刷新规律 & 依从度', + point1: '• 每日生成:基于当天已开启的用药计划与实际打卡数据,每天出一版总结。', + point2: '• 刷新作用:重新获取最新的计划 vs 实际完成度和 AI 解读,不会扣额外次数。', + point3: '• 依从度:按计划执行的程度(完成率)。越高代表越遵医嘱、风险越低。', + point4: '• 统计口径:仅统计 isActive=true 且未删除的计划;完成次数只计状态为 taken 的记录。', + button: '知道了', + }, + completionInfoModal: { + badge: '计算说明', + title: '完成度计算逻辑', + point1: '• 总体完成度 = 所有计划的实际服药次数总和 ÷ 所有计划的理论服药次数总和 × 100%', + point2: '• 实际服药次数:标记为"已服用"的用药记录数量', + point3: '• 理论服药次数:从计划开始时间到当前时间,按照每日服药频率计算的总次数', + point4: '• 理论次数详细计算:(当前日期 - 开始日期 + 1) × 每日服药次数,例如:今天是第5天,每日2次,则理论次数为10次', + point5: '• 单个计划完成度 = 该计划的已服药次数 ÷ 该计划的理论服药次数 × 100%', + button: '了解了', + }, + }, + aiSummaryInfo: { + title: 'AI 用药总结', + placeholderImage: '介绍图片', + viewImage: '查看大图', + features: { + intelligent: { + title: '智能分析', + description: 'AI 深度分析您的用药记录,提供个性化健康建议', + }, + tracking: { + title: '趋势追踪', + description: '长期追踪用药效果,帮助优化治疗方案', + }, + professional: { + title: '专业可靠', + description: '基于医学知识库,提供安全可靠的健康分析', + }, + }, + confirmButton: '我要订阅', + }, +}; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 696c84e..45bc04f 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2684,128 +2684,128 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - EXApplication: a9d1c46d473d36f61302a9a81db2379441f3f094 - EXConstants: e6e50cdfcb4524f40121d1fdcff24e97b7dcd2fd - EXImageLoader: e501c001bc40b8326605e82e6e80363c80fe06b5 - EXNotifications: 7aab54f0e5f3023122bc95699eaff7c52bacb559 - Expo: e852e4b236f95ef9fee36ea9ab20bc6f59c76a10 - ExpoAppleAuthentication: 414e4316f8e25a2afbc3943cf725579c910f24b8 - ExpoAsset: ee515c16290e521de1870dcdee66d78173fbc533 - ExpoBackgroundTask: e048da30cd2d669c5ba20d5d704bee8dd6da320c - ExpoBlur: b5b7a26572b3c33a11f0b2aa2f95c17c4c393b76 - ExpoCamera: d1894aad960492f4881c1f83967167963365d937 - ExpoClipboard: 99109306a2d9ed2fbd16f6b856e6267b2afa8472 - ExpoFileSystem: 73a9f3f2e0affc61eba5b9326153f64870438af1 - ExpoFont: b881d43057dceb7b31ff767b24f612609e80f60f - ExpoGlassEffect: 3d147d753d3bfe1a5d6b7920560e206e3e98c19e - ExpoHaptics: b48d913e7e5f23816c6f130e525c9a6501b160b5 - ExpoHead: 16bab3395d4328e88e4282a4f6ef4f44b1225c8d - ExpoImage: 6eb842cd07817402640545c41884dd7f5fbfbca5 - ExpoImagePicker: bd0a5c81d7734548f6908a480609257e85d19ea8 - ExpoKeepAwake: 3f5e3ac53627849174f3603271df8e08f174ed4a - ExpoLinearGradient: f9e7182e5253d53b2de4134b69d70bbfc2d50588 - ExpoLinking: 50a65cd7beb6051ffc82f84ffb33961dd5e55a5b - ExpoLocalization: 6c6f0f89ad2822001ab0bc2eb6d4d980c77f080c - ExpoMediaLibrary: 648cee3f5dcba13410ec9cc8ac9a426e89a61a31 - ExpoModulesCore: e37f2bfc6f5b553989e1a67e15b7c5c8bbcac0cc - ExpoQuickActions: 62b9db8a20618be1cc19efa3b562ac963c803d58 - ExpoSplashScreen: f46795cd52cdad65d30e54043f04c86401c4f85d - ExpoSQLite: f9d1202877e12bfa78a58309a3977ee4ea0b1314 - ExpoSymbols: ef7b8ac77ac2d496b1bc3f0f7daf5e19c3a9933a - ExpoSystemUI: 9441d46a8efbf9224d1b2e6b18042452ffd0ed79 - ExpoUI: 821b058da921ea4aa6172b36d080991ea6fb2fae - ExpoWebBrowser: 51218ce6ef35ea769e33409aac87fea3df4b919d - EXTaskManager: 53f87ed11659341c3f3f02c0041498ef293f5684 + EXApplication: 296622817d459f46b6c5fe8691f4aac44d2b79e7 + EXConstants: fd688cef4e401dcf798a021cfb5d87c890c30ba3 + EXImageLoader: 189e3476581efe3ad4d1d3fb4735b7179eb26f05 + EXNotifications: 7cff475adb5d7a255a9ea46bbd2589cb3b454506 + Expo: 111394d38f32be09385d4c7f70cc96d2da438d0d + ExpoAppleAuthentication: bc9de6e9ff3340604213ab9031d4c4f7f802623e + ExpoAsset: d839c8eae8124470332408427327e8f88beb2dfd + ExpoBackgroundTask: e0d201d38539c571efc5f9cb661fae8ab36ed61b + ExpoBlur: 2dd8f64aa31f5d405652c21d3deb2d2588b1852f + ExpoCamera: 2a87c210f8955350ea5c70f1d539520b2fc5d940 + ExpoClipboard: af650d14765f19c60ce2a1eaf9dfe6445eff7365 + ExpoFileSystem: 77157a101e03150a4ea4f854b4dd44883c93ae0a + ExpoFont: cf9d90ec1d3b97c4f513211905724c8171f82961 + ExpoGlassEffect: 265fa3d75b46bc58262e4dfa513135fa9dfe4aac + ExpoHaptics: 807476b0c39e9d82b7270349d6487928ce32df84 + ExpoHead: 95a6ee0be1142320bccf07961d6a1502ded5d6ac + ExpoImage: 9c3428921c536ab29e5c6721d001ad5c1f469566 + ExpoImagePicker: d251aab45a1b1857e4156fed88511b278b4eee1c + ExpoKeepAwake: 1a2e820692e933c94a565ec3fbbe38ac31658ffe + ExpoLinearGradient: a464898cb95153125e3b81894fd479bcb1c7dd27 + ExpoLinking: 77455aa013e9b6a3601de03ecfab09858ee1b031 + ExpoLocalization: b852a5d8ec14c5349c1593eca87896b5b3ebfcca + ExpoMediaLibrary: 641a6952299b395159ccd459bd8f5f6764bf55fe + ExpoModulesCore: e8ec7f8727caf51a49d495598303dd420ca994bf + ExpoQuickActions: 31a70aa6a606128de4416a4830e09cfabfe6667f + ExpoSplashScreen: 268b2f128dc04284c21010540a6c4dd9f95003e3 + ExpoSQLite: 7fa091ba5562474093fef09be644161a65e11b3f + ExpoSymbols: 1ae04ce686de719b9720453b988d8bc5bf776c68 + ExpoSystemUI: 2761aa6875849af83286364811d46e8ed8ea64c7 + ExpoUI: b99a1d1ef5352a60bebf4f4fd3a50d2f896ae804 + ExpoWebBrowser: d04a0d6247a0bea4519fbc2ea816610019ad83e0 + EXTaskManager: cbbb80cbccea6487ccca0631809fbba2ed3e5271 FBLazyVector: e95a291ad2dadb88e42b06e0c5fb8262de53ec12 hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 lottie-ios: a881093fab623c467d3bce374367755c272bdd59 - lottie-react-native: 97a11537edc72d0763edab0c83e8cc8a0b9d8484 + lottie-react-native: cbe3d931a7c24f7891a8e8032c2bb9b2373c4b9c PurchasesHybridCommon: a4837eebc889b973668af685d6c23b89a038461d RCTDeprecation: 943572d4be82d480a48f4884f670135ae30bf990 RCTRequired: 8f3cfc90cc25cf6e420ddb3e7caaaabc57df6043 RCTTypeSafety: 16a4144ca3f959583ab019b57d5633df10b5e97c React: 914f8695f9bf38e6418228c2ffb70021e559f92f React-callinvoker: 1c0808402aee0c6d4a0d8e7220ce6547af9fba71 - React-Core: 4ae98f9e8135b8ddbd7c98730afb6fdae883db90 - React-Core-prebuilt: 8f4cca589c14e8cf8fc6db4587ef1c2056b5c151 - React-CoreModules: e878a90bb19b8f3851818af997dbae3b3b0a27ac - React-cxxreact: 28af9844f6dc87be1385ab521fbfb3746f19563c + React-Core: c61410ef0ca6055e204a963992e363227e0fd1c5 + React-Core-prebuilt: 02f0ad625ddd47463c009c2d0c5dd35c0d982599 + React-CoreModules: 1f6d1744b5f9f2ec684a4bb5ced25370f87e5382 + React-cxxreact: 3af79478e8187b63ffc22b794cd42d3fc1f1f2da React-debug: 6328c2228e268846161f10082e80dc69eac2e90a - React-defaultsnativemodule: afc9d809ec75780f39464a6949c07987fbea488c - React-domnativemodule: 91a233260411d41f27f67aa1358b7f9f0bfd101d - React-Fabric: 21f349b5e93f305a3c38c885902683a9c79cf983 - React-FabricComponents: 47ac634cc9ecc64b30a9997192f510eebe4177e4 - React-FabricImage: 21873acd6d4a51a0b97c133141051c7acb11cc86 - React-featureflags: 653f469f0c3c9dc271d610373e3b6e66a9fd847d - React-featureflagsnativemodule: c91a8a3880e0f4838286402241ead47db43aed28 - React-graphics: b4bdb0f635b8048c652a5d2b73eb8b1ddd950f24 - React-hermes: fcfad3b917400f49026f3232561e039c9d1c34bf - React-idlecallbacksnativemodule: 8cb83207e39f8179ac1d344b6177c6ab3ccebcdc - React-ImageManager: 396128004783fc510e629124dce682d38d1088e7 - React-jserrorhandler: b58b788d788cdbf8bda7db74a88ebfcffc8a0795 - React-jsi: d2c3f8555175371c02da6dfe7ed1b64b55a9d6c0 - React-jsiexecutor: ba537434eb45ee018b590ed7d29ee233fddb8669 - React-jsinspector: f21b6654baf96cb9f71748844a32468a5f73ad51 - React-jsinspectorcdp: 3f8be4830694c3c1c39442e50f8db877966d43f0 - React-jsinspectornetwork: 70e41469565712ad60e11d9c8b8f999b9f7f61eb - React-jsinspectortracing: eccf9bfa4ec7f130d514f215cfb2222dc3c0e270 - React-jsitooling: b376a695f5a507627f7934748533b24eed1751ca - React-jsitracing: 5c8c3273dda2d95191cc0612fb5e71c4d9018d2a - React-logger: c3e2f8a2e284341205f61eef3d4677ab5a309dfd - React-Mapbuffer: 603c18db65844bb81dbe62fee8fcc976eaeb7108 - React-microtasksnativemodule: d77e0c426fce34c23227394c96ca1033b30c813c - react-native-render-html: 984dfe2294163d04bf5fe25d7c9f122e60e05ebe - react-native-safe-area-context: add9b4ba236fe95ec600604d0fc72f395433dd59 - react-native-view-shot: 26174e54ec6b4b7c5d70b86964b747919759adc1 - react-native-voice: f5e8eec2278451d0017eb6a30a6ccc726aca34e0 - react-native-webview: a4f0775a31b73cf13cfc3d2d2b119aa94ec76e49 - React-NativeModulesApple: 1664340b8750d64e0ef3907c5e53d9481f74bcbd + React-defaultsnativemodule: d635ef36d755321e5d6fc065bd166b2c5a0e9833 + React-domnativemodule: dd28f6d96cd21236e020be2eff6fe0b7d4ec3b66 + React-Fabric: 2e32c3fdbb1fbcf5fde54607e3abe453c6652ce2 + React-FabricComponents: 5ed0cdb81f6b91656cb4d3be432feaa28a58071a + React-FabricImage: 2bc714f818cb24e454f5d3961864373271b2faf8 + React-featureflags: 847642f41fa71ad4eec5e0351badebcad4fe6171 + React-featureflagsnativemodule: c868a544b2c626fa337bcbd364b1befe749f0d3f + React-graphics: 192ec701def5b3f2a07db2814dfba5a44986cff6 + React-hermes: e875778b496c86d07ab2ccaa36a9505d248a254b + React-idlecallbacksnativemodule: 4d57965cdf82c14ee3b337189836cd8491632b76 + React-ImageManager: bd0b99e370b13de82c9cd15f0f08144ff3de079e + React-jserrorhandler: a2fdef4cbcfdcdf3fa9f5d1f7190f7fd4535248d + React-jsi: 89d43d1e7d4d0663f8ba67e0b39eb4e4672c27de + React-jsiexecutor: abe4874aaab90dfee5dec480680220b2f8af07e3 + React-jsinspector: a0b3e051aef842b0b2be2353790ae2b2a5a65a8f + React-jsinspectorcdp: 6346013b2247c6263fbf5199adf4a8751e53bd89 + React-jsinspectornetwork: 26281aa50d49fc1ec93abf981d934698fa95714f + React-jsinspectortracing: 55eedf6d57540507570259a778663b90060bbd6e + React-jsitooling: 0e001113fa56d8498aa8ac28437ac0d36348e51a + React-jsitracing: b713793eb8a5bbc4d86a84e9d9e5023c0f58cbaf + React-logger: 50fdb9a8236da90c0b1072da5c32ee03aeb5bf28 + React-Mapbuffer: 9050ee10c19f4f7fca8963d0211b2854d624973e + React-microtasksnativemodule: f775db9e991c6f3b8ccbc02bfcde22770f96e23b + react-native-render-html: 5afc4751f1a98621b3009432ef84c47019dcb2bd + react-native-safe-area-context: 42a1b4f8774b577d03b53de7326e3d5757fe9513 + react-native-view-shot: fb3c0774edb448f42705491802a455beac1502a2 + react-native-voice: 908a0eba96c8c3d643e4f98b7232c6557d0a6f9c + react-native-webview: b29007f4723bca10872028067b07abacfa1cb35a + React-NativeModulesApple: 8969913947d5b576de4ed371a939455a8daf28aa React-oscompat: ce47230ed20185e91de62d8c6d139ae61763d09c - React-perflogger: b1af3cfb3f095f819b2814910000392a8e17ba9f - React-performancetimeline: f9ec65b77bcadbc7bd8b47a6f4b4b697da7b1490 + React-perflogger: 02b010e665772c7dcb859d85d44c1bfc5ac7c0e4 + React-performancetimeline: 130db956b5a83aa4fb41ddf5ae68da89f3fb1526 React-RCTActionSheet: 0b14875b3963e9124a5a29a45bd1b22df8803916 - React-RCTAnimation: 60f6eca214a62b9673f64db6df3830cee902b5af - React-RCTAppDelegate: 37734b39bac108af30a0fd9d3e1149ec68b82c28 - React-RCTBlob: 83fbcbd57755caf021787324aac2fe9b028cc264 - React-RCTFabric: a05cb1df484008db3753c8b4a71e4c6d9f1e43a6 - React-RCTFBReactNativeSpec: d58d7ae9447020bbbac651e3b0674422aba18266 - React-RCTImage: 47aba3be7c6c64f956b7918ab933769602406aac - React-RCTLinking: 2dbaa4df2e4523f68baa07936bd8efdfa34d5f31 - React-RCTNetwork: 1fca7455f9dedf7de2b95bec438da06680f3b000 - React-RCTRuntime: 17819dd1dfc8613efaf4cbb9d8686baae4a83e5b - React-RCTSettings: 01bf91c856862354d3d2f642ccb82f3697a4284a - React-RCTText: cb576a3797dcb64933613c522296a07eaafc0461 - React-RCTVibration: 560af8c086741f3525b8456a482cdbe27f9d098e + React-RCTAnimation: a7b90fd2af7bb9c084428867445a1481a8cb112e + React-RCTAppDelegate: 3262bedd01263f140ec62b7989f4355f57cec016 + React-RCTBlob: c17531368702f1ebed5d0ada75a7cf5915072a53 + React-RCTFabric: 6409edd8cfdc3133b6cc75636d3b858fdb1d11ea + React-RCTFBReactNativeSpec: c004b27b4fa3bd85878ad2cf53de3bbec85da797 + React-RCTImage: c68078a120d0123f4f07a5ac77bea3bb10242f32 + React-RCTLinking: cf8f9391fe7fe471f96da3a5f0435235eca18c5b + React-RCTNetwork: ca31f7c879355760c2d9832a06ee35f517938a20 + React-RCTRuntime: a6cf4a1e42754fc87f493e538f2ac6b820e45418 + React-RCTSettings: e0e140b2ff4bf86d34e9637f6316848fc00be035 + React-RCTText: 75915bace6f7877c03a840cc7b6c622fb62bfa6b + React-RCTVibration: 25f26b85e5e432bb3c256f8b384f9269e9529f25 React-rendererconsistency: 2dac03f448ff337235fd5820b10f81633328870d - React-renderercss: c5c6b7a15948dd28facca39a18ac269073718490 - React-rendererdebug: 3c9d5e1634273f5a24d84cc5669f290ce0bdc812 - React-RuntimeApple: 887637d1e12ea8262df7d32bc100467df2302613 - React-RuntimeCore: 91f779835dc4f8f84777fe5dd24f1a22f96454e4 - React-runtimeexecutor: 8bb6b738f37b0ada4a6269e6f8ab1133dea0285c - React-RuntimeHermes: 4cb93de9fa8b1cc753d200dbe61a01b9ec5f5562 - React-runtimescheduler: 83dc28f530bfbd2fce84ed13aa7feebdc24e5af7 - React-timing: 03c7217455d2bff459b27a3811be25796b600f47 - React-utils: 6d46795ae0444ec8a5d9a5f201157b286bf5250a - ReactAppDependencyProvider: c277c5b231881ad4f00cd59e3aa0671b99d7ebee - ReactCodegen: 4c44b74b77fc41ae25b9e2c7e9bd6e2bc772c23f - ReactCommon: e6e232202a447d353e5531f2be82f50f47cbaa9a + React-renderercss: 477da167bb96b5ac86d30c5d295412fb853f5453 + React-rendererdebug: 2a1798c6f3ef5f22d466df24c33653edbabb5b89 + React-RuntimeApple: 28cf4d8eb18432f6a21abbed7d801ab7f6b6f0b4 + React-RuntimeCore: 41bf0fd56a00de5660f222415af49879fa49c4f0 + React-runtimeexecutor: 1afb774dde3011348e8334be69d2f57a359ea43e + React-RuntimeHermes: f3b158ea40e8212b1a723a68b4315e7a495c5fc6 + React-runtimescheduler: 3e1e2bec7300bae512533107d8e54c6e5c63fe0f + React-timing: 6fa9883de2e41791e5dc4ec404e5e37f3f50e801 + React-utils: 6e2035b53d087927768649a11a26c4e092448e34 + ReactAppDependencyProvider: 1bcd3527ac0390a1c898c114f81ff954be35ed79 + ReactCodegen: 7d4593f7591f002d137fe40cef3f6c11f13c88cc + ReactCommon: 08810150b1206cc44aecf5f6ae19af32f29151a8 ReactNativeDependencies: 71ce9c28beb282aa720ea7b46980fff9669f428a RevenueCat: 1e61140a343a77dc286f171b3ffab99ca09a4b57 - RNCAsyncStorage: e85a99325df9eb0191a6ee2b2a842644c7eb29f4 - RNCMaskedView: 3c9d7586e2b9bbab573591dcb823918bc4668005 - RNCPicker: e0149590451d5eae242cf686014a6f6d808f93c7 - RNDateTimePicker: 5e0a759109b63ebc661a4714712361d2d07142fe - RNDeviceInfo: 8b6fa8379062949dd79a009cf3d6b02a9c03ca59 - RNGestureHandler: 6a488ce85c88e82d8610db1108daf04e9b2d5162 - RNPurchases: 121c761620615ae624ba7a74e2e5b94254995e6c - RNReanimated: 00771d2ba7c810124852092eb29c0d1edf50cc58 - RNScreens: dd61bc3a3e6f6901ad833efa411917d44827cf51 - RNSentry: 54f8041cd06d7ccf484171edde72f1b07323fb2e - RNSVG: 2825ee146e0f6a16221e852299943e4cceef4528 - RNWorklets: 83609071441ac7d623f1e0e63b9043f4f345e2a2 + RNCAsyncStorage: 3a4f5e2777dae1688b781a487923a08569e27fe4 + RNCMaskedView: d2578d41c59b936db122b2798ba37e4722d21035 + RNCPicker: c8a3584b74133464ee926224463fcc54dfdaebca + RNDateTimePicker: 19ffa303c4524ec0a2dfdee2658198451c16b7f1 + RNDeviceInfo: bcce8752b5043a623fe3c26789679b473f705d3c + RNGestureHandler: 2914750df066d89bf9d8f48a10ad5f0051108ac3 + RNPurchases: 5f3cd4fea5ef2b3914c925b2201dd5cecd31922f + RNReanimated: 1442a577e066e662f0ce1cd1864a65c8e547aee0 + RNScreens: d8d6f1792f6e7ac12b0190d33d8d390efc0c1845 + RNSentry: 1d7b9fdae7a01ad8f9053335b5d44e75c39a955e + RNSVG: 31d6639663c249b7d5abc9728dde2041eb2a3c34 + RNWorklets: 54d8dffb7f645873a58484658ddfd4bd1a9a0bc1 SDWebImage: d0184764be51240d49c761c37f53dd017e1ccaaf SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c diff --git a/services/challengesApi.ts b/services/challengesApi.ts index 67818ea..d18f149 100644 --- a/services/challengesApi.ts +++ b/services/challengesApi.ts @@ -39,6 +39,7 @@ export enum ChallengeType { MOOD = 'mood', SLEEP = 'sleep', WEIGHT = 'weight', + STEP = 'step', CUSTOM = 'custom', } diff --git a/services/medications.ts b/services/medications.ts index a48681f..7637e7e 100644 --- a/services/medications.ts +++ b/services/medications.ts @@ -6,6 +6,7 @@ import type { DailyMedicationStats, Medication, MedicationAiAnalysisV2, + MedicationAiSummary, MedicationForm, MedicationRecognitionTask, MedicationRecord, @@ -315,6 +316,14 @@ export const getOverallStats = async (): Promise<{ // ==================== AI 分析相关 ==================== +/** + * 获取 AI 用药总结 + * @returns 当前激活用药计划的 AI 关键解读与完成度 + */ +export const getMedicationAiSummary = async (): Promise => { + return api.get('/medications/ai-summary'); +}; + /** * 流式获取药品 AI 分析 * @param medicationId 药品 ID diff --git a/services/notifications.ts b/services/notifications.ts index da7b55f..1eaf4bc 100644 --- a/services/notifications.ts +++ b/services/notifications.ts @@ -189,9 +189,13 @@ export class NotificationService { } else if (data?.type === 'goal_achievement') { // 处理目标达成通知 console.log('用户点击了目标达成通知'); - } else if (data?.type === 'mood_checkin') { + } else if (data?.type === 'mood_checkin' || data?.type === 'mood_checkin_reminder') { // 处理心情打卡提醒 console.log('用户点击了心情打卡提醒'); + router.push({ + pathname: '/mood/edit', + params: { date: new Date().toISOString().split('T')[0] } + } as any); } else if (data?.type === 'goal_reminder') { // 处理目标提醒通知 console.log('用户点击了目标提醒通知', data); @@ -221,13 +225,21 @@ export class NotificationService { if (data?.url) { router.push(data.url as any); } - } else if (data?.type === 'water_reminder' || data?.type === 'regular_water_reminder') { + } else if (data?.type === 'water_reminder' || data?.type === 'regular_water_reminder' || data?.type === 'custom_water_reminder') { // 处理喝水提醒通知 console.log('用户点击了喝水提醒通知', data); // 跳转到统计页面查看喝水进度 if (data?.url) { router.push(data.url as any); } + } else if (data?.type === 'daily_summary' || data?.type === 'daily_summary_reminder') { + // 处理每日总结通知 + console.log('用户点击了每日总结通知', data); + if (data?.url) { + router.push(data.url as any); + } else { + router.push('/(tabs)/statistics' as any); + } } else if (data?.type === NotificationTypes.FASTING_START || data?.type === NotificationTypes.FASTING_END) { router.push(ROUTES.TAB_FASTING as any); } else if (data?.type === NotificationTypes.WORKOUT_COMPLETION) { diff --git a/types/medication.ts b/types/medication.ts index 774d89e..1c6ab08 100644 --- a/types/medication.ts +++ b/types/medication.ts @@ -95,6 +95,28 @@ export interface MedicationDisplayItem { medicationId: string; // 药物ID } +/** + * AI 用药总结 - 药物层级统计 + */ +export interface MedicationAiSummaryItem { + id: string; + name: string; + startDate: string; + plannedDays: number; + timesPerDay: number; + plannedDoses: number; + takenDoses: number; + completionRate: number; // 0-1 +} + +/** + * AI 用药总结响应 + */ +export interface MedicationAiSummary { + medicationAnalysis: MedicationAiSummaryItem[]; + keyInsights: string; +} + /** * 药品 AI 分析 V2 结构化数据 */ diff --git a/utils/notificationHelpers.ts b/utils/notificationHelpers.ts index df1e773..ec323c6 100644 --- a/utils/notificationHelpers.ts +++ b/utils/notificationHelpers.ts @@ -359,7 +359,7 @@ export class MoodNotificationHelpers { data: { type: 'mood_reminder', isDailyReminder: true, - url: '/mood-statistics' // 跳转到心情统计页面 + url: '/mood/edit' // 跳转到心情记录页面 }, sound: true, priority: 'normal', @@ -388,7 +388,7 @@ export class MoodNotificationHelpers { body: `${userName},夜深了~来记录一下今天的心情吧!每一份情感都值得被珍藏 ✨💕`, data: { type: 'mood_reminder', - url: '/mood-statistics' + url: '/mood/edit' }, sound: true, priority: 'normal',