import React, { useEffect, useState } from 'react'; import { View, Text } from '@tarojs/components'; import ContentCard from '../ContentCard'; import { getHealthSummary, type HealthSummary } from '../../../services/ai-analysis'; import './index.scss'; interface AiHealthSummaryCardProps { patientId: string; } const RISK_COLORS: Record = { critical: 'var(--tk-color-danger, #ff4d4f)', high: 'var(--tk-color-warning, #faad14)', medium: 'var(--tk-color-info, #1890ff)', low: 'var(--tk-color-success, #52c41a)', }; const RISK_LABELS: Record = { critical: '高风险', high: '较高风险', medium: '中等风险', low: '低风险', }; const AiHealthSummaryCard: React.FC = ({ patientId }) => { const [summary, setSummary] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { if (!patientId) return; setLoading(true); getHealthSummary(patientId) .then((data) => setSummary(data)) .catch(() => setSummary(null)) .finally(() => setLoading(false)); }, [patientId]); if (loading) { return ( AI 健康摘要加载中... ); } if (!summary) return null; const riskColor = RISK_COLORS[summary.risk_level] || RISK_COLORS.low; const riskLabel = RISK_LABELS[summary.risk_level] || '低风险'; return ( AI 健康摘要 {riskLabel} {summary.latest_insight_title && ( 最新洞察 {summary.latest_insight_title} )} {summary.active_insights_count} 活跃洞察 {summary.recent_analyses_count} AI 分析 {summary.summary_items.length > 0 && ( {summary.summary_items.slice(0, 3).map((item, idx) => ( {item.title} ))} )} ); }; export default React.memo(AiHealthSummaryCard);