1. 15 Jan, 2026 6 commits
  2. 14 Jan, 2026 32 commits
    • IanShaw027's avatar
      2daf13c4
    • IanShaw027's avatar
      feat(ops): 添加用户信息显示和搜索功能 · 2a6fb1e4
      IanShaw027 authored
      - 在错误日志列表和详情中显示用户邮箱
      - 在 GetErrorLogByID 中关联 users 表获取用户邮箱
      - 在 OpsErrorLogFilter 中添加 UserQuery 字段
      - 在 buildOpsErrorLogsWhere 中添加用户邮箱搜索条件
      - 在 GetErrorLogs handler 中支持 user_query 参数
      2a6fb1e4
    • IanShaw027's avatar
      feat(ops): 添加上游响应体字段到错误事件 · 9e6cd36a
      IanShaw027 authored
      - 在 OpsUpstreamErrorEvent 中添加 UpstreamResponseBody 字段
      - 用于存储上游服务返回的响应内容
      - 区分客户端响应和上游响应
      9e6cd36a
    • IanShaw027's avatar
      fix(ops): 错误详情中显示账号和分组名称 · f25f992a
      IanShaw027 authored
      - 在 GetErrorLogByID 查询中添加 LEFT JOIN 关联查询
      - 关联 accounts 和 groups 表获取名称
      - 填充 AccountName 和 GroupName 字段
      f25f992a
    • IanShaw027's avatar
      fix(lint): 修复 golangci-lint 检查问题 · 841d7ef2
      IanShaw027 authored
      - 格式化代码(gofmt)
      - 修复空指针检查(staticcheck)
      - 删除未使用的函数(unused)
      841d7ef2
    • IanShaw027's avatar
      refactor(ops): 使用TTFT替代Duration作为健康分数指标 · a7a49be8
      IanShaw027 authored
      - 业务健康分数:错误率 50% + TTFT 50%
      - TTFT 阈值:1s → 100分,3s → 0分
      - TTFT 对 AI 服务的用户体验更有意义
      - 更新所有相关测试用例期望值
      a7a49be8
    • IanShaw027's avatar
      refactor(ops): 优化健康分数计算逻辑和阈值 · d5eab7da
      IanShaw027 authored
      - 移除 SLA 组件(与错误率重复)
      - 恢复延迟组件,阈值调整为 1s-2s
      - 错误率阈值调整为 1%-10%(更宽松)
      - 业务健康分数:错误率 50% + 延迟 50%
      - 更新所有相关测试用例期望值
      d5eab7da
    • IanShaw027's avatar
      test(ops): 修复健康分数测试用例期望值 · 9b102415
      IanShaw027 authored
      - 更新 TestComputeBusinessHealth 中 SLA 95% 边界测试的期望值
      - 更新 TestComputeDashboardHealthScore 中中等健康度测试的期望值
      - 适配移除延迟组件后的新健康分数计算逻辑
      9b102415
    • IanShaw027's avatar
      fix(ops): 优化错误日志查询和详情展示 · 9584af5c
      IanShaw027 authored
      - 新增 GetErrorLogByID 接口用于获取单个错误日志详情
      - 优化 GetErrorLogs 过滤逻辑,简化参数处理
      - 简化前端错误详情模态框代码,提升可维护性
      - 更新相关 API 接口和 i18n 翻译
      9584af5c
    • longgexx's avatar
      fix(test): 更新集成测试以匹配新的筛选参数签名 · 6fabddcb
      longgexx authored
         更新 usage_log_repo_integration_test.go 中的测试用例,
         使其与 GetUsageTrendWithFilters 和 GetModelStatsWithFilters
         方法的新签名保持一致。
      6fabddcb
    • longgexx's avatar
      fix(admin): 修复使用记录页面趋势图筛选联动和日期选择问题 · 5efeabb0
      longgexx authored
         修复两个问题:
         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 端点现支持完整筛选
         - 用户在后台使用记录页面选择任意筛选条件时,趋势图和模型分布图会实时响应
         - 日期选择器在任何时区下都能正确保持今天的选择
      5efeabb0
    • longgexx's avatar
      fix(admin): 修复使用记录页面趋势图筛选联动和日期选择问题 · 806f402b
      longgexx authored
         修复两个问题:
         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 端点现支持完整筛选
         - 用户在后台使用记录页面选择任意筛选条件时,趋势图和模型分布图会实时响应
         - 日期选择器在任何时区下都能正确保持今天的选择
      806f402b
    • LLLLLLiulei's avatar
      test: fix proxy repo stub · 02cb14c7
      LLLLLLiulei authored
      02cb14c7
    • LLLLLLiulei's avatar
      feat: enhance proxy management · 9bdb45be
      LLLLLLiulei authored
      9bdb45be
    • IanShaw027's avatar
      fix(ops): 优化错误日志过滤和查询逻辑 · 55e469c7
      IanShaw027 authored
      后端改动:
      - 添加 resolved 参数默认值处理(向后兼容,默认显示未解决错误)
      - 新增 status_codes_other 查询参数支持
      - 移除 service 层的高级设置过滤逻辑,简化错误日志查询流程
      
      前端改动:
      - 完善错误日志相关组件的国际化支持
      - 优化 Ops 监控面板和设置对话框的用户体验
      55e469c7
    • 墨颜's avatar
      feat(计费): 支持账号计费倍率快照与统计展示 · fb99ceac
      墨颜 authored
      - 新增 accounts.rate_multiplier(默认 1.0,允许 0)
      - 使用 usage_logs.account_rate_multiplier 记录倍率快照,避免历史回算
      - 统计/导出/管理端展示账号口径费用(total_cost * account_rate_multiplier)
      fb99ceac
    • ianshaw's avatar
      fix(网关): 修复账号选择中的调度器快照延迟问题 · 25b00abc
      ianshaw authored
      ## 问题描述
      调度器快照更新存在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时的聚合问题
      
      ## 测试结果
      所有单元测试通过 
      25b00abc
    • IanShaw027's avatar
      fix(ops): 修复ops handler逻辑 · 8d076735
      IanShaw027 authored
      8d076735
    • IanShaw027's avatar
      refactor(ops): 完善gateway服务ops集成 · 63711067
      IanShaw027 authored
      63711067
    • IanShaw027's avatar
      7158b388
    • IanShaw027's avatar
      7f317b90
    • IanShaw027's avatar
      feat(ops): 添加ops handler和路由配置 · 7c4309ea
      IanShaw027 authored
      7c4309ea
    • IanShaw027's avatar
      060699c3
    • IanShaw027's avatar
      2ca6c631
    • IanShaw027's avatar
      refactor(ops): 重构ops核心服务层代码 · 967e2587
      IanShaw027 authored
      967e2587
    • IanShaw027's avatar
      refactor(ops): 移除duration相关告警指标,简化监控配置 · 18268381
      IanShaw027 authored
      主要改动:
      - 移除 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
      18268381
    • yangjianbo's avatar
    • IanShaw027's avatar
      fix(ops): 修复告警状态验证和错误处理逻辑 · 33f58d58
      IanShaw027 authored
      - 增强告警事件状态验证,添加合法状态值检查
      - 移除重试逻辑中的遗留字段赋值
      - 修正仓库不可用时的错误类型
      - 格式化测试文件代码
      33f58d58
    • yangjianbo's avatar
      fix(网关): OAuth 请求强制 store=false · 3663951d
      yangjianbo authored
      避免上游 Store 必须为 false 的错误
      
      仅在缺失或 true 时写回 store
      
      测试: go test ./internal/service -run TestApplyCodexOAuthTransform
      
      测试: make test-backend(golangci-lint 已单独执行)
      3663951d
    • IanShaw027's avatar
      feat(handler): 新增ops管理接口和路由 · 659df6e2
      IanShaw027 authored
      - 添加告警静默管理接口
      - 扩展错误日志查询和操作接口
      - 新增重试和解决状态相关端点
      - 完善错误日志记录功能
      659df6e2
    • IanShaw027's avatar
      feat(service): 增强ops业务逻辑和告警功能 · d6017680
      IanShaw027 authored
      - 实现告警静默功能的业务逻辑
      - 优化错误分类和重试机制
      - 扩展告警评估和通知功能
      - 完善错误解决和重试结果处理
      d6017680
    • IanShaw027's avatar
      feat(repository): 扩展ops数据访问层功能 · 16ddc6a8
      IanShaw027 authored
      - 新增告警静默相关数据库操作
      - 增强错误日志查询和统计功能
      - 优化重试结果和解决状态的存储
      16ddc6a8
  3. 13 Jan, 2026 2 commits