feat: 联调对话功能

This commit is contained in:
王天骄
2026-06-09 17:00:23 +08:00
parent 3414d0662c
commit 2192b855a1
77 changed files with 1082 additions and 487 deletions
+29 -6
View File
@@ -1,4 +1,5 @@
import type { ClinicalCase } from './cases'
import { FASTAPI_BASE_URL, authHeaders, readError, type ApiEnvelope } from './session'
export type DiagnosisDraft = {
primaryDiagnosis: string
@@ -6,6 +7,12 @@ export type DiagnosisDraft = {
evidence: string
}
export type DiagnosisPayload = {
primary_diagnosis: string
differential_diagnoses: string[]
diagnosis_basis: string
}
export type DiagnosisContext = {
mentorAdvice: string
defaultDraft: DiagnosisDraft
@@ -26,11 +33,27 @@ export function fetchDiagnosisContext(caseItem?: ClinicalCase | null): Promise<D
})
}
export function submitDiagnosis(caseId: string, draft: DiagnosisDraft) {
return Promise.resolve({
id: `mock-diagnosis-${Date.now()}`,
caseId,
...draft,
submittedAt: new Date().toISOString()
export async function submitDiagnosis(sessionId: number, draft: DiagnosisDraft) {
const payload: DiagnosisPayload = {
primary_diagnosis: draft.primaryDiagnosis.trim(),
differential_diagnoses: draft.differentialDiagnosis.map(item => item.trim()).filter(Boolean),
diagnosis_basis: draft.evidence.trim()
}
const response = await fetch(`${FASTAPI_BASE_URL}/sessions/${sessionId}/diagnosis`, {
method: 'POST',
headers: authHeaders(),
body: JSON.stringify(payload)
})
if (!response.ok) {
throw new Error(await readError(response))
}
const result = (await response.json()) as ApiEnvelope<unknown>
if (result.code !== 'OK') {
throw new Error(result.message || '诊断提交失败')
}
return result.data || payload
}