9.2 KiB
9.2 KiB
CapacityReport 开发文档
面向二次开发者,介绍项目实际用到的技术栈、目录结构,以及导航栏每个功能对应的代码文件,方便快速定位要修改的位置。
技术栈与主要库
后端(Python)
| 库 | 用途 |
|---|---|
| fastapi / uvicorn | Web 框架与 ASGI 服务器 |
| python-multipart | 文件上传表单解析 |
| pandas / openpyxl | Excel/CSV 数据读取与处理 |
| chardet | CSV 编码探测 |
| pymysql | 直连 MySQL 读写 |
| cryptography | 本地授权文件加密 |
| paramiko | SFTP 远程下载 |
| requests | Metrix 平台 API 客户端(可选模式) |
前端(Vue 3)
| 库 | 用途 |
|---|---|
| vue / vue-router | 框架与路由 |
| naive-ui | UI 组件库 |
| @vicons/ionicons5 | 图标 |
| echarts | 容量看板图表 |
| monaco-editor | 脚本编辑页的 SQL 编辑器 |
| @tauri-apps/api | 桌面端与原生能力交互 |
| vite / vue-tsc / typescript | 构建与类型检查 |
| unplugin-auto-import / unplugin-vue-components | Naive UI 组件按需自动导入 |
桌面端(Tauri 2 / Rust)
| 库 | 用途 |
|---|---|
| tauri | 桌面应用框架 |
| tauri-plugin-shell | 启动并管理后端 sidecar 进程 |
| tauri-plugin-dialog | 文件保存对话框 |
| reqwest | 下载文件到本地 |
| sysinfo | 跨平台进程检测与清理 |
| open | 调用系统文件管理器打开目录 |
| serde | 序列化 |
目录结构
CapacityReport/
├─ app/ # 后端(FastAPI)
│ ├─ main.py # 入口:创建应用、鉴权中间件、注册路由、托管前端
│ ├─ state.py # 运行时共享状态(配置、历史、任务锁、上传会话)
│ ├─ config.py # 配置读写(AppConfig 与各配置块)
│ ├─ auth.py # 登录账号(auth.ini)、JWT、密码修改
│ ├─ db_init.py # 启动时确保必要数据表存在
│ ├─ database.py # DatabaseManager:直连 MySQL 表操作
│ ├─ warehouse.py # make_warehouse:按仓库类型返回直连或 Metrix 仓库
│ ├─ processor.py # DataProcessor:解压/转换/入库/执行报表 SQL;ProcessLogger
│ ├─ history.py # HistoryManager:处理历史记录与日志
│ ├─ api/routers/ # 各业务接口(按模块拆分,见下表)
│ ├─ services/ # 业务服务(远程下载、调度、CellData、授权、Metrix 等)
│ └─ utils/ # 通用工具(文件、文件名日期解析)
├─ frontend/ # 前端(Vue 3 + Vite)
│ └─ src/
│ ├─ AppShell.vue # 整体框架:登录、侧边导航、顶栏、主题切换
│ ├─ App.vue / main.ts # 应用根与入口
│ ├─ router.ts # 路由表(6 个功能页)
│ ├─ types.ts # 前端类型定义
│ ├─ api/client.ts # 请求封装(token、错误处理、下载)
│ ├─ components/ # 各功能页面与公共组件
│ └─ composables/ # 可复用逻辑(页头、主题、剪贴板、日志等)
├─ src-tauri/ # Tauri 桌面壳(Rust)
│ ├─ src/main.rs # 启动/停止 Python sidecar、下载、打开目录
│ └─ tauri.conf.json # 桌面打包配置(WebView2、NSIS 等)
├─ scripts/ # 运行/编译 Python 脚本
├─ packaging/ # docker-compose、PyInstaller 配置、MySQL 初始化
├─ docker/entrypoint.sh # 容器启动脚本
├─ docs/ # 项目维护记录(project_context.md)
├─ README.md # 使用说明
├─ DEVELOPMENT.md # 开发文档(本文件)
├─ Configure.json # 应用配置
├─ ReportScript.sql # 容量报表处理 SQL
├─ CellData.sql # CellData 处理 SQL
├─ Dockerfile # 服务端镜像
└─ requirements.txt # Python 依赖
运行时数据(不进版本库):cache/(任务工作目录、历史记录 history.json)、logs/、auth.ini(账号)、license.dat(授权)。
功能与代码对照
后端接口按模块拆分在 app/api/routers/,前端页面在 frontend/src/components/。下面按导航栏 6 个功能逐一说明涉及的代码文件。
公共代码(多数功能都会用到):
- 前端框架与导航:
frontend/src/AppShell.vue、router.ts、api/client.ts、composables/ - 后端入口与共享:
app/main.py、app/state.py、app/config.py、app/api/routers/task_runtime.py(任务阶段、授权日志、历史保留清理)
数据处理
页面路由 /upload。负责本地上传或远程下载数据,清洗入库并执行报表 SQL;若启用 CellData 数据源,会在容量处理前先更新 CellData。
| 类型 | 文件 | 职责 |
|---|---|---|
| 前端 | frontend/src/components/FileWorkflow.vue |
上传/远程下载入口、处理进度与日志、CellData 卡片 |
| 接口 | app/api/routers/upload.py |
创建上传会话、接收文件 |
| 接口 | app/api/routers/tasks.py |
任务锁、启动容量处理、查询状态 |
| 接口 | app/api/routers/remote.py |
远程下载并处理、连接测试、自动调度状态/触发 |
| 接口 | app/api/routers/cell_data.py |
CellData 单独处理(远程刷新 / 本地上传) |
| 服务 | app/processor.py |
直连 MySQL:解压、Excel/CSV 转换、入库、执行 ReportScript.sql |
| 服务 | app/services/remote_download.py |
FTP/SFTP 远程下载 |
| 服务 | app/services/auto_scheduler.py |
后台自动调度(按目标周检查远程数据就绪) |
| 服务 | app/services/cell_data.py |
CellData 解析入库、执行 CellData.sql、跨库复制 |
| 服务 | app/services/license.py |
按数据日期校验授权期限 |
| 服务 | app/services/csv_processor.py、pipeline.py、platform.py |
Metrix 平台模式下的预处理与平台导入(可选) |
| 工具 | app/utils/file_dates.py |
文件名日期解析、按目录筛选最近 7 天文件 |
容量看板
页面路由 /dashboard。基于主仓库的 4G/5G 结果表做高负荷分析。
| 类型 | 文件 | 职责 |
|---|---|---|
| 前端 | frontend/src/components/CapacityDashboard.vue |
看板大屏:汇总卡片、图表、问题小区清单、详情抽屉 |
| 前端 | frontend/src/components/EChart.vue |
ECharts 封装组件 |
| 接口 | app/api/routers/dashboard.py |
状态、汇总概览、问题小区清单、单小区详情、清单导出 |
| 依赖 | app/warehouse.py |
读取主仓库结果表 |
处理历史
页面路由 /history。查看历史任务、日志,浏览/下载历史原始数据。
| 类型 | 文件 | 职责 |
|---|---|---|
| 前端 | frontend/src/components/HistoryPanel.vue |
历史列表、详情、日志、文件浏览与下载 |
| 接口 | app/api/routers/history.py |
历史记录、日志、占用计算、文件浏览/下载、删除 |
| 服务 | app/history.py |
HistoryManager:记录存于 cache/history.json 与 cache/<task_id> |
数据管理
页面路由 /database。浏览、编辑、导入导出数据库表,可切换主数据库与 CellData 数据库。
| 类型 | 文件 | 职责 |
|---|---|---|
| 前端 | frontend/src/components/DatabasePanel.vue |
表列表、表数据分页、行编辑/删除、导入导出、执行 SQL |
| 接口 | app/api/routers/database.py |
表列表/结构/分页、清空/删除、行增改删、CSV/XLSX 导出、模板/导入、执行 SQL(database_source 选主库或 CellData 库) |
| 服务 | app/database.py |
DatabaseManager:直连 MySQL 表操作 |
| 服务 | app/warehouse.py |
直连或 Metrix 仓库的统一访问 |
脚本编辑
页面路由 /script。在线编辑并执行报表 SQL 与 CellData SQL。
| 类型 | 文件 | 职责 |
|---|---|---|
| 前端 | frontend/src/components/ScriptPanel.vue |
Monaco SQL 编辑器、保存、运行、切换脚本类型 |
| 接口 | app/api/routers/script.py |
读取/保存/执行(report → ReportScript.sql,celldata → CellData.sql) |
| 服务 | app/processor.py、app/services/cell_data.py、app/services/pipeline.py |
在对应数据库上下文执行脚本 |
系统设置
页面路由 /settings。配置数据库、远程数据源、字段映射、自动调度等,并提供修改密码。
| 类型 | 文件 | 职责 |
|---|---|---|
| 前端 | frontend/src/components/SettingsPanel.vue |
各类配置表单、连接测试、配置导入导出 |
| 前端 | frontend/src/components/LicenseActivationModal.vue |
授权延期窗口、Metrix 平台开关(连点品牌图标 8 次打开) |
| 接口 | app/api/routers/config.py |
各配置块读写、配置上传/下载、MySQL/远程/CellData 连接测试、CellData 规则校验 |
| 接口 | app/api/routers/auth.py |
登录、修改密码 |
| 接口 | app/api/routers/license.py |
授权状态查询与激活 |
| 服务 | app/config.py |
AppConfig 及各配置块的解析与保存 |
| 服务 | app/auth.py |
账号(auth.ini)、JWT |
| 服务 | app/services/license.py |
授权加密文件读写、激活码校验 |