- crypto.py: API Key 加密/解密工具 - runtime_config.py: 运行时动态配置管理 - log_buffer.py: 内存日志缓冲区 - config.py: 新增加密配置项 - http_client.py: 增强重试和错误处理
133 lines
5.4 KiB
Markdown
133 lines
5.4 KiB
Markdown
# Profeto Admin 后台管理系统
|
|
|
|
## 概述
|
|
|
|
Profeto 后台管理界面,为足球 LLM 预测系统提供运维管理能力。
|
|
**与前台共用同一套「报刊风」设计语言**:纸色底(paper)、墨色字(ink)、印报红唯一强调(press),
|
|
宋体标题、方正边框、细线分隔,无圆角、无彩色药丸标签。
|
|
支持响应式布局(移动端 / 平板 / 桌面)。
|
|
|
|
## 文件结构
|
|
|
|
```
|
|
src/admin/
|
|
├── AdminApp.tsx # Admin 应用入口(独立路由)
|
|
├── AdminLayout.tsx # 布局(报头式侧栏 + 报眉顶栏,健康状态每 60s 复检)
|
|
├── api.ts # 统一 API 客户端(超时、错误处理、X-API-Key 自动附带)
|
|
├── dal.ts # 数据访问层(封装所有 API 端点调用)
|
|
├── types.ts # TypeScript 类型定义(与 FastAPI Pydantic 模型对齐)
|
|
├── components.tsx # 通用 UI 组件(报刊风 Card/Badge/DataTable/Alert...)
|
|
├── routes.tsx # 路由定义(/admin/*)
|
|
└── pages/
|
|
├── Dashboard.tsx # 仪表盘(系统概览)
|
|
├── Collection.tsx # 数据采集(触发采集任务,结果结构化展示)
|
|
├── Predictions.tsx # 预测管理(触发预测 + 结算 + 记录展开)
|
|
├── Backtest.tsx # 回测管理(汇总指标 + 逐场明细 + 模型评估)
|
|
├── Monitoring.tsx # 监控面板(存活 + 数据库就绪,30s 自动巡检)
|
|
├── DataSources.tsx # 数据源管理(数据源配置与测试)
|
|
├── LLMConfig.tsx # LLM 配置(模型连接与统计)
|
|
└── Config.tsx # 系统配置(登录鉴权说明 + .env 查看与修改指南)
|
|
```
|
|
|
|
## 页面说明
|
|
|
|
### 1. 仪表盘 (`/admin`)
|
|
- 系统健康状态、联赛 / 比赛 / 预测数量统计(报纸数字版式)
|
|
- 已入库联赛列表
|
|
- 快捷操作导航
|
|
|
|
### 2. 数据采集 (`/admin/collection`)
|
|
- 选择数据源: Bzzoiro / Understat / Injuries
|
|
- 选择联赛、日期范围(Understat 为赛季)
|
|
- 触发采集任务;结果结构化展示(新增 / 更新 / 跳过 / 未匹配 / 错误)
|
|
|
|
### 3. 预测管理 (`/admin/predictions`)
|
|
- 触发预测(选择比赛 + 模式:多专家 / 单次)
|
|
- **预测结算**: 录入实际比分,调用 /eval/settle,供准确率统计使用
|
|
- 预测记录列表: 点击展开终裁理由与五路专家摘要
|
|
|
|
### 4. 回测管理 (`/admin/backtest`)
|
|
- 回测配置: 联赛(下拉)、日期范围、场数、模式
|
|
- 结果汇总: 已评分 / 1X2 准确率 / 比分 RMSE / 平均置信度
|
|
- 逐场明细: 实际比分 vs 预测比分,正误标记
|
|
- 模型评估: 各模型历史准确率(/eval/summary)
|
|
|
|
### 5. 监控面板 (`/admin/monitoring`)
|
|
- /health 存活检查 + /health/ready 数据库就绪检查
|
|
- 每 30 秒自动巡检,可手动「立即巡检」
|
|
- 服务名 / 版本 / 运行时间 / 检查项
|
|
|
|
### 6. 数据源管理 (`/admin/data-sources`)
|
|
- 数据源状态: API Key 配置状态(脱敏)
|
|
- 测试连接: 调用采集 API 验证
|
|
- 数据源说明文档
|
|
|
|
### 7. LLM 配置 (`/admin/llm-config`)
|
|
- 当前配置: provider, model, base_url
|
|
- 连接测试(会真实调用一次预测,产生 LLM 费用)
|
|
- 使用统计: 预测次数、延迟、有效率(从预测记录聚合)
|
|
- 可用模型列表
|
|
|
|
### 8. 系统配置 (`/admin/config`)
|
|
- **登录与鉴权**: 后台由密码登录保护(服务器 .env 的 ADMIN_PASSWORD),
|
|
会话以 HttpOnly Cookie 保存;脚本直连接口可使用 ADMIN_API_KEY(X-API-Key 请求头)
|
|
- 配置列表: 脱敏显示 .env 配置项
|
|
- 配置修改指南: SSH 修改 .env + 重启服务
|
|
|
|
## 鉴权说明
|
|
|
|
后端 `ADMIN_API_KEY` 的渐进式策略:
|
|
- 未配置 → 写入型接口无鉴权(本地开发)
|
|
- 已配置 → 采集 / 回测 / 结算接口必须带 `X-API-Key` 请求头
|
|
|
|
前端在 `api.ts` 统一注入该请求头;密钥在「系统配置」页设置,
|
|
仅存于本机浏览器 localStorage。401 错误会提示到该页填写密钥。
|
|
|
|
## 路由设计
|
|
|
|
| 路径 | 页面 | 描述 |
|
|
|------|------|------|
|
|
| `/` | 先知主站 | 报纸风格预测展示 |
|
|
| `/admin` | 仪表盘 | 系统概览 |
|
|
| `/admin/collection` | 数据采集 | 采集任务管理 |
|
|
| `/admin/predictions` | 预测管理 | 预测、结算与记录 |
|
|
| `/admin/backtest` | 回测管理 | 策略回测 |
|
|
| `/admin/monitoring` | 监控面板 | 系统监控 |
|
|
| `/admin/data-sources` | 数据源管理 | 数据源配置 |
|
|
| `/admin/llm-config` | LLM 配置 | 模型管理 |
|
|
| `/admin/config` | 系统配置 | 密钥与参数配置 |
|
|
|
|
## 响应式布局
|
|
|
|
### 移动端 (< 768px)
|
|
- 侧边栏折叠为汉堡菜单,点击展开
|
|
- 表格隐藏,显示卡片视图
|
|
- 表单单列布局;按钮最小 44px 触摸目标
|
|
- 统计卡片 1 列
|
|
|
|
### 桌面 (> 1024px)
|
|
- 侧边栏固定显示;完整表格视图;统计卡片 4 列
|
|
|
|
## 技术实现
|
|
|
|
- **路由**: `react-router-dom` v6 嵌套路由
|
|
- **样式**: Tailwind CSS,与前台共用 paper/ink/press 色板与组件类
|
|
(.btn / .field / .tab / .section-head / .skeleton 见 `src/index.css`)
|
|
- **API**: 统一 fetch 客户端,30s 超时,类型安全,X-API-Key 自动附带
|
|
- **类型**: TypeScript strict mode,与后端 Pydantic 模型对齐
|
|
- **错误处理**: ApiError 类 + 页面级 Alert 展示
|
|
- **触摸友好**: 所有可点元素 min-h-[44px]
|
|
|
|
## 启动方式
|
|
|
|
```bash
|
|
cd frontend
|
|
npm run dev
|
|
# 访问 http://localhost:5173/admin
|
|
```
|
|
|
|
## 访问入口
|
|
|
|
主站页面顶部「管理后台」链接可跳转至 `/admin`。
|
|
Admin 后台侧栏底部「返回前台版面」链接可回到 `/`。
|