Files
yovision/docs/delivery/deployment-and-operations.md
T

95 lines
5.8 KiB
Markdown

<!-- gitea-wiki-mirror:start -->
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Deployment-and-Operations
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Deployment-and-Operations.-
wiki_revision: 95965345e43d7fc403486c8afaecf36d79b757d0
synchronized_at: 2026-08-28T03:53:21Z
<!-- gitea-wiki-mirror:end -->
# YoVision 部署与运维
## 文档信息
- 系统:YoVision
- 当前常驻实例:Sense
- 适用环境:Windows 本机开发/验收与 Sense Windows 交付包
- 维护入口:工单 #108 后由长期 Wiki 持续维护
- 安全边界:本文不记录数据库密码、管理员密码、摄像头凭据、JWT/会话密钥或 Gitea token
## 部署范围与边界
当前可核对的常驻服务是 Sense。Brain 尚未初始化,Bell 新 GoAdmin 基线尚未完成,因此不在本页提供虚构的生产部署命令。三个交付单元保持独立配置、数据、身份、版本和发布边界;跨项目编排必须另建协调工单。
## 目录与入口
- Sense 项目目录启动入口:`Sense\start_sense.bat`
- Windows 交付包:`Sense\dist\sense-windows-amd64`
- 包内启动入口:`Sense\dist\sense-windows-amd64\start-sense.bat`
- 包内配置:`Sense\dist\sense-windows-amd64\config\sense.env`
- 项目配置源:`Sense\config\sense.env`
- 构建入口:`Sense\scripts\build\build-windows.bat`
- 本机 Supervisor 根目录:`D:\supervisor`
`Sense\start_sense.bat` 只定位并调用交付包入口、透传参数和退出码;它不读取配置、不自动构建,也不直接启动 Go 或 Node 开发服务。MediaMTX 是否随包启动由 Sense 包内运行脚本和配置控制。
## 配置与秘密
- 生产模式必须提供有效 PostgreSQL 连接和应用安全配置;变量名及无敏感示例以项目或交付包中的 `.env.example` 为准。
- 配置文件和进程环境中的秘密不得提交到 Git、工单、Wiki、日志或示例。
- Sense、Bell 必须使用不同数据库角色、用户库、JWT/会话密钥和 Cookie;Brain 使用独立机器身份。
- 修改服务账号、权限、端口、数据库、媒体二进制或持久化目录前必须建立相应工单并说明回退。
## 构建与启动
从 Sense 目录生成 Windows 包:
```powershell
Sense\scripts\build\build-windows.bat
```
生成包并正确配置后,可从仓库根运行:
```powershell
Sense\start_sense.bat
```
临时演示模式可透传 `demo` 参数;演示数据随进程停止而丢失,不得作为生产部署。
## Supervisor 常驻实例
本机 Supervisor 的 YoVision Sense 实例由工单 #106 建立。Supervisor 配置、启动停止命令、工作目录、环境文件和日志位置以 `D:\supervisor` 中的当前实例配置为准。修改该外部目录前必须建立工单并确认精确目标;仓库不得复制其中的秘密。
## 健康检查与日志
- 默认 Sense 访问地址以当前配置为准;已验收的本机默认地址为 `http://127.0.0.1:18080/`。
- 先确认端口监听和 HTTP 页面,再检查 Sense 结构化日志、PostgreSQL 连接、数据库迁移以及 MediaMTX 进程和路径状态。
- 日志不得输出数据库密码、摄像头凭据、会话 Cookie、JWT secret 或 token。
- 具体视频、迁移和登录故障按 `Troubleshooting` 页面处理。
## 停止、升级与回退
- 手工前台启动时在原控制台正常终止进程;Supervisor 托管时使用该实例的受控停止方式,避免同时启动第二个占用相同端口的进程。
- 升级前记录当前 Git 提交、交付包版本、数据库备份/恢复方案和配置差异。
- 数据库迁移、凭据、权限或不可逆操作属于高风险,必须另建工单并等待确认。
- 回退优先恢复上一已验收交付包和对应配置;涉及数据库迁移时只能使用该迁移工单确认的回退方案。
## 最小验收
- 启动入口、工作目录、配置来源和端口与实际一致。
- Sense 页面与必要 API 可访问,数据库迁移成功。
- MediaMTX 启用时进程、路径和播放链路状态可定位。
- Supervisor 不会与手工进程重复占用端口。
- 日志和文档没有秘密;未验证的 Brain、Bell、真机或生产行为明确标注。
<!-- sense-provisioning:start -->
## Sense 批量开通与容量配额配置排错
数据库迁移 `2026082812000_quota.go` 首次创建统一配额配置:读取当次迁移进程的可选 `SENSE_PROVISIONING_QUOTA` 正整数作为初值,未设置或无效时使用 16。迁移完成后,运行期配额以 PostgreSQL `sense_quota_settings` 为事实源,并由“容量与配额”页面受控调整;后续修改环境变量不会覆盖数据库值。每个批量开通批次仍记录创建时的配额与占用快照。
升级后看不到“容量与配额”时,确认迁移成功并重新登录刷新动态菜单。implementation_operator、site_admin、viewer 可读取容量;只有 site_admin 可调整配额和重新启用设备。调整必须填写原因。降低配额不会停止已有流;当占用达到或超过配额时,新增和启用返回冲突。
页面显示“配额配置不可读取”时,先确认 `sense_quota_settings` 的 ID 1 记录存在、limit 为 1–100000 的整数且数据库可读;不要通过手工插入设备绕过安全闸。配置不可读时已有流和查询应继续,新设备、重新启用和批量开通写入会返回服务不可用。32/64/128 的“未验证”状态不能作为容量承诺。
批量导入被拒绝时还应检查模板只含 line_number/name/location/address,地址必须为不带账号、查询参数或片段的 HTTP(S) ONVIF 地址。条目失败时按页面原因检查网络、获准网段、凭据和接入状态;仅重试失败项,不删除已成功设备。日志、导出和问题记录不得粘贴摄像头凭据。
<!-- sense-provisioning:end -->