交付包补充解压内容双存档:README/截图x12/录屏/文档,更新登记与.gitignore放行mp4

This commit is contained in:
yi
2026-10-13 13:47:00 +08:00
parent 85219b8ee3
commit d5ff06d723
34 changed files with 524 additions and 22 deletions
@@ -0,0 +1,68 @@
# 环境依赖清单
项目:智慧停车综合管理平台(Smart Parking Platform)
版本日期:2026-10-10
## 1. 基础运行环境
| 组件 | 版本要求 | 用途 | 备注 |
| --- | --- | --- | --- |
| Docker Engine | 20.10+ | 容器运行时 | Linux 官方源 / Windows Docker Desktop |
| Docker Compose | v2.0+ | 多容器编排 | `docker compose` 子命令形式 |
| 操作系统 | Linux(内核 4.x+)/ Windows 10+ / macOS | 宿主机 | 生产推荐 Linux |
| 浏览器 | Chrome / Edge / Firefox 最新版 | 前端访问 | 需支持 HLS、ES2020 |
## 2. 容器化组件(由 docker-compose 自动拉取/构建,无需手动安装)
| 组件 | 版本 | 用途 | 默认宿主端口 |
| --- | --- | --- | --- |
| 前端(Umi4 静态资源) | 随构建 | Web 界面 | 4010 → 容器 80 |
| 后端(NestJS) | Node 运行时 | REST API + WebSocket | 同 4010(Nginx 反代) |
| MySQL | 8.0 | 业务数据库 | 4012 → 3306 |
| Nginx-RTMP / FFmpeg | - | RTMP 收流、HLS 分发 | 4015 → 1935 |
## 3. 本地开发依赖(非 Docker 手动部署时)
### 3.1 前端
- Node.js 16+(建议 18 LTS)
- 包管理器:npm / pnpm(注意 lockfile 版本匹配;如 pnpm 与 lockfile 冲突可直接使用本地 `node_modules/.bin/umi`)
- 关键依赖:Umi 4、React 18、Ant Design 5、Leaflet、hls.js
### 3.2 后端
- Node.js 16+(建议 18 LTS)
- 关键依赖:NestJS、TypeScript、MySQL 驱动、JWT、WebSocket(ws)
- 外部服务:可连接的 MySQL 8.0 实例
### 3.3 监控算法端(ai-end)
- Python 3.9+
- 关键依赖:Ultralytics YOLO、OpenCV、FFmpeg(系统二进制)、WebSocket 客户端
- 模型文件:`yolov8n.pt`(项目内已附带轻量版,可按需更换)
- 可选:NVIDIA GPU + CUDA 以加速推理
## 4. 网络与端口
| 端口 | 协议 | 方向 | 说明 |
| --- | --- | --- | --- |
| 4010(可配置) | TCP/HTTP | 入站 | Web 访问、API、HLS |
| 4012(可配置) | TCP | 内部 | MySQL,建议不对公网开放 |
| 4015(可配置) | TCP | 入站 | RTMP 推流 |
| 摄像头源端口 | TCP/UDP | 出站 | 访问摄像头 RTSP/RTMP 源 |
## 5. AI 对话可选依赖
- [TokenFree](https://www.tokenfree.com/) 账号及 API Key(`sk-` 开头)
- 默认接口地址:`https://www.tokenfree.com/v1`
- 默认模型:`kimi-k2.6`
- 浏览器需能访问该接口地址(出网)
## 6. 默认账号(来源:backend/src/database-seeder.ts)
| 角色 | 账号 | 密码 |
| --- | --- | --- |
| 管理员 | admin | admin123 |
| 操作员 | operator | 123456 |
> 交付上线前务必修改默认密码,并限制数据库端口暴露。
@@ -0,0 +1,65 @@
# 部署注意事项
项目:智慧停车综合管理平台
更新日期:2026-10-10
## 一、部署前检查
1. **Docker 可用性**:执行 `docker --version` 与 `docker compose version` 确认版本满足 20.10+ / Compose v2+;Linux 确保服务已启动(`systemctl status docker`)。
2. **端口占用**:启动前确认 `4010 / 4012 / 4015`(或自定义端口)未被占用:
- Windows:`netstat -ano | findstr :4010`
- Linux:`ss -lntp | grep -E '4010|4012|4015'`
3. **磁盘空间**:预留至少 10 GB 可用空间(镜像 + 数据卷 + 录屏/地图素材)。
4. **防火墙/安全组**:放通应用端口(4010)与 RTMP(4015);**数据库端口 4012 不要对公网开放**。
5. **时间同步**:生产服务器开启 NTP 时间同步,避免 JWT 与报警时间异常。
## 二、部署中注意事项
1. **环境变量**:复制 `.env.example` 为 `.env`,至少修改 MySQL root 口令;不要把含真实口令的 `.env` 提交到公共仓库(`.env` 已加入 `.gitignore`)。
2. **首次启动**:`docker compose up -d` 会构建镜像、初始化数据库并导入示例数据,耗时取决于网络与机器性能,请勿中断。
3. **健康判断**:使用 `docker compose ps`,应用容器状态为 `healthy` 后再访问;如长时间 `unhealthy`,用 `docker compose logs --tail=200 app` 排查。
4. **数据卷**:数据库数据保存在持久化数据卷中;执行 `docker compose down` 不删数据,**加 `-v` 参数会删除数据卷导致数据丢失,务必谨慎**。
## 三、混合内容 / HTTPS
1. 若前端通过 HTTPS 访问,页面内的 HLS 视频与 AI 接口也需为 HTTPS,否则浏览器会拦截混合内容。
2. TokenFree 接口本身为 HTTPS;自建/第三方媒体地址需保证与页面协议一致,或在反向代理统一 TLS 卸载。
3. 建议在 Nginx/网关层统一配置证书(如 Let's Encrypt)并反代应用与媒体服务。
## 四、直播与算法端
1. 摄像头 RTSP/RTMP 源必须从部署主机可达;建议先用 `ffmpeg -i <源地址>` 验证源流正常。
2. 算法端与后端通过 WebSocket 通信,需保证二者网络互通、管理员账号配置正确。
3. 多路视频或高分辨率场景建议算法端独立部署并使用 GPU;CPU 推理路数过多会导致卡顿与漏报。
4. RTMP/HLS 直播存在数秒延迟属正常(HLS 分片机制);如需更低延迟可调整分片时长或改用 WebRTC 方案(另行定制)。
## 五、浏览器兼容性
1. 推荐使用最新版 Chrome / Edge;平台依赖 ES2020、HLS、CSS backdrop-filter。
2. 部分老旧浏览器不支持玻璃模糊效果,会降级为半透明背景,不影响功能。
3. AI Key 等配置存于浏览器 localStorage,更换浏览器/清理缓存后需要重新配置。
## 六、升级与回滚
1. **升级**:备份数据卷 → 拉取/构建新镜像 → `docker compose up -d`;数据库结构如有变更需按迁移说明执行。
2. **回滚**:保留上一版本镜像 tag,异常时通过指定旧镜像 tag 重新启动;恢复升级前的数据卷备份。
3. 建议交付/升级前导出数据库备份:
`docker compose exec mysql mysqldump -uroot -p<口令> <数据库名> > backup.sql`
## 七、安全加固建议
1. 首次登录立即修改 admin/operator 默认密码。
2. 为数据库设置强口令并仅监听内网;生产环境关闭不必要的端口暴露。
3. 反向代理层开启访问日志、限流与超时配置;对外服务启用 HTTPS。
4. 定期更新 Docker、基础镜像与操作系统补丁。
## 八、常见问题速查
| 现象 | 排查方向 |
| --- | --- |
| 页面打不开 | 应用容器是否 healthy、端口/防火墙是否放通 |
| 登录失败 | 数据库是否初始化完成、账号是否被修改、时间是否同步 |
| 视频黑屏 | 摄像头源是否可达、RTMP 端口、混合内容策略、HLS 分片是否生成 |
| AI 无响应 | API Key 是否正确、接口地址是否可达、模型名是否被服务商支持 |
| 报警不触发 | 算法端是否在线、规则是否启用、检测目标/阈值是否合理 |
| 容器反复重启 | `docker compose logs app` 查看依赖(DB 未就绪/口令错误/端口冲突) |