1566477b97
- config.js 增 getVisionApiBase(),优先绑定下发的本园区 vision_api(经 tenant info) - main.jsx bootstrap 读 /park/api/config 的 vision_api - useVisionDetection 帧 POST 到独立 vision 服务;未配置识别整体禁用 - BindScreen 连接码轮询(无码5s/有码30min) + 渲染二维码(qrcode.react)、绑定后入园区 - 部署文档补 vision_api/识别服务说明
4.3 KiB
4.3 KiB
Windows 打包部署指南(免重打包改地址)
一、打包后在 exe 同目录放置 config.json(推荐)
打包安装后,在 exe 所在目录(如 C:\Program Files\云超服昆创园OPC运营中心\)新建 config.json,
改地址不需要重新打包,重启应用即生效:
{
"api_base": "http://192.168.1.9:8090/park",
"mqtt_url": "ws://192.168.1.3:8083/mqtt",
"mqtt_username": "dpm",
"mqtt_password": "123456",
"voice_url": "ws://192.168.1.3:8765/v1/realtime",
"vision_api": "http://192.168.1.9:8091"
}
api_base:server-core 统一入口园区地址(http://<IP>:8090/park;生产https://opc.pinesound.cn/park),大屏 API/媒体/OTA 都走它mqtt_url:EMQX Broker 的 WebSocket 地址(端口 8083)mqtt_username/password:Broker 鉴权账号(默认 dpm / 123456,与后端 .env 一致)vision_api:可选。视频识别独立服务(code/park-vision,http://<IP>:8091)。不填=视频识别禁用(摄像头不开启)。也可经 server-core/park/api/config下发(见「三、视频识别」)。
地址解析优先级:config.json > 后端 /api/config > 构建默认(192.168.1.9)。
二、后端 /api/config 方式(同机部署自动生效)
后端 .env(backend/.env)配置 Broker 后,展播端启动时自动从
GET /api/config 获取 MQTT 地址,无需 config.json:
DPM_MQTT_HOST=192.168.1.3
DPM_MQTT_PORT=1883
DPM_MQTT_WS=ws://192.168.1.3:8083/mqtt # 展播端可访问的 WebSocket 地址
DPM_VOICE_WS=ws://192.168.1.3:8765/v1/realtime # s2s 语音 WS(可选,默认按主机推导)
MQTT_USERNAME=dpmserver
MQTT_PASSWORD=你的密码
若后端与 Broker 同机:后端默认
MQTT_WS_URL=ws://localhost:8083/mqtt即可, 展播端连192.168.1.9也通;跨机必须显式配置上面的 IP。
三、构建期固定地址(不推荐,需重新打包)
在项目根目录(构建机器上)配置 .env.local(已被 gitignore):
VITE_API_BASE=http://192.168.1.9:8090/park
VITE_MQTT_URL=ws://192.168.1.3:8083/mqtt
VITE_MQTT_USERNAME=dpm
VITE_MQTT_PASSWORD=123456
然后 yarn build:win(脚本自动清理旧 exe 进程再打包)。
四、打包前必须确认
| 检查项 | 说明 |
|---|---|
| exe 未被运行 | taskkill /f /im "昆明大学生创业园展播系统.exe",或直接用 yarn build:win |
| 后端已启动 | 浏览器打开 http://<后端IP>:8090/park/api/health 应返回 {"ok":true,...} |
| Broker WebSocket 已开 | EMQX 需开启 8083 端口 WS 监听,且账号密码与 config.json 一致 |
| Windows 防火墙 | 首次运行允许,或放行出站 8090/8083(大屏经 8090 调 server-core) |
五、常见排查
# 测试后端连通(展播机 PowerShell)
Invoke-WebRequest http://192.168.1.9:8090/park/api/health
# 测试 Broker WS 端口
Test-NetConnection 192.168.1.3 -Port 8083
# 看前端启动日志(bootstrap 会打印 MQTT 地址来源)
打开应用后按 F12(WebView2 开发者工具)→ Console
- 应用日志打印
[bootstrap] config.json MQTT -> ...= config.json 生效 - 打印
[bootstrap] /api/config MQTT -> ...= 后端下发 - 两者都没有 = 两个来源都不可达,请检查 IP/防火墙
三、视频识别(可选,独立 park-vision 服务)
视频识别能力已从 server-core 剥离为独立项目 code/park-vision(YOLO 帧识别 + LLM 场景语义),
server-core /park 不再承接识别请求(/park/api/vision/frame|llm 已移除,仅保留遥测 /api/vision/event)。
配置方式(二选一),未配置则视频识别整体禁用(摄像头不开启、页面显示「手势识别未启用」):
- config.json(部署机):
"vision_api": "http://<IP>:8091" - server-core 全局(admin 端):运营端「视频识别服务」页启用+填地址 → 写
park_settings→ 大屏启动时从GET /park/api/config取vision_api(enabled=1 才下发)
部署完整识别链路:
# 独立识别服务(需 torch/ultralytics + 模型 yolov8n-face.pt / yolov8n-pose.pt 置于 models/)
cd code/park-vision && uv sync && uv run uvicorn app.main:app --host 0.0.0.0 --port 8091
# 放模型后再启动;缺模型时 /vision/frame 返回「模型未加载」