IanShaw027
93b5b7474b
refactor(ops): 调整健康得分权重
...
- 业务健康权重从 70% 提升到 80%
- 基础设施健康权重从 30% 降低到 20%
- 更加关注业务指标(SLA、错误率等)对整体健康的影响
2026-01-15 19:50:02 +08:00
shaw
5f890e85e7
Merge PR #296 : OAuth token cache invalidation on 401 and refresh
2026-01-15 16:31:37 +08:00
LLLLLLiulei
aab44f9fc8
feat: add proxy geo location
2026-01-15 15:15:20 +08:00
yangjianbo
90bce60b85
feat: merge dev
2026-01-15 15:14:44 +08:00
yangjianbo
a458e684bc
fix(认证): OAuth 401 直接标记错误状态
...
- OAuth 401 清理缓存并设置错误状态
- 移除 oauth_401_cooldown_minutes 配置及示例
- 更新 401 相关单测
破坏性变更: OAuth 401 不再临时不可调度,需手动恢复
2026-01-15 15:06:34 +08:00
LLLLLLiulei
87b4662993
Revert "feat: add proxy geo location"
...
This reverts commit 09c4f82927ddce1c9528c146a26457f53d02b034.
2026-01-15 15:01:50 +08:00
LLLLLLiulei
3a100339b9
feat: add proxy geo location
2026-01-15 15:01:50 +08:00
longgexx
4672a6fac3
merge: 合并上游 upstream/main 分支
...
解决冲突:
- usage_log_repo.go: 保留 groupID 和 stream 参数,同时合并上游的
account_rate_multiplier 逻辑
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-15 13:09:26 +08:00
longgexx
82743704e4
fix(test): 添加测试辅助函数 truncateToDayUTC 修复编译错误
...
在 usage_log_repo_integration_test.go 中添加本地的 truncateToDayUTC
辅助函数,修复因主代码重命名该函数导致的测试编译错误。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-15 11:42:35 +08:00
Wesley Liddick
27214f8657
Merge pull request #285 from IanShaw027/fix/ops-bug
...
feat(ops): 增强错误日志管理、告警静默和前端 UI 优化
2026-01-15 11:26:16 +08:00
Wesley Liddick
28de614dfb
Merge pull request #282 from LLLLLLiulei/feat/ip-management-enhancements
...
feat: enhance proxy management
2026-01-15 11:23:17 +08:00
longgexx
850183c269
fix(dashboard): 修复预聚合表使用UTC时区导致今日统计不准确的问题
...
将 dashboard_aggregation_repo.go 和 usage_log_repo.go 中的时区处理
从 UTC 改为使用服务器配置时区(默认 Asia/Shanghai),确保"今日"
统计数据与用户预期一致。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-15 11:22:13 +08:00
yangjianbo
52ad7c6e9c
Merge branch 'main' into dev
2026-01-15 09:30:29 +08:00
longgexx
5aaaffe4d1
fix(dashboard): 修复仪表盘今日统计使用UTC时区的问题
...
将仪表盘统计中的"今日"时间范围从UTC时区改为服务器配置时区,
使其与使用记录页面保持一致。
修改内容:
- GetDashboardStats: 使用 timezone.Now() 和 timezone.Today()
- GetDashboardStatsWithRange: 同上
影响的统计项:
- 今日请求 (TodayRequests)
- 今日 Token (TodayTokens)
- 今日费用 (TodayCost/TodayActualCost)
- 今日新用户 (TodayNewUsers)
- 今日活跃用户 (ActiveUsers)
2026-01-15 09:12:16 +08:00
IanShaw027
2daf13c4c8
style(backend): 修复 ops_service.go 代码格式
2026-01-15 00:04:37 +08:00
IanShaw027
2a6fb1e456
feat(ops): 添加用户信息显示和搜索功能
...
- 在错误日志列表和详情中显示用户邮箱
- 在 GetErrorLogByID 中关联 users 表获取用户邮箱
- 在 OpsErrorLogFilter 中添加 UserQuery 字段
- 在 buildOpsErrorLogsWhere 中添加用户邮箱搜索条件
- 在 GetErrorLogs handler 中支持 user_query 参数
2026-01-14 23:56:45 +08:00
IanShaw027
9e6cd36af4
feat(ops): 添加上游响应体字段到错误事件
...
- 在 OpsUpstreamErrorEvent 中添加 UpstreamResponseBody 字段
- 用于存储上游服务返回的响应内容
- 区分客户端响应和上游响应
2026-01-14 23:52:36 +08:00
IanShaw027
f25f992a30
fix(ops): 错误详情中显示账号和分组名称
...
- 在 GetErrorLogByID 查询中添加 LEFT JOIN 关联查询
- 关联 accounts 和 groups 表获取名称
- 填充 AccountName 和 GroupName 字段
2026-01-14 23:52:00 +08:00
IanShaw027
841d7ef2f2
fix(lint): 修复 golangci-lint 检查问题
...
- 格式化代码(gofmt)
- 修复空指针检查(staticcheck)
- 删除未使用的函数(unused)
2026-01-14 23:49:27 +08:00
IanShaw027
a7a49be850
refactor(ops): 使用TTFT替代Duration作为健康分数指标
...
- 业务健康分数:错误率 50% + TTFT 50%
- TTFT 阈值:1s → 100分,3s → 0分
- TTFT 对 AI 服务的用户体验更有意义
- 更新所有相关测试用例期望值
2026-01-14 23:47:43 +08:00
IanShaw027
d5eab7da3b
refactor(ops): 优化健康分数计算逻辑和阈值
...
- 移除 SLA 组件(与错误率重复)
- 恢复延迟组件,阈值调整为 1s-2s
- 错误率阈值调整为 1%-10%(更宽松)
- 业务健康分数:错误率 50% + 延迟 50%
- 更新所有相关测试用例期望值
2026-01-14 23:43:12 +08:00
IanShaw027
9b10241561
test(ops): 修复健康分数测试用例期望值
...
- 更新 TestComputeBusinessHealth 中 SLA 95% 边界测试的期望值
- 更新 TestComputeDashboardHealthScore 中中等健康度测试的期望值
- 适配移除延迟组件后的新健康分数计算逻辑
2026-01-14 23:39:09 +08:00
IanShaw027
9584af5cb4
fix(ops): 优化错误日志查询和详情展示
...
- 新增 GetErrorLogByID 接口用于获取单个错误日志详情
- 优化 GetErrorLogs 过滤逻辑,简化参数处理
- 简化前端错误详情模态框代码,提升可维护性
- 更新相关 API 接口和 i18n 翻译
2026-01-14 23:16:01 +08:00
longgexx
6fabddcb0b
fix(test): 更新集成测试以匹配新的筛选参数签名
...
更新 usage_log_repo_integration_test.go 中的测试用例,
使其与 GetUsageTrendWithFilters 和 GetModelStatsWithFilters
方法的新签名保持一致。
2026-01-14 22:29:14 +08:00
longgexx
5efeabb0c6
fix(admin): 修复使用记录页面趋势图筛选联动和日期选择问题
...
修复两个问题:
1. Token使用趋势图和模型分布图未响应筛选条件
2. 上午时段选择今天刷新后日期回退到前一天
前端修改:
- 更新 dashboard API 类型定义,添加 model、account_id、group_id、stream 参数支持
- 修改 UsageView 趋势图加载逻辑,传递所有筛选参数到后端
- 修复日期格式化函数,使用本地时区避免 UTC 转换导致的日期偏移
后端修改:
- Handler 层:接收并解析所有筛选参数(model、account_id、group_id、stream)
- Service 层:传递完整的筛选参数到 Repository 层
- Repository 层:SQL 查询动态添加所有过滤条件
- 更新接口定义和测试 mock 以保持一致性
影响范围:
- /admin/dashboard/trend 端点现支持完整筛选
- /admin/dashboard/models 端点现支持完整筛选
- 用户在后台使用记录页面选择任意筛选条件时,趋势图和模型分布图会实时响应
- 日期选择器在任何时区下都能正确保持今天的选择
2026-01-14 22:02:56 +08:00
longgexx
806f402bba
fix(admin): 修复使用记录页面趋势图筛选联动和日期选择问题
...
修复两个问题:
1. Token使用趋势图和模型分布图未响应筛选条件
2. 上午时段选择今天刷新后日期回退到前一天
前端修改:
- 更新 dashboard API 类型定义,添加 model、account_id、group_id、stream 参数支持
- 修改 UsageView 趋势图加载逻辑,传递所有筛选参数到后端
- 修复日期格式化函数,使用本地时区避免 UTC 转换导致的日期偏移
后端修改:
- Handler 层:接收并解析所有筛选参数(model、account_id、group_id、stream)
- Service 层:传递完整的筛选参数到 Repository 层
- Repository 层:SQL 查询动态添加所有过滤条件
- 更新接口定义和所有调用点以保持一致性
影响范围:
- /admin/dashboard/trend 端点现支持完整筛选
- /admin/dashboard/models 端点现支持完整筛选
- 用户在后台使用记录页面选择任意筛选条件时,趋势图和模型分布图会实时响应
- 日期选择器在任何时区下都能正确保持今天的选择
2026-01-14 21:52:50 +08:00
LLLLLLiulei
02cb14c7b8
test: fix proxy repo stub
2026-01-14 19:56:19 +08:00
LLLLLLiulei
9bdb45be7c
feat: enhance proxy management
2026-01-14 19:45:29 +08:00
墨颜
ec24a3c361
Merge branch 'Wei-Shaw:main' into main
2026-01-14 16:42:30 +08:00
墨颜
d89e797bfc
Merge branch 'main' of https://github.com/whoismonay/sub2api
2026-01-14 16:30:32 +08:00
IanShaw027
55e469c7fe
fix(ops): 优化错误日志过滤和查询逻辑
...
后端改动:
- 添加 resolved 参数默认值处理(向后兼容,默认显示未解决错误)
- 新增 status_codes_other 查询参数支持
- 移除 service 层的高级设置过滤逻辑,简化错误日志查询流程
前端改动:
- 完善错误日志相关组件的国际化支持
- 优化 Ops 监控面板和设置对话框的用户体验
2026-01-14 16:26:33 +08:00
墨颜
fb99ceacc7
feat(计费): 支持账号计费倍率快照与统计展示
...
- 新增 accounts.rate_multiplier(默认 1.0,允许 0)
- 使用 usage_logs.account_rate_multiplier 记录倍率快照,避免历史回算
- 统计/导出/管理端展示账号口径费用(total_cost * account_rate_multiplier)
2026-01-14 16:12:08 +08:00
yangjianbo
daf10907e4
fix(认证): 修复 OAuth token 缓存失效与 401 处理
...
新增 token 缓存失效接口并在刷新后清理
401 限流支持自定义规则与可配置冷却时间
补齐缓存失效与 401 处理测试
测试: make test
2026-01-14 15:55:44 +08:00
Wesley Liddick
b3b2868f55
Merge pull request #278 from IanShaw027/fix/openai-account-schedulability-check
...
fix(网关): 修复账号选择中的调度器快照延迟问题
2026-01-14 15:52:35 +08:00
ianshaw
25b00abca1
fix(网关): 修复账号选择中的调度器快照延迟问题
...
## 问题描述
调度器快照更新存在0.5-1秒的延迟(Outbox轮询间隔),导致在账号被限流或过载后的短时间窗口内,
可能仍会被选中,造成请求失败。
## 根本原因
账号选择逻辑依赖调度器快照(listSchedulableAccounts),但快照更新有延迟:
- Outbox轮询: 每1秒检查一次变更事件
- 全量重建: 每300秒重建一次
- 时间窗口: 账号状态变更后0.5-1秒内,快照可能未更新
## 解决方案
在账号选择循环中添加IsSchedulable()实时检查,作为第二道防线:
1. 第一道防线: 调度器快照过滤(可能有延迟)
2. 第二道防线: IsSchedulable()实时检查(本次修复)
IsSchedulable()会检查:
- RateLimitResetAt: 限流重置时间
- OverloadUntil: 过载持续时间
- TempUnschedulableUntil: 临时不可调度时间
- Status: 账号状态
- Schedulable: 可调度标志
## 修改范围
### OpenAI Gateway Service
- SelectAccountForModelWithExclusions: 添加IsSchedulable()检查
- SelectAccountWithLoadAwareness: 添加IsSchedulable()检查
### Gateway Service (Claude/Gemini/Antigravity)
- 负载感知选择候选账号筛选: 添加IsSchedulable()检查
- selectAccountForModelWithPlatform: 添加IsSchedulable()检查
- selectAccountWithMixedScheduling: 添加IsSchedulable()检查
### 测试用例
- OpenAI: 添加2个测试用例验证限流账号过滤
- Gateway: 添加2个测试用例验证限流和过载账号过滤
### 其他修复
- ops_repo_preagg.go: 修复platform为NULL时的聚合问题
## 测试结果
所有单元测试通过 ✅
2026-01-13 22:49:26 -08:00
IanShaw027
8d0767352b
fix(ops): 修复ops handler逻辑
2026-01-14 14:30:41 +08:00
IanShaw027
63711067e6
refactor(ops): 完善gateway服务ops集成
2026-01-14 14:30:00 +08:00
IanShaw027
7158b38897
refactor(ops): 优化ops repository数据访问层
2026-01-14 14:29:39 +08:00
IanShaw027
7f317b9093
feat(ops): 增强ops核心服务功能和重试机制
2026-01-14 14:29:19 +08:00
IanShaw027
7c4309ea24
feat(ops): 添加ops handler和路由配置
2026-01-14 14:29:01 +08:00
IanShaw027
060699c3b8
refactor(ops): 更新gateway服务集成ops功能
2026-01-14 12:40:49 +08:00
IanShaw027
2ca6c631ac
refactor(ops): 重构ops handler和repository层
2026-01-14 12:40:34 +08:00
IanShaw027
967e25878f
refactor(ops): 重构ops核心服务层代码
2026-01-14 12:40:12 +08:00
IanShaw027
182683814b
refactor(ops): 移除duration相关告警指标,简化监控配置
...
主要改动:
- 移除 p95_latency_ms 和 p99_latency_ms 告警指标类型
- 移除配置中的 latency_p99_ms_max 阈值设置
- 简化健康分数计算(移除latency权重,重新归一化SLA和错误率)
- 移除duration相关的诊断规则和阈值检查
- 统一术语:延迟 → 请求时长
- 保留duration数据展示,但不再用于告警判断
- 聚焦TTFT作为主要的响应速度告警指标
影响范围:
- Backend: handler, service, models, tests
- Frontend: API types, i18n, components
2026-01-14 10:52:56 +08:00
yangjianbo
9c567fad92
fix(网关): 优化 OAuth 请求中 store 参数的处理逻辑
2026-01-14 09:46:10 +08:00
IanShaw027
33f58d583d
fix(ops): 修复告警状态验证和错误处理逻辑
...
- 增强告警事件状态验证,添加合法状态值检查
- 移除重试逻辑中的遗留字段赋值
- 修正仓库不可用时的错误类型
- 格式化测试文件代码
2026-01-14 09:39:18 +08:00
yangjianbo
3663951d11
fix(网关): OAuth 请求强制 store=false
...
避免上游 Store 必须为 false 的错误
仅在缺失或 true 时写回 store
测试: go test ./internal/service -run TestApplyCodexOAuthTransform
测试: make test-backend(golangci-lint 已单独执行)
2026-01-14 09:17:58 +08:00
IanShaw027
659df6e220
feat(handler): 新增ops管理接口和路由
...
- 添加告警静默管理接口
- 扩展错误日志查询和操作接口
- 新增重试和解决状态相关端点
- 完善错误日志记录功能
2026-01-14 09:03:35 +08:00
IanShaw027
d601768016
feat(service): 增强ops业务逻辑和告警功能
...
- 实现告警静默功能的业务逻辑
- 优化错误分类和重试机制
- 扩展告警评估和通知功能
- 完善错误解决和重试结果处理
2026-01-14 09:03:16 +08:00
IanShaw027
16ddc6a83b
feat(repository): 扩展ops数据访问层功能
...
- 新增告警静默相关数据库操作
- 增强错误日志查询和统计功能
- 优化重试结果和解决状态的存储
2026-01-14 09:03:01 +08:00