v2.0.0 done

This commit is contained in:
2026-01-13 19:07:07 +08:00
commit 103ceb6c2e
16 changed files with 7346 additions and 0 deletions
+139
View File
@@ -0,0 +1,139 @@
# 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 配置
```