f389c0722d53cd99b4abdbc69aea64e741242762
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 配置
Languages
Python
53.6%
Vue
34.5%
CSS
6.4%
TypeScript
3.5%
Rust
1.6%
Other
0.4%