CapacityReport - 容量报表处理程序

容量报表数据处理系统,支持 Excel/CSV 文件上传、数据提取、清洗和导入 MySQL 数据库。

技术栈

  • 后端: FastAPI + Uvicorn + Supervisor
  • 前端: 原生 JavaScript + HTML/CSS
  • 数据库: MySQL (PyMySQL + SQLAlchemy)
  • 数据处理: Pandas + OpenPyXL
  • 部署: Docker + Supervisor

系统架构

graph TB
    A[浏览器] -->|HTTP| B[FastAPI]
    B -->|静态文件| C[Static Files]
    B -->|API请求| D[业务逻辑层]
    D -->|数据处理| E[DataProcessor]
    D -->|数据管理| F[DatabaseManager]
    D -->|历史记录| G[HistoryManager]
    E -->|批量插入| H[MySQL]
    F -->|连接池| H
    I[Supervisor] -->|管理进程| J[Uvicorn]
    J -->|运行| B

核心模块

  • app/main.py - FastAPI 应用入口,API 路由
  • app/processor.py - 数据处理核心(ZIP解压、Excel转CSV、CSV导入)
  • app/database.py - 数据库连接与批量插入
  • app/history.py - 处理历史记录管理
  • app/config.py - 配置管理

数据流程

flowchart TD
    A[上传文件] --> B{文件类型}
    B -->|ZIP| C[解压ZIP]
    B -->|Excel| D[Excel转CSV]
    B -->|CSV| E[直接处理]
    C --> D
    D --> F[字段映射]
    E --> F
    F --> G[数据清洗]
    G --> H[批量插入MySQL]
    H --> I[执行SQL脚本]
    I --> J[生成结果表]

上传处理时序

sequenceDiagram
    participant U as 用户
    participant F as 前端
    participant A as FastAPI
    participant P as DataProcessor
    participant D as MySQL

    U->>F: 选择文件上传
    F->>A: POST /api/upload
    A->>A: 保存文件到 cache/
    A->>F: 返回 task_id
    F->>A: POST /api/process/start
    A->>P: 启动处理任务
    P->>P: 解压ZIP/处理Excel
    P->>P: 读取CSV并清洗
    P->>D: 批量插入数据
    P->>D: 执行SQL脚本
    P->>A: 返回处理结果
    A->>F: 推送日志更新
    F->>U: 显示处理进度

部署

Docker 部署

docker build -t capareport .
docker run -d --restart=always -p 9081:9081 capareport

Windows 部署

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

# 启动服务(自动重启模式)
run.bat

Linux 部署

# 使用 Supervisor
supervisord -c supervisord.conf

配置

配置文件: Configure.json

  • MySQL_DBInfo - 数据库连接信息
  • SheetFilter - Excel Sheet 过滤规则
  • ExtractField - 字段映射配置

API 端点

  • POST /api/upload - 上传文件
  • POST /api/process/start - 启动处理
  • POST /api/process/status - 查询处理状态
  • POST /api/history - 获取历史记录
  • POST /api/service/restart - 重启服务
  • GET /api/service/status - 服务状态

目录结构

CapaReport/
├── app/              # 应用代码
│   ├── main.py       # FastAPI 入口
│   ├── processor.py  # 数据处理
│   ├── database.py   # 数据库管理
│   ├── history.py    # 历史记录
│   └── config.py     # 配置管理
├── static/           # 前端静态文件
├── cache/            # 临时文件目录
├── Configure.json    # 配置文件
├── Dockerfile        # Docker 配置
└── supervisord.conf  # Supervisor 配置
S
Description
No description provided
Readme
5.1 MiB
Languages
Python 53.6%
Vue 34.5%
CSS 6.4%
TypeScript 3.5%
Rust 1.6%
Other 0.4%