创新实训博客记录 | 1.后端框架搭建及模块设计
目录
本项目实现的是基于多智能体的医院资源调度系统。
我主要负责团队中的后端部分,目前完成了需求的分析,搭建好了整体的框架,完成了实体类/数据库的设计与部分基础CRUD接口的设计与实现。
1、目前技术栈选用:
Python、FastAPI、Uvicorn、SQLite、Pydantic、SSE
Web 框架使用的是 FastAPI,服务启动使用 Uvicorn。数据库使用 SQLite,数据访问方式是 sqlite3 + 手写 SQL。请求和响应的数据结构校验采用 Pydantic v2。在聊天模块中,加入了 SSE(Server-Sent Events)流式输出,把内容逐步推送给前端。
2、虚拟环境创建/服务启动:
创建.venv虚拟环境(目前选用3.12.2)
//requirements.txt
fastapi==0.115.0
uvicorn==0.30.6
pydantic==2.9.2
pytest
//运行Activate.ps1进入虚拟环境,执行代码安装依赖:
pip install -r requirements.txt
//启动后端服务:
python server/run_server.py
或者
uvicorn server.src.app:app --host 127.0.0.1 --port 8000 --reload
运行后出现以下字样即代表后端启动成功:(测试/health接口响应"ok")

3、数据库/实体类设计:
设计er图如下:(目前)
其中重要的关联部分:
一对一:
Users —>Patients / Doctors
Conversations —>Diagnosis_Results
Users —>Auth_Sessions
一对多:
Conversations —>Conversation_Messages
Medical_Devices —>Device_Slots
Patients —>Schedule_Plans
Department —> Doctors
目前采用的是SQLite数据库,只需要创建一个sqlite3文件,连接后可使用,运行建表脚本即可。(每个字段加上update_at/create_at/deleted字段方便debug)
chat部分会调用多智能体服务,相关知识库存放于另外一个sqlite文件中,避免耦合性过强。
可以利用@dataclass装饰器简化代码书写(以下为User示例)

4、接口设计(目前):
// 登录、人员管理模块接口
-POST /api/v1/auth/login/wechat
-POST /api/v1/auth/logout
-GET /api/v1/users
-POST /api/v1/users
-PATCH /api/v1/users/{user_id}
-PATCH /api/v1/users/{user_id}/status
-GET /api/v1/patients
-POST /api/v1/patients
-GET /api/v1/doctors
-POST /api/v1/doctors
-PATCH /api/v1/doctors/{doctor_id}/status
// 部门、设备模块接口
-GET /api/v1/devices?department_id=...
-POST /api/v1/devices
-PATCH /api/v1/devices/{device_id}
-POST /api/v1/devices/slots
-PATCH /api/v1/devices/slots/{slot_id}
-POST /api/v1/devices/slots/query
// 对话聊天模块接口
-POST /api/v1/chat/conversations/ensure
-GET /api/v1/chat/conversations/{conversation_id}/messages
-POST /api/v1/chat/messages
-POST /api/v1/chat/stream (SSE)
-POST /api/v1/chat/diagnosis/confirm (医生确认诊断并绑定负责医生)
总结
目前已经搭好了后端的整体框架,接下来只需要根据分析需求,实现各部分接口以及业务逻辑代码,将前端需要的相关信息返回即可(主要难度在于agent与医生的对接以及仪器的调度部分,可能需要agent调用tools完成function calling部分)。
更多推荐
所有评论(0)