diff --git a/apps/web/src/pages/health/PatientDetail.tsx b/apps/web/src/pages/health/PatientDetail.tsx index 5bb31ac..317ba69 100644 --- a/apps/web/src/pages/health/PatientDetail.tsx +++ b/apps/web/src/pages/health/PatientDetail.tsx @@ -1,5 +1,6 @@ import { useEffect, useState, useCallback } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; +import { startAnalysis, type AnalysisType } from '../../api/ai/analysisSse'; import { Card, Descriptions, @@ -44,6 +45,19 @@ export default function PatientDetail() { const navigate = useNavigate(); const [patient, setPatient] = useState(null); const [loading, setLoading] = useState(false); + const [analysisResult, setAnalysisResult] = useState(''); + const [analyzing, setAnalyzing] = useState(false); + + const triggerAnalysis = async (type: AnalysisType) => { + if (!id) return; + setAnalyzing(true); + setAnalysisResult(''); + await startAnalysis(type, { patient_id: id }, { + onChunk: (content) => setAnalysisResult(prev => prev + content), + onError: (msg) => { message.error(msg); setAnalyzing(false); }, + onDone: () => { message.success('分析完成'); setAnalyzing(false); }, + }); + }; const [editModalOpen, setEditModalOpen] = useState(false); const [form] = Form.useForm(); const isDark = useThemeMode(); @@ -313,7 +327,26 @@ export default function PatientDetail() { { key: 'ai', label: 'AI 建议', - children: id ? : null, + children: id ? ( + + + + + + + + + {analysisResult && ( + +
{analysisResult}
+
+ )} +
+ ) : null, }, ]} />