# 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 --build
    ```

2.  **访问服务**

    等待容器启动完成后，访问：[http://localhost:8000](http://localhost:8000)

    *   **默认账号**: `admin`
    *   **默认密码**: `HNYZ0821`

3.  **数据持久化说明**

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

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

#### 手动构建镜像 (可选)

如果你不希望使用 Docker Compose，也可以直接使用 `Dockerfile` 构建和运行镜像。

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

1.  **构建镜像**

    ```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 <repository-url>
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)
