医疗设备远程服务管理平台 · API 接口文档
注册新用户,成功返回 JWT Token。
{
"username": "engineer01",
"password": "pass123",
"role": "engineer",
"name": "张工"
}
role: admin | manufacturer | engineer | hospital
Response 201:
{
"access_token": "eyJhbG...",
"user": {
"id": "uuid",
"username": "engineer01",
"role": "engineer",
"name": "张工"
}
}
用户登录,返回 JWT Token。Token 有效期 7 天。
{
"username": "admin",
"password": "admin123"
}
Response 200 / 401
获取当前登录用户信息。
Headers: Authorization: Bearer <token>
{
"id": "uuid",
"username": "admin",
"role": "admin",
"name": "Andrew",
"email": null,
"phone": null,
"company": null,
"active": true,
"createdAt": "2026-08-06T..."
}
获取所有用户列表。
获取单个用户详情。
创建新用户。注意:密码不会经过 bcrypt 哈希(直接调用 UsersService),建议通过 /api/auth/register 创建。
更新用户信息。
删除用户。
获取所有设备列表。
注册新设备。
{
"name": "非接触式眼压计",
"model": "TX-20",
"category": "眼科-眼压计",
"manufacturerId": "uuid",
"serialNumber": "SN-2026-001",
"status": "active"
}
获取工单列表。可选 ?status=xxx 过滤。
{
"title": "眼压计校准故障",
"description": "设备显示E02错误代码...",
"deviceCategory": "眼科-眼压计",
"deviceModel": "TX-20",
"manufacturerId": "uuid",
"engineerId": "uuid",
"priority": "medium",
"status": "pending"
}
status: pending → accepted → in_progress → completed | cancelled
priority: low | medium | high | urgent
{
"orderId": "uuid",
"manufacturerUserId": "uuid",
"engineerUserId": "uuid",
"trtcRoomId": "room-123",
"notes": "眼压计主板故障排查"
}
生成 TRTC UserSig,用于客户端进入音视频房间。
{
"userId": "engineer-01"
}
{
"sdkAppId": 1600155894,
"userId": "engineer-01",
"userSig": "eJwt..."
}
SDKAppID: 1600155894,UserSig 有效期默认 7 天。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| username | string | 唯一,登录名 |
| password | string | bcrypt 哈希,API 不返回 |
| role | enum | admin/manufacturer/engineer/hospital |
| name | string? | 真实姓名 |
| company | string? | 公司/医院名称 |
| phone | string? | 手机号 |
| string? | 邮箱 | |
| active | boolean | 账号是否启用 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| name | string | 设备名称 |
| model | string | 设备型号 |
| category | string | 设备类别(如"眼科-眼压计") |
| manufacturerId | string | 生产厂商用户ID |
| hospitalId | string? | 医院用户ID |
| serialNumber | string? | 设备序列号 |
| installDate | Date? | 安装日期 |
| warrantyExpiry | Date? | 保修到期日 |
| status | string | active/inactive |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| title | string | 工单标题 |
| description | text? | 问题描述 |
| deviceCategory | string | 设备类别 |
| deviceModel | string? | 设备型号 |
| manufacturerId | string | 厂商ID |
| engineerId | string? | 指派工程师ID |
| hospitalId | string? | 医院ID |
| status | enum | pending/accepted/in_progress/completed/cancelled |
| priority | string? | low/medium/high/urgent |
| scheduledAt | Date? | 计划服务时间 |
| completedAt | Date? | 完成时间 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| orderId | string | 关联工单ID |
| manufacturerUserId | string | 厂商用户ID |
| engineerUserId | string | 工程师用户ID |
| trtcRoomId | string? | TRTC 房间号 |
| recording | boolean | 是否录像 |
| notes | text? | 会话备注 |
| startedAt | Date? | 开始时间 |
| endedAt | Date? | 结束时间 |
| durationSeconds | number | 通话时长(秒) |
401 Unauthorized。401,前端自动跳转登录页。400 Bad Request,body 包含 { "message": "..." }。
| 项目 | 值 |
|---|---|
| 服务器 | Alibaba Cloud ECS 47.253.228.219 |
| Web 服务 | Nginx 1.24.0 |
| 后端 | NestJS + TypeORM + sql.js (SQLite) |
| 进程管理 | PM2 (medservlink-backend) |
| HTTPS | Let's Encrypt (www.medservlink.cn) |
| TRTC SDKAppID | 1600155894 |
| 源码位置 | /opt/medservlink/backend/ |
| 构建命令 | cd /opt/medservlink/backend && npm run build && pm2 restart medservlink-backend --update-env |
| 日志位置 | ~/.pm2/logs/medservlink-backend-*.log |
| 数据库 | /opt/medservlink/data/medservlink.db |