feat: v2.0.0 done
This commit is contained in:
@@ -1,112 +1,133 @@
|
||||
# CapacityReport - 容量报表处理程序
|
||||
# CapacityReport - 容量报表处理系统
|
||||
|
||||
容量报表数据处理系统,支持 Excel/CSV 文件上传、数据提取、清洗和导入 MySQL 数据库。
|
||||
支持 Excel/CSV 文件上传、数据提取、清洗和导入 MySQL 数据库。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **后端**: FastAPI + Uvicorn + Supervisor
|
||||
- **前端**: 原生 JavaScript + HTML/CSS
|
||||
- **数据库**: MySQL (PyMySQL + SQLAlchemy)
|
||||
- **数据库**: MySQL 8.0+ (PyMySQL + SQLAlchemy)
|
||||
- **数据处理**: Pandas + OpenPyXL
|
||||
- **部署**: Docker + Supervisor
|
||||
- **部署**: Docker + Docker Compose
|
||||
|
||||
## 系统架构
|
||||
## 数据库要求
|
||||
|
||||
```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
|
||||
- **MySQL**: >= 8.0, < 9.0
|
||||
- **字符集**: utf8mb4
|
||||
- **必需功能**: LOAD DATA LOCAL INFILE
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
CapaReport/
|
||||
├── app/ # 应用代码
|
||||
│ ├── main.py # FastAPI 入口
|
||||
│ ├── processor.py # 数据处理
|
||||
│ ├── database.py # 数据库管理
|
||||
│ ├── history.py # 历史记录
|
||||
│ └── config.py # 配置管理
|
||||
├── build/ # 构建脚本和配置
|
||||
│ ├── build.py # 统一构建脚本
|
||||
│ ├── Dockerfile # Docker 镜像定义
|
||||
│ ├── docker-compose.yml # Docker Compose 编排
|
||||
│ └── mysql/ # MySQL 配置
|
||||
├── static/ # 前端静态文件
|
||||
│ ├── index.html
|
||||
│ ├── css/
|
||||
│ └── js/
|
||||
├── Configure.json # 应用配置
|
||||
├── ReportScript.sql # SQL 处理脚本
|
||||
├── requirements.txt # Python 依赖
|
||||
└── supervisord.conf # Supervisor 配置
|
||||
```
|
||||
|
||||
## 核心模块
|
||||
## 本地运行
|
||||
|
||||
- `app/main.py` - FastAPI 应用入口,API 路由
|
||||
- `app/processor.py` - 数据处理核心(ZIP解压、Excel转CSV、CSV导入)
|
||||
- `app/database.py` - 数据库连接与批量插入
|
||||
- `app/history.py` - 处理历史记录管理
|
||||
- `app/config.py` - 配置管理
|
||||
### 前置要求
|
||||
|
||||
## 数据流程
|
||||
- Python >= 3.10, < 3.14
|
||||
- MySQL >= 8.0, < 9.0
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
# 启动服务(自动重启模式)
|
||||
### 配置数据库
|
||||
|
||||
编辑 `Configure.json`,设置 MySQL 连接信息:
|
||||
|
||||
```json
|
||||
{
|
||||
"MySQL_DBInfo": {
|
||||
"host": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"user": "root",
|
||||
"passwd": "your_password",
|
||||
"dbname": "CapacityReport"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 启动服务
|
||||
|
||||
**Windows**:
|
||||
```bash
|
||||
run.bat
|
||||
```
|
||||
|
||||
### Linux 部署
|
||||
|
||||
**Linux**:
|
||||
```bash
|
||||
# 使用 Supervisor
|
||||
supervisord -c supervisord.conf
|
||||
```
|
||||
|
||||
访问: http://localhost:9081
|
||||
|
||||
## Docker 编译与部署
|
||||
|
||||
### 构建部署包
|
||||
|
||||
```bash
|
||||
python build/build.py
|
||||
```
|
||||
|
||||
选择构建类型:
|
||||
- `1` - 完整部署包(MySQL + 应用)
|
||||
- `2` - 更新包(仅应用)
|
||||
|
||||
输出文件在 `dist/` 目录:
|
||||
- `capacity-report-full.tar.gz` - 完整部署包
|
||||
- `capacity-report-update.tar.gz` - 更新包
|
||||
|
||||
### 部署
|
||||
|
||||
**完整部署**:
|
||||
```bash
|
||||
tar -xzf capacity-report-full.tar.gz
|
||||
cd capacity-report-full
|
||||
sh deploy.sh
|
||||
```
|
||||
|
||||
**更新应用**:
|
||||
```bash
|
||||
tar -xzf capacity-report-update.tar.gz
|
||||
cd capacity-report-update
|
||||
sh update.sh
|
||||
```
|
||||
|
||||
### 配置说明
|
||||
|
||||
Docker 环境配置在 `build/build.py` 文件头部:
|
||||
- 默认镜像版本
|
||||
- 数据库账号密码
|
||||
- 端口映射
|
||||
|
||||
部署包中的 `Configure.json` 会自动更新为 Docker 环境配置。
|
||||
|
||||
## 配置
|
||||
|
||||
配置文件: `Configure.json`
|
||||
`Configure.json` 主要配置项:
|
||||
|
||||
- `MySQL_DBInfo` - 数据库连接信息
|
||||
- `SheetFilter` - Excel Sheet 过滤规则
|
||||
@@ -116,24 +137,7 @@ supervisord -c supervisord.conf
|
||||
|
||||
- `POST /api/upload` - 上传文件
|
||||
- `POST /api/process/start` - 启动处理
|
||||
- `POST /api/process/status` - 查询处理状态
|
||||
- `POST /api/history` - 获取历史记录
|
||||
- `GET /api/process/status` - 查询状态
|
||||
- `GET /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 配置
|
||||
```
|
||||
- `GET /api/health` - 健康检查
|
||||
|
||||
Reference in New Issue
Block a user