返回文章归档

2026-03-26

最小前端:左侧问诊,右侧报告

没有上复杂框架,只用 Vite + React 做了一个能讲清楚双轨的前端。

AIMedical DemoEngineering Log

curl 看不出双轨

M5 做前端,是因为 /v1/dual 光靠接口返回讲不清楚。

curl 里当然能看到 A 线和 B 线两个字段,但别人很难直观看出差别:哪个是问诊,哪个是报告,为什么要分开。这个 demo 需要一个页面,把双轨关系摆出来。

所以第一版前端非常小:左边聊天,右边报告,顶部放一点状态。

为什么是 Vite,不是 Next

这里我没有用 Next.js。原因很简单:这个前端不需要 SEO,不需要服务端渲染,也没有复杂路由。它只是一个教学演示壳。

Vite + React 足够快,启动也轻。一个 App.tsx 就能把核心状态串起来。对这个阶段来说,少一点框架心智负担,比预留一堆未来能力更重要。

样式也没有上 Tailwind 或组件库,直接手写 CSS。页面小,组件少,引 UI 库反而会让依赖和样式覆盖变复杂。

左边问,右边看报告

页面结构对应后端的双轨:

  • 左侧展示用户输入和 A 线回复;
  • 右侧展示 B 线结构化报告和引用来源;
  • session_id 放在 localStorage 里,保证多轮对话能接上。

右侧报告其实很关键。它让用户看到 B 线不是“另一段长回答”,而是一份基于证据整理的结构化结果。引用来源也放在这里,因为它比任何口头解释都更能说明 RAG 在工作。

不做暗色科技风

我一开始也想过做得“AI 医疗感”一点,深色背景、发光卡片、各种状态灯。但最后放弃了。

这个 demo 不是卖视觉,它要讲清楚问诊流程。强风格很容易抢走注意力,还会让医疗演示显得不够克制。

所以第一版前端更像一个教学控制台:能输入,能看到 A 线追问,能看到 B 线报告,能解释接口契约。够用就停。

M5 做完后,这个项目终于可以不靠讲述运行了。打开页面,左边和右边的差异就在那里。对一个 demo 来说,这一步比多加几个模型参数更有价值。

评论