01c97615cd8d065a8fd01bee6cb2155e813e61fc
CapacityReport - 容量报表处理系统
CapacityReport 用于每周导入 Excel/CSV 数据,按 Configure.json 与 ReportScript.sql 完成清洗、入库和报表处理。系统面向内网运行,后端由 FastAPI 提供接口,前端由 Vue 3 构建后交给 FastAPI 托管。
技术栈
- 后端:FastAPI + Uvicorn + Supervisor
- 前端:Vue 3 + TypeScript + Vite + Naive UI
- 数据库:MySQL 8.0+,通过 PyMySQL + SQLAlchemy 访问
- 数据处理:Pandas + OpenPyXL
- 部署:Docker + Docker Compose
目录结构
CapaReport/
├── app/
│ ├── api/routers/ # FastAPI 路由模块
│ ├── services/ # 运行时服务能力
│ ├── utils/ # 文件和通用工具
│ ├── main.py # FastAPI 入口和前端托管
│ ├── auth.py # 登录、密码和 Token
│ ├── state.py # 运行期共享状态
│ ├── processor.py # 数据处理主流程
│ ├── database.py # 数据库访问
│ ├── history.py # 历史记录
│ └── config.py # 配置读写
├── frontend/
│ ├── src/ # Vue 3 + TypeScript 源码
│ ├── package.json
│ └── vite.config.ts
├── build/ # Docker 与离线部署构建脚本
├── docs/project_context.md # 项目上下文记录
├── Configure.json # 应用配置
├── ReportScript.sql # SQL 处理脚本
├── requirements.txt # Python 依赖
├── run.bat # Windows 本地启动脚本
└── supervisord.conf # 容器内进程管理配置
本地运行
前置要求:
- Windows 10
- Python >= 3.10,项目虚拟环境由
uv创建 - Node.js,建议使用当前 LTS 或更新版本
- MySQL >= 8.0
安装后端依赖:
uv pip install -r requirements.txt
安装并构建前端:
cd frontend
npm install
npm run build
cd ..
启动服务:
.\run.bat
访问地址:
新版前端:http://localhost:9081
旧版前端:http://localhost:9082
开发前端时可运行:
cd frontend
npm run dev
Vite 会把 /api 和 /health 代理到 http://localhost:9081。
配置
Configure.json 主要包含:
MySQL_DBInfo:MySQL 连接信息SheetFilter:Excel Sheet 过滤规则ExtractField:字段抽取映射配置
登录账号密码保存在本地 auth.ini,首次运行会自动创建默认配置。auth.ini 已被 .gitignore 忽略。
Docker 构建与部署
离线部署包由 build/build.py 生成:
python build/build.py
脚本提供两种构建:
1:完整部署包,包含 MySQL 镜像和应用镜像2:更新包,只包含应用镜像
Docker 镜像构建采用多阶段流程:先在 Node 阶段执行前端构建,再把 frontend/dist 复制到 Python 运行镜像内。
主要接口
POST /api/login:登录POST /api/change-password:修改密码POST /api/upload:上传文件POST /api/process/start:启动处理POST /api/process/status:查询处理状态GET /api/history:历史记录POST /api/service/restart:重启服务GET /health:健康检查
Languages
Python
53.6%
Vue
34.5%
CSS
6.4%
TypeScript
3.5%
Rust
1.6%
Other
0.4%