ARTIFACT / XUNIHUANZHE
Xunihuanzhe(虚拟患者训练系统)
ARCHIVED给护理专业学生练习病史采集与沟通技能的早期虚拟标准化病人系统:学生与 DeepSeek 驱动的虚拟患者进行多轮问诊,系统依据沟通技能与病史采集条目自动评分,教师可逐项复核并管理病例。
◈ System Profile ◈
◈ Access · 访问入口 ◈
◈ Sections · 章节 ◈
◈ README ◈
Xunihuanzhe(虚拟患者训练系统)
给护理专业学生练习病史采集与沟通技能的早期虚拟标准化病人系统:学生与 DeepSeek 驱动的虚拟患者进行多轮问诊,系统依据沟通技能与病史采集条目自动评分,教师可逐项复核并管理病例。
状态:归档(v1.16-stable,fork 自 Zjw2000926/Xunihuanzhe,不再维护;本地保留完整源码与 5 个病例);入口:cd backend && uvicorn main:app --port 8000 + cd frontend && npm run dev;仓库:Zjw2000926/Xunihuanzhe
本质
把大模型虚拟患者对话、20 分钟病史采集计时与条目化评分复核收敛为一套可本地部署的护理问诊训练系统。
选型
基于 FastAPI + React 的前后端分离单体,数据落 SQLite(WAL 模式),模型调用 DeepSeek API,部署为单机 Docker Compose。
- 运行时
- Python 3.10+ / Node 18+
- 前端
- React 19
- Vite
- 自建 14 个 UI 组件
- ECharts(训练统计)
- React 19
- 后端
- FastAPI
- SQLAlchemy + SQLite(WAL)
- JWT 鉴权
- FastAPI
- 外部服务
- DeepSeek API(虚拟患者对话与评分)
- 部署
- Docker Compose(backend + nginx 前端)
功能
- 虚拟患者问诊:DeepSeek 扮演患者,按病例卡约束症状披露,支持多轮病史采集。
- 采集进度侧栏:客户端中文关键词匹配追踪问询覆盖,不调用 LLM、不泄露病例答案。
- 自动评分:沟通技能 14 项 + 病史采集 5 项,原始 57 分制映射为 100 分制,每项附对话证据与理由。
- 教师复核:逐项修改 AI 评分、添加备注,徽章区分“AI 初评 / 教师已复核”。
- 训练计时:20 分钟倒计时,剩余 5 分钟警告,到时自动结束并触发评分确认。
- 病例与后台:5 个病例覆盖 1–3 级难度;教师端 4 个 Tab 管理训练记录、用户、病例与 LLM 调用。
- 未完成:Phase 5 响应式优化;评分标准多版本并发对比。
启动流程
# 后端
cd backend
pip install -r requirements.txt
python -m uvicorn main:app --host 127.0.0.1 --port 8000 --reload
# 前端
cd frontend
npm install
npm run dev # http://localhost:3000
前置:.env 中填入 DEEPSEEK_API_KEY(从 .env.example 复制);首次启动自动创建 SQLite 数据库与种子病例;生产用 docker compose up,数据库卷为 db_data。
边界与已知问题
- 结构假设:SQLite 单进程写入,生产只能单 worker 启动,不支持多副本并发写。
- Fork 身份:本仓库是他人项目的 fork,仅作历史原型归档,不跟随上游更新。
- 评分可信度:评分依赖 DeepSeek 输出,rubric 版本与 prompt 版本虽记录,但未做多模型一致性验证。
- 文档漂移:
docs/06-dev-log.md记录到 v1.16,后续未再更新;启动指南仍以 Windowsstart.bat为一等入口。
文档索引
- docs/01-architecture.md — 技术栈与架构
- docs/02-api-reference.md — API 端点
- docs/05-llm-design.md — 虚拟患者与评分 Prompt
- docs/07-startup-guide.md — 启动与环境配置
- 交付说明.md — 归档内容与未包含项