统一 Docker Compose 部署,并将客户端拆分为独立子项目。

移除宿主机/conda 启动脚本与 dev 联调工具,后端仅通过 docker compose 部署并默认启用 GPU。模拟客户端与语音确认页迁入 clients/ 下自包含目录,切断对后端源码路径的依赖。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin
2026-05-21 15:56:53 +08:00
parent c869fcc6b9
commit 6bc6801df9
38 changed files with 478 additions and 1702 deletions

View File

@@ -8,7 +8,7 @@
| **开始手术** | `POST /client/surgeries/start`,只有在开录确认成功后才返回 `200`。 |
| **结束手术** | `POST /client/surgeries/end`,只有在停录确认成功后才返回 `200`。 |
| **查询结果** | `GET /client/surgeries/{surgery_id}/result`,至少存在一条消耗明细时返回 `200`;否则返回 `503`,常见错误码为 `RESULT_NOT_READY`。 |
| **待确认播报** | **官方浏览器客户端**(仓库 `voice-confirmation-web/`,可独立部署):同一 WebSocket 上推送 `voice_pending`(载荷与 `GET .../pending-confirmation` 成功体一致,另含 `type`);无队首时 `voice_pending_empty`**不轮询 GET**。**第三方**仍可用 `GET .../pending-confirmation` 拉取队首。 |
| **待确认播报** | **官方浏览器客户端**(仓库 `clients/voice-confirmation/`,可独立部署):同一 WebSocket 上推送 `voice_pending`(载荷与 `GET .../pending-confirmation` 成功体一致,另含 `type`);无队首时 `voice_pending_empty`**不轮询 GET**。**第三方**仍可用 `GET .../pending-confirmation` 拉取队首。 |
| **待确认答复** | `POST /client/surgeries/{surgery_id}/pending-confirmation/{confirmation_id}/resolve`,上传医生答复的 WAV 录音,服务端完成 ASR 后入账或关闭。该录音与播报音频无关。 |
## 1. 服务与基础信息
@@ -21,7 +21,7 @@
| **`start` / `end` 请求体** | JSON |
| **`resolve` 请求体** | `multipart/form-data`,字段名为 `audio` |
| **在线文档** | `/docs``/redoc` |
| **语音确认官方页面** | 仓库 `voice-confirmation-web/`(静态资源,与 API 分宿;需为浏览器配置 CORS见该目录 `README.md` |
| **语音确认官方页面** | 仓库 `clients/voice-confirmation/`(静态资源,与 API 分宿;需为浏览器配置 CORS见该目录 `README.md` |
局域网部署时API 应监听或发布到可被语音终端访问的地址(例如 `0.0.0.0:38080` 发布为 `http://192.168.1.100:38080`)。语音确认页面的 **服务端 Base URL** 必须填写该 API 根地址;浏览器端会用同一主机和端口生成 WebSocket 地址:`ws://192.168.1.100:38080/client/voice-terminals/ws?terminal_id=...`。如果语音页与 API 不同源,需配置 CORS 放行语音页来源。
@@ -49,7 +49,7 @@ RTSP 地址、账号、口令等由客户端对接工程师提供给服务端运
| 5 | `GET` | `/client/surgeries/{surgery_id}/pending-confirmation` | 拉取待确认耗材 |
| 6 | `POST` | `/client/surgeries/{surgery_id}/pending-confirmation/{confirmation_id}/resolve` | 提交医生答复 |
| 7 | `GET` | `/client/voice-terminals/{terminal_id}/assignment` | 可选:查询当前指派(调试或简易集成;**官方浏览器客户端仅用 WebSocket** |
| 8 | `WS` | `/client/voice-terminals/ws?terminal_id=...` | 语音终端长连接,接收开录/停录指派(**推荐**;与 `voice-confirmation-web` 共用) |
| 8 | `WS` | `/client/voice-terminals/ws?terminal_id=...` | 语音终端长连接,接收开录/停录指派(**推荐**;与 `clients/voice-confirmation` 共用) |
| | | | |
**术间与语音终端绑定(服务端配置)**
@@ -448,7 +448,7 @@ curl -sS -X POST \
**路径** `GET /client/voice-terminals/{terminal_id}/assignment`
仓库内 **手术室耗材语音确认浏览器客户端**`voice-confirmation-web/`)仅通过 **§5.8 WebSocket** 接收指派,**不调用**本接口。此处供运维脚本、未实现 WS 的第三方临时拉取 `active_surgery_id`
仓库内 **手术室耗材语音确认浏览器客户端**`clients/voice-confirmation/`)仅通过 **§5.8 WebSocket** 接收指派,**不调用**本接口。此处供运维脚本、未实现 WS 的第三方临时拉取 `active_surgery_id`
**响应 200**