BodyBalanceEvaluation/document/Web接口调用说明.md

259 lines
8.7 KiB
Markdown
Raw Normal View History

2025-11-16 11:43:41 +08:00
# Web 接口调用说明
本文档基于 `backend/main.py` 中注册的路由,整理对外提供的 Web API 调用方式、参数与返回示例,便于前端或第三方系统集成。
## 总览
- 基础与健康检查
- `GET /health`
- `GET /api/health`
- 授权相关
- `GET /api/license/info`
- `POST /api/license/activation-request`
- `POST /api/license/verify`
- `POST /api/license/activate-package`
- 认证与用户
- `POST /api/auth/login`
- `POST /api/auth/register`
- `POST /api/auth/logout`
- `GET /api/auth/verify`
- `POST /api/auth/forgot-password`
- `GET /api/users`
- `POST /api/users/<user_id>/approve`
- `DELETE /api/users/<user_id>`
- 设备与配置
- `GET /api/devices/status`
- `POST /api/devices/refresh`
- `GET /api/config/devices`
- `POST /api/config/devices/all`
- `POST /api/devices/calibrate`
- `POST /api/devices/calibrate/imu`
- 患者管理
- `GET /api/patients`
- `GET|PUT|DELETE /api/patients/<patient_id>`
- 检测流程
- `POST /api/detection/start`
- `GET /api/detection/<session_id>/has_data`
- `POST /api/detection/<session_id>/start_record`
- `POST /api/detection/<session_id>/stop_record`
- `POST /api/detection/<session_id>/save-data`
- `POST /api/detection/<session_id>/save-info`
- `GET /api/detection/<session_id>/status`
- `POST /api/detection/<session_id>/stop`
- 历史与数据查询
- `GET /api/history/sessions`
- `GET /api/history/sessions/<session_id>`
- `GET /api/detection/data/details?ids=<id1,id2,...>`
- 删除操作
- `DELETE /api/detection/data/<data_id[,data_id2,...]>`
- `DELETE /api/detection/video/<video_id[,video_id2,...]>`
- `DELETE /api/detection/sessions/<session_id>`
## 统一响应约定
- 成功:`{ "success": true, ... }`
- 失败:`{ "success": false, "error": "错误信息" }`
- 时间字段统一使用 ISO 文本或 `YYYY-MM-DD HH:mm:ss` 字符串。
## 基础与授权
### GET /health | GET /api/health
- 功能:健康检查与服务存活状态。
- 示例响应:
```json
{ "status": "healthy", "timestamp": "2024-01-01T12:00:00", "version": "1.0.0" }
```
### GET /api/license/info
- 功能:获取授权状态与基础信息。
- 响应字段:`valid`, `message`, `license_type`, `license_id`, `expires_at`, `features`, `machine_id`
### POST /api/license/activation-request
- 功能:生成离线激活请求文件。
- Body`{ "company_name": "公司名", "contact_info": "联系方式" }`
- 返回:`request_file` 路径与 `content` 文本。
### POST /api/license/verify
- 功能:上传并验证授权文件。
- Form-Data`license_file`(文件)。
- 返回:授权验证结果与解析出的授权信息。
### POST /api/license/activate-package
- 功能:上传激活包进行离线激活。
- 细节见服务端实现,返回激活状态与信息。
## 认证与用户
### POST /api/auth/login
- 功能:用户登录。
- Body`{ "username": "string", "password": "string" }`
### POST /api/auth/register
- 功能:用户注册。
- Body包含用户名、密码、手机号等注册信息。
### POST /api/auth/logout
- 功能:登出当前会话。
### GET /api/auth/verify
- 功能:登录状态校验。
### POST /api/auth/forgot-password
- 功能:忘记密码,根据用户名和手机号找回。
- Body`{ "username": "string", "phone": "string" }`
### GET /api/users
- 功能:获取用户列表。
- Query 可选:分页参数。
### POST /api/users/<user_id>/approve
- 功能:批准用户,使其 `is_active = 1`
- Body 可选:`{ "approved_by": 123 }`
### DELETE /api/users/<user_id>
- 功能:删除用户。
## 患者管理
### GET /api/patients
- 功能:获取患者列表。
- Query 可选:分页筛选。
### POST /api/patients
- 功能:创建新患者。
- Body患者基本信息字段姓名、性别、出生日期等
- 必填字段:`name`(姓名)、`gender`(性别)、`birth_date`(出生日期)
- 可选字段:`phone`(电话)、`email`(邮箱)、`height`(身高)、`weight`(体重)、`nationality`(民族)、`residence`(居住地)、`occupation`(职业)、`workplace`(工作单位)、`idcode`(身份证号)、`medical_history`(病史)、`notes`(备注)
### GET|PUT|DELETE /api/patients/<patient_id>
- 功能:获取/更新/删除单个患者。
- PUT Body患者基本信息字段姓名、性别、出生日期、联系方式等
## 设备与配置
### GET /api/devices/status
- 功能:获取各设备连接与工作状态。
### POST /api/devices/refresh
- 功能:刷新设备状态(重扫/重连)。
### GET /api/config/devices
- 功能:获取当前设备配置。
### POST /api/config/devices/all
- 功能:批量设置设备配置。
- Body设备配置对象集合。
### POST /api/devices/calibrate
- 功能:触发设备标定(通用)。
### POST /api/devices/calibrate/imu
- 功能:仅触发 IMU 设备标定。
## 检测流程
### POST /api/detection/start
- 功能:创建检测会话并启动设备连接监控。
- Body`{ "patient_id": "string", "creator_id": "string" }`
- 返回:`session_id`。
### GET /api/detection/<session_id>/has_data
- 功能:会话是否存在检测数据,用于判断单次检测是否有效。
- 返回:`{ "has_data": true|false }`
### GET /api/detection/<session_id>/status
- 功能:获取会话最新状态与聚合数据(源自 `get_session_data`)。
### POST /api/detection/<session_id>/stop
- 功能:结束检测并写入总结信息(自动计算时长与结束时间)。
- Body 可选:
```json
{
"diagnosis_info": "string",
"treatment_info": "string",
"remark_info": "string"
}
```
- 说明:服务端已统一走 `update_session_endcheck` 数据库流程。
### POST /api/detection/<session_id>/start_record
- 功能:开始同步录制(屏幕/相机/设备流)。
- Body 示例:
```json
{
"patient_id": "p001",
"screen_location": [0,0,1920,1080],
"femtobolt_location": [0,0,640,480],
"camera1_location": [0,0,640,480],
"camera2_location": [0,0,640,480]
}
```
- 返回:`recording` 含 `database_updates.video_paths`;服务端会自动调用 `save_detection_video` 记录视频路径(`screen_video_path`, `femtobolt_video_path`, `camera1_video_path`, `camera2_video_path`)。
### POST /api/detection/<session_id>/stop_record
- 功能:停止同步录制。
### POST /api/detection/<session_id>/save-data
- 功能:采集检测数据与截图并持久化。
- Body检测数据载荷结构由实际采集模块决定
- 返回:`timestamp` 与是否采集成功。
### POST /api/detection/<session_id>/save-info
- 功能:保存会话信息(诊断、处理、建议、状态)。
- Body
```json
{
"diagnosis_info": "string",
"treatment_info": "string",
"remark_info": "string",
"status": "completed|running|..."
}
```
## 历史与数据查询
### GET /api/history/sessions
- 功能:分页获取检测会话历史。
- Query`page`(默认 1、`size`(默认 10、`patient_id`(可选)。
- 返回:`sessions` 与 `total`
### GET /api/history/sessions/<session_id>
- 功能:获取会话详细数据(聚合会话、检测数据、视频)。
### GET /api/detection/data/details?ids=<id1,id2,...>
- 功能:根据多个逗号分隔的 ID 批量获取检测数据详情。
- Query`ids` 逗号分隔字符串。
## 删除操作
### DELETE /api/detection/data/<data_id[,data_id2,...]>
- 功能:删除检测数据记录,支持多个 ID 逗号分隔。
- 返回:`deleted_ids` 列表。
### DELETE /api/detection/video/<video_id[,video_id2,...]>
- 功能:删除检测视频记录,支持多个 ID 逗号分隔。
- 返回:`deleted_ids` 列表。
### DELETE /api/detection/sessions/<session_id>
- 功能:删除检测会话,同时清理关联的检测数据与视频记录。
## 错误码与常见失败
- 400缺少必要参数或请求体格式错误。
- 403授权校验失败或未授权功能。
- 404会话或资源不存在。
- 500服务内部错误设备不可用、数据库失败等
## 典型调用序列(示例)
1. 创建会话:`POST /api/detection/start`
2. 开始录制:`POST /api/detection/<session_id>/start_record`
3. 采集数据:多次 `POST /api/detection/<session_id>/save-data`
4. 停止录制:`POST /api/detection/<session_id>/stop_record`
5. 保存诊断建议:`POST /api/detection/<session_id>/save-info`
6. 结束检测:`POST /api/detection/<session_id>/stop`
7. 校验有效性:`GET /api/detection/<session_id>/has_data`
8. 查询历史:`GET /api/history/sessions`
9. 查看详情:`GET /api/history/sessions/<session_id>`
> 注:具体字段与数据结构以采集模块与数据库模型为准,本文档以主干流程为纲要,建议结合实际返回进行前端适配与校验。