140 lines
3.3 KiB
Markdown
140 lines
3.3 KiB
Markdown
# CapacityReport - 容量报表处理程序
|
|
|
|
容量报表数据处理系统,支持 Excel/CSV 文件上传、数据提取、清洗和导入 MySQL 数据库。
|
|
|
|
## 技术栈
|
|
|
|
- **后端**: FastAPI + Uvicorn + Supervisor
|
|
- **前端**: 原生 JavaScript + HTML/CSS
|
|
- **数据库**: MySQL (PyMySQL + SQLAlchemy)
|
|
- **数据处理**: Pandas + OpenPyXL
|
|
- **部署**: Docker + Supervisor
|
|
|
|
## 系统架构
|
|
|
|
```mermaid
|
|
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` - 配置管理
|
|
|
|
## 数据流程
|
|
|
|
```mermaid
|
|
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[生成结果表]
|
|
```
|
|
|
|
## 上传处理时序
|
|
|
|
```mermaid
|
|
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 部署
|
|
|
|
```bash
|
|
docker build -t capareport .
|
|
docker run -d --restart=always -p 9081:9081 capareport
|
|
```
|
|
|
|
### Windows 部署
|
|
|
|
```bash
|
|
# 安装依赖
|
|
pip install -r requirements.txt
|
|
|
|
# 启动服务(自动重启模式)
|
|
run.bat
|
|
```
|
|
|
|
### Linux 部署
|
|
|
|
```bash
|
|
# 使用 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 配置
|
|
```
|