All notable changes to this project will be documented in this file.
- 对齐 backend-go 模型状态成功率口径,将
type=2 && completion_tokens>0视为成功,并补充failure_count/empty_count统计。 - 为模型状态监控补齐
token-groups与config/sort路由,支持前端按令牌分组筛选模型与持久化排序配置。 - 扩展令牌管理接口与前端页面,支持按分组筛选令牌并展示令牌所属分组。
- 统一日志分析与用户风险分析中的成功请求统计口径,避免与模型状态页指标不一致。
- 前端全量 API 层重构:从 Swagger/OpenAPI 生成 TypeScript 类型,建立统一类型安全 API client 层
- 新增
frontend/src/api/schema.d.ts:通过openapi-typescript从后端swagger.json自动生成(含 swagger2openapi 2.0→3.0 转换链路) - 新增
frontend/src/api/client.ts:createAuthClient()工厂函数 +publicClient,基于openapi-fetch(~5KB) - 新增
frontend/src/api/endpoints/*.ts:14 个业务模块 endpoint 封装(auth/dashboard/topups/tokens/redemptions/users/risk/ip-monitoring/ai-ban/analytics/model-status/system/storage/auto-group) - 新增
frontend/src/api/index.ts:统一导出所有 endpoint 工厂函数 - 新增
frontend/src/types/common.ts:ApiResponse<T>、PaginatedResponse<T>泛型通用类型 - 新增
package.jsongenerate:api脚本 + 根Makefilegenerate-api-typestarget,支持一键重新生成
- 新增
- 前端组件迁移:Tokens、Redemptions、TopUps、Dashboard、UserManagement 五个核心组件完成迁移
- 移除各组件内重复的本地
PaginatedResponseinterface 定义(至少3处重复) - 将裸
fetch()调用替换为类型安全的createXxxApi(client).method()调用 - 错误检查从
data.success改为openapi-fetch返回的{ data, error }模式 - 依赖移除:各组件的
apiUrl、getAuthHeaders样板代码统一消除
- 移除各组件内重复的本地
- Dashboard 请求榜/土豪榜不显示:统一前后端 top-users 接口契约
- 后端
TopUser字段从requests/quota重命名为request_count/quota_used,与前端期望一致 - 后端
GetTopUsers新增period参数,支持24h/3d/7d/14d等时间范围查询(原先固定为"今天 00:00 起") - 前端
fetchAnalyticsSummary改为并行两次请求(order_by=requests和order_by=quota),各取 limit=1,避免单次查询二次排序导致的 NaN 问题
- 后端
- 前端依赖激进升级:将所有核心依赖升级到最新版本(方案 B)
- Vite: 5.0.8 → 7.3.1(跨 2 个大版本)
- @vitejs/plugin-react: 4.2.1 → 5.1.2
- Tailwind CSS: 3.4.0 → 4.1.18(完全重写,配置从 JS 迁移到 CSS)
- ESLint: 8.55.0 → 9.39.2(强制使用 Flat Config)
- TypeScript ESLint: 6.14.0 → 8.53.0
- lucide-react: 0.468.0 → 0.562.0
- tailwind-merge: 2.6.0 → 3.4.0
- eslint-plugin-react-hooks: 4.6.0 → 7.0.1
- 删除
tailwind.config.js和postcss.config.js(Tailwind v4 不再需要) - 新增
eslint.config.js(ESLint 9 Flat Config 格式) - 新增
@tailwindcss/vite插件集成 - 修复
src/index.css中的@apply指令兼容性(改用原生 CSS) - 修复代码中的 ESLint 错误和 TypeScript 类型问题
- 性能提升:Tailwind 增量构建速度提升 100 倍,Vite 冷启动和热更新优化
-
统一用户名点击行为:前端所有显示用户名的地方现在可点击查看用户行为分析
- 新增共享组件
UserAnalysisDialog.tsx:统一的用户行为分析对话框 - 新增类型定义
types/user.ts:共享的 UserAnalysis 接口和常量 - 充值记录页面 (TopUps):用户名可点击打开分析对话框
- 仪表板页面 (Dashboard):请求之王和土豪榜首排行榜用户名可点击
- 兑换码管理页面 (Redemptions):重构使用共享组件,减少约 250 行重复代码
- 支持时间窗口切换 (1h/3h/6h/12h/24h/3d/7d)
- 显示账户额度、风险标志、请求统计、模型偏好、IP 来源、最近轨迹
- 新增共享组件
-
Uptime-Kuma 兼容 API:新增与 Uptime-Kuma 格式兼容的模型状态监控端点(Python 和 Go 双版本)
- Python:
backend/app/uptime_kuma_routes.py - Go:
backend-go/internal/service/uptimekuma.go,backend-go/internal/handler/uptimekuma.go /api/uptime-kuma/monitors- 获取所有模型监控列表/api/uptime-kuma/monitors/{model_name}- 获取单个模型详情及心跳数据/api/uptime-kuma/heartbeats/{model_name}- 获取模型心跳历史/api/uptime-kuma/status-page- 状态页面数据(支持筛选模型)/api/uptime-kuma/status-page/batch- 批量获取指定模型的状态页数据/api/uptime-kuma/overall- 整体状态摘要/api/uptime-kuma/push/{push_token}- Push 监控兼容端点(仅兼容,状态从日志分析得出)- 状态映射(基于 success_rate):
- UP(1): success_rate ≥ 95% 或无请求
- PENDING(2): 80% ≤ success_rate < 95%
- DOWN(0): success_rate < 80%
- 所有端点无需认证,支持时间窗口参数(1h/6h/12h/24h)
- Python:
-
Golang 后端重写 (
backend-go/):使用 Gin + GORM 完全重写 Python/FastAPI 后端- 核心基础设施:配置管理、MySQL/SQLite 双数据库、Redis 缓存、Zap 日志
- 认证中间件:JWT + API Key 双模式认证
- Dashboard 模块:系统概览、使用统计、模型统计、趋势分析
- Top-Up 充值模块:充值记录查询、统计、支付方式分析、退款功能
- Redemption 兑换码模块:批量生成、查询、统计、删除
- User Management 用户管理:用户列表、统计、封禁/解封、批量删除
- Risk Monitoring 风控监控:排行榜、用户风险分析、关联账户检测
- IP Monitoring IP 监控:IP 统计、共享 IP 检测、多 IP 用户/令牌、GeoIP 地理定位
- AI Auto Ban 自动封禁:风险评估、可疑用户扫描、白名单管理
- Log Analytics 日志分析:请求/额度排行、模型统计、分析摘要
- Model Status 模型状态:可用模型列表、状态监控、渠道统计
- System Management 系统管理:系统规模、预热状态、索引管理
- Storage Management 存储管理:配置管理、缓存清理
- Docker 多阶段构建:生产镜像约 20MB,支持 docker-compose 部署
- 预期性能提升 3-5x,内存占用降低 50%+
- Docker 配置切换到 Go 后端:根目录 Dockerfile 和 docker-compose.yml 现在使用 Go 后端
- 最终镜像基于 Alpine Linux,体积更小
- 环境变量格式调整以匹配 Go 后端配置
- GeoIP 数据库优化:从 City 切换到 Country 数据库,内存占用从 ~70MB 降至 ~4MB
- 不再提供城市和区域级别的地理位置信息,仅保留国家级别
- 适用于只需要国家级别 IP 归属地判断的场景
- 内存优化:启动内存从 ~140MB 降至 ~40-60MB
- GeoIP 数据库延迟加载:首次 IP 查询时才加载 mmdb 文件(节省 60-100MB)
- SimpleCache 添加容量限制(1000 条)和 5 分钟自动清理,防止内存泄漏
- 数据库连接池精简:pool_size 3→1, max_overflow 5→2
- SQLite 初始化改用上下文管理器,防止连接泄漏
- 充值记录退款功能:支持管理员对已成功充值的订单进行退款操作
- 后端新增
REFUNDED状态枚举和退款接口POST /api/top-ups/{id}/refund - 退款时自动扣减用户对应额度(使用事务 + 原子更新防止双重退款)
- 前端新增「已退款」统计卡片和退款操作弹窗
- 后端新增