LOG · 日志
IoMT
IoMT Digital Twin Platform(IoMT 数字孪生平台)
给居家与机构养老场景搭建健康数据后台的开发者:把可穿戴、床垫与环境设备的多源数据经 MQTT/HTTP 接入,统一存储并由管理台展示患者、设备与健康指标,同时通过 WebSocket 向看板推送实时状态。
状态:归档(GitHub cognitive-health-screen 已 archived;后端与管理台可运行,用户端前端另仓维护);入口:python run.py(后端 :8000)+ cd web && npm run dev;仓库:本地归档,原仓 fire-disposal/cognitive-health-screen
本质
把多源健康设备数据接入、解析校验与数字孪生管理台收敛为一套 FastAPI + Vue 的后台平台。
选型
基于 FastAPI + Vue 3 的前后端分离平台,后端 Tortoise ORM,数据落 PostgreSQL,设备接入走 MQTT 与 WebSocket,管理台基于 vue-fastapi-admin 二次开发。
- 运行时
- Python 3.11+ / Node 18+
- 前端
- Vue 3
- Vite
- Naive UI
- Pinia
- Vue 3
- 后端
- FastAPI 0.111
- Tortoise ORM
- Aerich 迁移
- MQTT 客户端
- WebSocket
- FastAPI 0.111
- 数据
- PostgreSQL
- 部署
- Docker Compose + Nginx
功能
- 多源健康数据接入:MQTT 主题订阅与 HTTP 上报并行,按设备类型归一化后落库。
- 健康数据解析验证:对心率、呼吸、体动等指标做范围校验与异常标记,保留原始报文。
- 数字孪生管理台:患者、设备、绑定关系、健康指标与告警的统一管理页面。
- 实时推送:WebSocket 将设备状态与指标变化推送到前端看板。
- 初始化与迁移:
INIT_MODE支持 skip/auto/force/rebuild,Aerich 管理表结构版本。 - 未完成:用户端(家属/患者)页面;多租户隔离。
启动流程
uv sync
cp .env.example .env # 填数据库与 MQTT 连接
python run.py # 后端 :8000
cd web
npm install
npm run dev # 管理台 :5173
前置:PostgreSQL 与 MQTT Broker 可用;.env 为唯一配置入口,首次启动按 INIT_MODE 建表并写入初始数据;生产用 docker compose 启动。
边界与已知问题
- 结构假设:单实例部署,MQTT 消费者与 WebSocket 连接均驻留进程内,多副本会重复消费。
- 前端边界:仓库只含后端与管理台;用户端由
threejstest(three.js 看板)与datavue(Vue 展示页)另仓维护。 - 上游派生:基于
vue-fastapi-admin二次开发,认证与菜单体系沿用上游约定,升级需比对差异。 - 文档漂移:根 README 仍以二次开发说明为主,后端分层细节以
docs/backend_architecture.md为准。 - 密钥:
.env.example仅含占位值,真实连接信息不得提交。
文档索引
- docs/backend_architecture.md — 后端分层与模块
- docs/health_plugin_architecture.md — 健康数据插件架构
- docs/TODO.md — 历史待办
- web/README.md — 管理台开发说明