AI_Watch_Platform

liuq 9513551e6e 手机版本 hace 2 semanas
backend d223858992 统一登录 hace 3 meses
frontend 9513551e6e 手机版本 hace 2 semanas
.dockerignore ca0931f509 更新 hace 3 meses
.gitignore ca0931f509 更新 hace 3 meses
AI 值班 Web 平台 - 详细需求规格说明书 (PRD).md 86914f903c 首次更新 hace 3 meses
CHANGELOG.md e8eef8fa5e 1 hace 3 meses
Dockerfile ca0931f509 更新 hace 3 meses
README.md 9a03862d82 新增信息 hace 3 meses
Simple_Auth_Guide.md a53da795c4 添加用户管理和统一登录 hace 3 meses
docker-compose.wsl.yml 90a38858b9 新增任务、模型 导出导出功能。新增wsl docker 配置 hace 3 meses
docker-compose.yml 402777588f 更新 hace 3 meses
run.py 86914f903c 首次更新 hace 3 meses

README.md

AI 值班 Web 平台 (AI Watch Platform)

基于 AI 的智能化视频监控与自动值班系统。该平台集成了实时视频流监控、AI 自动化巡检、异常检测告警以及后台管理功能。

✨ 功能特性

  • 实时监控: 支持多路摄像头的实时视频流播放与管理。
  • AI 智能巡检: 集成 OpenCV 与 AI 模型,支持定时自动巡检与异常识别。
  • 任务调度: 灵活的巡检任务配置与调度(基于 APScheduler)。
  • 告警系统: 异常情况实时记录与通知。
  • 用户管理: 完善的管理员权限与认证系统。

🛠 技术栈

Backend (后端)

  • 框架: FastAPI (Python 3.10+)
  • 数据库: MySQL 8.0+ (配合 SQLAlchemy ORM)
  • AI/CV: OpenCV, OpenAI API
  • 任务调度: APScheduler
  • 服务器: Uvicorn

Frontend (前端)

  • 框架: Vue 3 + TypeScript
  • 构建工具: Vite
  • UI 组件: (根据项目实际情况填写,如 Element Plus 或 Antdv)

📋 环境要求

  • Python: 3.10 或更高版本 (本地开发)
  • Node.js: 18.0 或更高版本 (本地开发)
  • MySQL: 8.0 或更高版本 (本地开发)
  • Docker & Docker Compose: (容器化部署)

🚀 快速开始

方式一:Docker 部署 (推荐)

本项目支持 Docker Compose 一键部署,集成了 MySQL 数据库,并实现了数据持久化。

1. 启动服务

根据您的运行环境选择对应的启动命令:

场景 A: Linux 服务器部署 (生产环境/标准 Linux) 适用于标准 Linux 服务器环境,使用本地目录挂载数据库,方便数据备份和查看。

# 启动服务
docker-compose up -d

场景 B: Windows (WSL 2) 本地开发 适用于在 Windows 上使用 Docker Desktop (WSL 2) 的用户。此配置使用 Docker 命名卷 (Named Volume) 存储数据库,以解决 Windows 文件系统 (NTFS) 挂载导致的 MySQL 权限问题。

# 使用 WSL 专用配置文件启动
docker-compose -f docker-compose.wsl.yml up -d

提示:

  • 如果在 Windows 下直接运行 docker-compose up -d 遇到数据库启动失败 (Permission denied),请务必使用上述 场景 B 的命令。
  • 如果遇到 "DEPRECATED" 警告,建议使用新版命令 docker compose (无连字符)。
# 构建并启动服务 (强制重新构建镜像)
# Linux:
docker-compose up -d --build
# Windows/WSL:
docker-compose -f docker-compose.wsl.yml up -d --build

2. Windows 用户构建卡住解决方案

❗ Windows 用户特别提示 (构建卡住解决方案): 如果直接运行 docker-compose build 时遇到 npm install 阶段卡住不动(常见于 Windows Docker Desktop 网络环境),请按以下步骤手动构建:

  1. 手动构建镜像 (使用 --network=host 共享主机网络,解决连接超时问题): bash > docker build --network=host -t ai-watch-platform . > > 2. 启动服务 (将自动使用刚才构建好的本地镜像): > bash > docker-compose up -d >

提示:

  • docker-compose.yml 已配置为优先使用本地 ai-watch-platform 镜像。只有当本地不存在该镜像时,才会尝试自动构建。
  • 如果遇到 "DEPRECATED" 警告,请确保使用新版 docker compose 命令。
  • 💡 智能重试机制: 后端服务已内置了数据库连接重试逻辑 (Max 30次, 间隔2s)。即使数据库启动较慢,应用也会耐心等待直到连接成功,无需人工重启。

2. 访问服务

等待容器启动完成后,访问:http://localhost:8000

  • 默认账号: admin
  • 默认密码: HNYZ0821

3. 数据持久化说明

启动后,项目根目录会自动生成以下文件夹用于数据持久化:

  • mysql_data/: MySQL 数据库数据
  • reports/: 生成的巡检报告 (PDF)
  • snapshots/: 告警截图文件

手动构建镜像 (可选)

如果你不希望使用 Docker Compose,也可以直接使用 docker buildx (推荐) 或 docker build 构建和运行镜像。

注意: 这种方式需要你自行准备 MySQL 数据库,并通过环境变量连接。

  1. 构建镜像

    # 使用 BuildKit 构建 (推荐)
    docker buildx build -t ai-watch-platform .
    

    或者旧版命令(可能会提示 Deprecated 警告):

    docker build -t ai-watch-platform .
    
  2. 运行容器

    # 假设你的 MySQL 运行在 192.168.1.100,密码为 root_password
    docker run -d -p 8000:8000 \
      -e MYSQL_SERVER=192.168.1.100 \
      -e MYSQL_PORT=3306 \
      -e MYSQL_USER=root \
      -e MYSQL_PASSWORD=root_password \
      -v $(pwd)/reports:/app/reports \
      -v $(pwd)/snapshots:/app/backend/app/static/snapshots \
      --name ai-watch-app \
      ai-watch-platform
    

    方式二:本地开发环境

    1. 克隆项目

    git clone <repository-url>
    cd ai-watch-platform
    

2. 后端配置

建议使用虚拟环境管理 Python 依赖:

# 创建虚拟环境
python -m venv .venv

# 激活虚拟环境
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate

# 安装依赖
pip install -r backend/requirements.txt

3. 环境配置 (.env)

在项目根目录下创建一个 .env 文件,配置数据库连接与其他敏感信息。你可以参考以下模板:

# .env 文件内容示例
MYSQL_SERVER=localhost
MYSQL_USER=root
MYSQL_PASSWORD=your_password
MYSQL_DB=ai_watch
SECRET_KEY=your_secret_key_here

4. 数据库初始化

确保 MySQL 中已经手动创建了名为 ai_watch 的空数据库,然后运行初始化脚本:

# 初始化数据表结构
python init_db_script.py

# 创建或重置管理员账户 (默认账户: admin / HNYZ0821)
python reset_admin.py

5. 前端构建

进入前端目录安装依赖并构建资源(构建后的文件将被后端自动托管):

cd frontend
npm install
npm run build
cd ..

6. 启动服务

在根目录下运行启动脚本,这将同时启动后端 API 服务并托管前端页面:

python run.py

服务启动后,请访问:http://localhost:8000

🔐 默认账号

如果在第 4 步运行了 reset_admin.py (Docker 部署自动包含此步骤),可以使用以下默认账号登录:

  • 用户名: admin
  • 密码: HNYZ0821

注意: 首次登录后建议立即修改密码。

📂 目录结构

ai-watch-platform/
├── backend/            # Python 后端代码
├── frontend/           # Vue3 前端代码
├── .env                # 环境变量配置 (不要提交到 Git)
├── run.py              # 项目启动入口
├── init_db_script.py   # 数据库初始化脚本
├── reset_admin.py      # 管理员重置脚本
├── Dockerfile          # Docker 构建文件
├── docker-compose.yml  # Docker Compose 编排文件
└── .dockerignore       # Docker 忽略文件

📄 License

MIT License