中文 | English
一个基于 FastAPI + MySQL + 原生 HTML/JS 的企业级数据可视化与智能异常告警系统。支持多维度数据分析、实时异常检测、用户认证管理和告警历史追踪。
- 📊 多维度可视化 - 行业分布、省区排行、月度趋势、收入利润对比
- 🔍 智能异常检测 - 基于 3σ 原则和环比波动的自动异常识别
- 👤 用户认证系统 - 完整的注册/登录/Token 验证机制
- 🔔 告警历史管理 - 检测记录持久化,支持搜索和筛选
- 🔎 全局搜索 - 支持项目、省份、行业多维度搜索
- 📱 响应式设计 - 适配桌面端,白色主题 UI
- Python 3.8+
- MySQL 5.7+
- 现代浏览器(Chrome/Firefox/Edge)
- 克隆仓库
git clone https://github.com/yourusername/380-platform-visualization.git
cd 380-platform-visualization- 安装依赖
pip install fastapi uvicorn pymysql pandas openpyxl- 配置数据库
修改 backend/main.py 中的数据库配置:
DB_CONFIG = {
"host": "localhost",
"port": 3306,
"user": "your_username",
"password": "your_password",
"database": "your_database",
"charset": "utf8mb4",
}- 启动服务
Windows:
QUICK_START.batLinux/Mac:
python backend/main.py
# 新终端
python -m http.server 8765- 访问系统
打开浏览器访问:http://localhost:8765/dashboard.html
380-platform-visualization/
├── backend/
│ └── main.py # FastAPI 后端服务
├── dashboard.html # 主前端应用
├── 380平台可视化系统.html # 单文件独立版本
├── import_xlsx.py # Excel 数据导入脚本
├── start_servers.py # 一键启动脚本
├── QUICK_START.bat # Windows 快速启动
├── README.md # 项目说明(本文件)
├── LICENSE # MIT 开源协议
└── .gitignore # Git 忽略配置
系统支持从 Excel 文件导入业务数据:
python import_xlsx.py数据格式要求:
Excel 文件需包含以下列:
- 结算编码、结算客户、省区平台、城市
- 行业、项目简称、日期
- 业绩量、销售收入、经营利润等财务指标
导入后会自动创建 data_380 数据表。
- 核心 KPI 指标卡片
- 行业分布统计(柱状图+饼图)
- 省区 TOP10 排行
- 月度趋势分析
- 收入 vs 利润对比
- 自动异常检测(业绩/收入/利润)
- 告警分级(高/中/低)
- 告警历史记录
- 行业筛选和关键词搜索
- 顶部导航栏快捷搜索
- 支持项目、省份、行业搜索
- 实时下拉结果展示
系统采用多规则异常检测引擎:
| 检测规则 | 严重级别 | 说明 |
|---|---|---|
| 绝对值异常 | 🔴 High | 偏离行业均值超过 3 倍标准差 |
| 环比波动 | 🟡 Medium | 环比变化超过 ±50% |
| 业绩骤降 | 🔴 High | 当前值<100 且上月>1000 |
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录GET /api/auth/me- 获取当前用户
GET /api/380/overview- 数据概览GET /api/380/byIndustry- 按行业统计GET /api/380/byProvince- 按省区统计GET /api/380/trend- 月度趋势GET /api/380/search- 全局搜索
GET /api/alert/detect- 执行异常检测GET /api/alert/history- 告警历史DELETE /api/alert/history/{id}- 删除记录GET /api/alert/stats- 告警统计
完整 API 文档访问:http://localhost:8000/docs
| 层级 | 技术 |
|---|---|
| 后端 | FastAPI, PyMySQL |
| 前端 | HTML5, CSS3, Vanilla JS |
| 图表 | Chart.js |
| 数据库 | MySQL |
| 部署 | Uvicorn, Python HTTP Server |
在 backend/main.py 中修改:
DB_CONFIG = {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "your_password",
"database": "stock_db",
"charset": "utf8mb4",
}如需修改后端地址,编辑 dashboard.html:
const API_BASE = 'http://localhost:8000';欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目基于 MIT License 开源。
如有问题或建议,欢迎提交 Issue 或联系维护者。
Made with ❤️ by Open Source Community