# 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. 启动服务 在项目根目录下运行: ```bash # 启动服务 docker-compose up -d ``` > **❗ 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` 命令。 #### 2. 访问服务 等待容器启动完成后,访问:[http://localhost:8000](http://localhost:8000) * **默认账号**: `admin` * **默认密码**: `HNYZ0821` #### 3. 数据持久化说明 启动后,项目根目录会自动生成以下文件夹用于数据持久化: * `mysql_data/`: MySQL 数据库数据 * `reports/`: 生成的巡检报告 (PDF) * `snapshots/`: 告警截图文件 #### 手动构建镜像 (可选) 如果你不希望使用 Docker Compose,也可以直接使用 `docker buildx` (推荐) 或 `docker build` 构建和运行镜像。 > **注意**: 这种方式需要你自行准备 MySQL 数据库,并通过环境变量连接。 1. **构建镜像** ```bash # 使用 BuildKit 构建 (推荐) docker buildx build -t ai-watch-platform . ``` 或者旧版命令(可能会提示 Deprecated 警告): ```bash docker build -t ai-watch-platform . ``` 2. **运行容器** ```bash # 假设你的 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. 克隆项目 ```bash git clone cd ai-watch-platform ``` ### 2. 后端配置 建议使用虚拟环境管理 Python 依赖: ```bash # 创建虚拟环境 python -m venv .venv # 激活虚拟环境 # Windows: .venv\Scripts\activate # Linux/macOS: source .venv/bin/activate # 安装依赖 pip install -r backend/requirements.txt ``` ### 3. 环境配置 (.env) 在项目根目录下创建一个 `.env` 文件,配置数据库连接与其他敏感信息。你可以参考以下模板: ```ini # .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` 的空数据库,然后运行初始化脚本: ```bash # 初始化数据表结构 python init_db_script.py # 创建或重置管理员账户 (默认账户: admin / HNYZ0821) python reset_admin.py ``` ### 5. 前端构建 进入前端目录安装依赖并构建资源(构建后的文件将被后端自动托管): ```bash cd frontend npm install npm run build cd .. ``` ### 6. 启动服务 在根目录下运行启动脚本,这将同时启动后端 API 服务并托管前端页面: ```bash python run.py ``` 服务启动后,请访问:[http://localhost:8000](http://localhost:8000) ## 🔐 默认账号 如果在第 4 步运行了 `reset_admin.py` (Docker 部署自动包含此步骤),可以使用以下默认账号登录: * **用户名**: `admin` * **密码**: `HNYZ0821` > **注意**: 首次登录后建议立即修改密码。 ## 📂 目录结构 ```text 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](LICENSE)