Files
managed-portal/README.md
2026-04-27 10:08:36 +08:00

3.1 KiB
Raw Blame History

Managed Portal 管理端

managed-portal 是从原 video_recognition_local 项目中拆出的独立管理端,负责管理“被管理服务”和“网页设备”两类能力。它不依赖原 3000 端口主项目运行,默认以前端 13000 端口对外提供入口,后端默认监听 9080

功能范围

  • 被管理服务查看服务列表、服务详情、容器状态、RTSP 配置、重启容器、结果摘要、结果文件预览和下载
  • 网页设备:扫描本机所在网段的 80 端口网页设备,生成代理访问地址和直连转发地址
  • 子服务源码:已内置 store_dwell_alertpeople_flow_project 两个子项目源码

目录结构

managed-portal/
├── cmd/managed-portal/        # Go 后端入口
├── internal/                  # Go 后端模块
├── web/                       # Vue3 + Element Plus 前端
├── managed/                   # 被管理子服务源码
│   ├── store_dwell_alert/
│   └── people_flow_project/
├── deploy/                    # Docker Compose 部署文件
├── managed_services.yaml      # 被管理服务注册表
└── Dockerfile                 # 门户后端镜像

默认端口

  • 门户后端:9080
  • 门户前端:13000
  • store-dwell-alert 子服务 API18081
  • people-flow-project 子服务 API18082

后端端口可通过环境变量覆盖:

MANAGED_PORTAL_HTTP_ADDR=:9080

本机开发

后端:

go test ./...
go run ./cmd/managed-portal

前端:

cd web
pnpm install
pnpm dev
pnpm build

本机开发时,前端默认会把 /api/proxy 代理到 http://localhost:9080。如果后端用其他端口启动,可以覆盖:

VITE_API_PROXY_TARGET=http://127.0.0.1:9080 pnpm dev --host 127.0.0.1 --port 13000

Docker 部署

完整独立栈包含四个服务:

  • managed-portal
  • managed-portal-web
  • store-dwell-alert
  • people-flow-project

启动:

cd deploy
docker compose --env-file managed-portal.env up -d --build

访问:

http://<服务器IP>:13000/

模型权重

子服务镜像构建前需要以下权重文件:

  • managed/store_dwell_alert/weights/yolo11n.pt
  • managed/people_flow_project/weights/yolo11n.pt
  • managed/people_flow_project/weights/deepface/age_model_weights.h5
  • managed/people_flow_project/weights/deepface/gender_model_weights.h5
  • managed/people_flow_project/weights/deepface/retinaface.h5

这些权重文件体积较大,默认被子项目 .gitignore 忽略,不会随 Git 提交上传。部署机器上需要提前放到对应路径或通过制品仓库、对象存储、Git LFS 等方式分发。

被管理服务注册表

managed_services.yaml 描述门户要管理的子服务。Docker Compose 部署时,默认通过容器 DNS 访问:

api_base_url: http://store-dwell-alert:18081
api_base_url: http://people-flow-project:18082

如果改成本机进程方式运行子服务,可以把地址调整为 http://127.0.0.1:18081http://127.0.0.1:18082