1. 15 Jan, 2026 28 commits
    • IanShaw027's avatar
      refactor(ops): 优化任务心跳和组件刷新机制 · 23aa69f5
      IanShaw027 authored
      后端改动:
      - 添加 ops_job_heartbeats.last_result 字段记录任务执行结果
      - 优化告警评估器统计信息(规则数/事件数/邮件数)
      - 统一各定时任务的心跳记录格式
      
      前端改动:
      - 重构 OpsConcurrencyCard 使用父组件统一控制刷新节奏
      - 移除独立的 5 秒刷新定时器,改用 refreshToken 机制
      - 修复 TypeScript 类型错误
      23aa69f5
    • IanShaw027's avatar
      fix(ops): 请求时长详情显示所有请求 · e93f0864
      IanShaw027 authored
      - 移除请求时长卡片详情按钮的 min_duration_ms 参数限制
      - 现在点击详情会显示所有请求,按时长倒序排列
      - 不再只显示 P99 以上的请求
      e93f0864
    • IanShaw027's avatar
      feat(ops): 添加自定义时间范围选择功能 · 930e9ee5
      IanShaw027 authored
      功能特性:
      - 在时间段选择器中增加"自定义"选项
      - 点击后弹出对话框,支持选择任意时间范围
      - 使用 HTML5 datetime-local 输入框,体验友好
      - 自定义时显示格式化的时间范围标签(MM-DD HH:mm ~ MM-DD HH:mm)
      - 默认初始化为最近1小时
      
      技术实现:
      - 扩展 TimeRange 类型支持 'custom'
      - 添加 customStartTime 和 customEndTime 状态管理
      - 创建 buildApiParams 辅助函数统一处理 API 参数
      - 当选择自定义时,使用 start_time 和 end_time 参数替代 time_range
      - 更新所有相关 API 调用支持自定义时间范围
      
      国际化:
      - 添加"自定义"、"开始时间"、"结束时间"翻译
      930e9ee5
    • IanShaw027's avatar
      refactor(ops): 优化阈值检查系统和布局 · 38961ba1
      IanShaw027 authored
      阈值检查系统优化:
      - 引入三级阈值系统(normal/warning/critical)
      - 统一阈值判断逻辑,支持警告和严重两个级别
      - 移除硬编码的 TTFT 颜色判断,改用阈值配置
      - 新增 getThresholdColorClass 统一颜色映射
      
      布局优化:
      - 优化详细指标在卡片内的响应式布局
      - 改进宽屏下的卡片布局显示
      - 优化指标数值的对齐和间距
      38961ba1
    • IanShaw027's avatar
      refactor(ops): 调整健康得分权重 · 93b5b747
      IanShaw027 authored
      - 业务健康权重从 70% 提升到 80%
      - 基础设施健康权重从 30% 降低到 20%
      - 更加关注业务指标(SLA、错误率等)对整体健康的影响
      93b5b747
    • shaw's avatar
      5f890e85
    • Wesley Liddick's avatar
      Merge pull request #297 from LLLLLLiulei/feat/ip-management-enhancements · 10bc7f70
      Wesley Liddick authored
      feat: add proxy geo location
      10bc7f70
    • yangjianbo's avatar
      Merge branch 'test' · a65fd9de
      yangjianbo authored
      a65fd9de
    • yangjianbo's avatar
      fix(账号管理): 移除调度切换后的冗余列表刷新 · 1bb4c76d
      yangjianbo authored
      
      
      切换账号调度状态后,updateSchedulableInList 已完成局部更新,
      无需再调用 load() 刷新整个列表。此修改减少不必要的 API 请求,
      避免 UI 闪烁。
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      1bb4c76d
    • LLLLLLiulei's avatar
      feat: add proxy geo location · aab44f9f
      LLLLLLiulei authored
      aab44f9f
    • yangjianbo's avatar
      Merge branch 'test' · 0a848e75
      yangjianbo authored
      0a848e75
    • yangjianbo's avatar
      feat: merge dev · 90bce60b
      yangjianbo authored
      90bce60b
    • 程序猿MT's avatar
      Merge branch 'Wei-Shaw:main' into main · c22d51ee
      程序猿MT authored
      c22d51ee
    • yangjianbo's avatar
      fix(认证): OAuth 401 直接标记错误状态 · a458e684
      yangjianbo authored
      - OAuth 401 清理缓存并设置错误状态
      
      - 移除 oauth_401_cooldown_minutes 配置及示例
      
      - 更新 401 相关单测
      
      破坏性变更: OAuth 401 不再临时不可调度,需手动恢复
      a458e684
    • LLLLLLiulei's avatar
      Revert "feat: add proxy geo location" · 87b46629
      LLLLLLiulei authored
      This reverts commit 09c4f82927ddce1c9528c146a26457f53d02b034.
      87b46629
    • LLLLLLiulei's avatar
      feat: add proxy geo location · 3a100339
      LLLLLLiulei authored
      3a100339
    • Wesley Liddick's avatar
      Merge pull request #284 from longgexx/main · 47eb3c88
      Wesley Liddick authored
      fix(admin): 修复使用记录页面趋势图筛选联动和日期选择问题
      47eb3c88
    • longgexx's avatar
      merge: 合并上游 upstream/main 分支 · 4672a6fa
      longgexx authored
      
      
      解决冲突:
      - usage_log_repo.go: 保留 groupID 和 stream 参数,同时合并上游的
        account_rate_multiplier 逻辑
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      4672a6fa
    • longgexx's avatar
      fix(test): 添加测试辅助函数 truncateToDayUTC 修复编译错误 · 82743704
      longgexx authored
      
      
      在 usage_log_repo_integration_test.go 中添加本地的 truncateToDayUTC
      辅助函数,修复因主代码重命名该函数导致的测试编译错误。
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      82743704
    • Wesley Liddick's avatar
      Merge pull request #289 from IanShaw027/fix/mobile-ui · cc2d064a
      Wesley Liddick authored
      fix(mobile): 优化移动端表格、操作栏和弹窗显示
      cc2d064a
    • Wesley Liddick's avatar
      Merge pull request #285 from IanShaw027/fix/ops-bug · 27214f86
      Wesley Liddick authored
      feat(ops): 增强错误日志管理、告警静默和前端 UI 优化
      27214f86
    • Wesley Liddick's avatar
      Merge pull request #282 from LLLLLLiulei/feat/ip-management-enhancements · 28de614d
      Wesley Liddick authored
      feat: enhance proxy management
      28de614d
    • longgexx's avatar
      fix(dashboard): 修复预聚合表使用UTC时区导致今日统计不准确的问题 · 850183c2
      longgexx authored
      
      
      将 dashboard_aggregation_repo.go 和 usage_log_repo.go 中的时区处理
      从 UTC 改为使用服务器配置时区(默认 Asia/Shanghai),确保"今日"
      统计数据与用户预期一致。
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      850183c2
    • shaw's avatar
    • IanShaw027's avatar
      fix(mobile): 修复 UsersView 更多菜单定位并统一逻辑 · 1d231c6c
      IanShaw027 authored
      **问题描述**:
      - UsersView 的"更多"菜单仍然出现在页面左上角错误位置
      - UsersView 使用 actionButtonRefs Map 获取按钮元素,导致定位失败
      - UsersView 和 AccountsView 的菜单定位逻辑不一致,难以维护
      
      **解决方案**:
      - 修改 openActionMenu 函数签名,添加 MouseEvent 参数
      - 使用 e.currentTarget 直接从事件对象获取触发元素
      - 移除不必要的 actionButtonRefs Map 和 setActionButtonRef 函数
      - 统一菜单宽度为 200px(与 AccountsView 一致)
      - 完全复制 AccountsView 的定位逻辑,确保两者行为一致
      
      **技术要点**:
      - 移动端:菜单居中对齐按钮,优先显示在按钮下方
      - 桌面端:使用鼠标位置定位,添加边界检测
      - 简化代码,移除不必要的防御性检查
      - 两个组件的菜单定位逻辑完全一致,便于维护
      1d231c6c
    • IanShaw027's avatar
      fix(mobile): 优化移动端表格、操作栏和弹窗显示 · 20c71acb
      IanShaw027 authored
      **问题描述**:
      - 表格在移动端显示列过多,需要横向滚动,内容被截断
      - 顶部操作栏按钮拥挤,占用过多空间
      - 弹窗表单在小屏幕上布局不合理
      - "更多"操作菜单定位错误,位置过高或超出屏幕
      - 滚动页面时菜单不会自动关闭,与卡片分离
      
      **解决方案**:
      
      1. **DataTable 组件 - 移动端卡片视图**
         - 在 < 768px 时自动切换到卡片布局
         - 每个表格行渲染为独立卡片,所有字段清晰可见
         - 操作按钮在卡片底部,触摸目标足够大
         - 支持深色模式,包含加载和空状态
         - 自动应用于所有使用 DataTable 的管理页面
      
      2. **UsersView 顶部操作栏优化**
         - 移动端:搜索框全宽 + 次要按钮显示为图标 + 创建按钮突出
         - 桌面端:保持原有布局(图标 + 文字)
         - 使用响应式 Tailwind classes
      
      3. **UserCreateModal 弹窗优化**
         - 余额/并发数字段:移动端单列,桌面端双列
         - 弹窗边距:移动端 8px,桌面端 16px
      
      4. **操作菜单定位修复**
         - UsersView: 移动端菜单居中对齐按钮,智能定位
         - AccountsView: 移动端菜单优先显示在按钮下方
         - 所有情况下确保菜单不超出屏幕边界
         - 添加滚动监听,滚动时自动关闭菜单
      
      **影响范围**:
      - 所有使用 DataTable 的管理页面(8 个页面)自动获得移动端卡片视图
      - 用户管理和账号管理页面的操作菜单定位优化
      - 创建用户弹窗的响应式布局优化
      
      **技术要点**:
      - 使用 Tailwind 响应式断点(md:, sm:)
      - 触摸目标 ≥ 44px
      - 完整支持深色模式
      - 向后兼容,桌面端保持原有布局
      20c71acb
    • yangjianbo's avatar
      Merge branch 'main' into dev · 52ad7c6e
      yangjianbo authored
      52ad7c6e
    • longgexx's avatar
      fix(dashboard): 修复仪表盘今日统计使用UTC时区的问题 · 5aaaffe4
      longgexx authored
      将仪表盘统计中的"今日"时间范围从UTC时区改为服务器配置时区,
      使其与使用记录页面保持一致。
      
      修改内容:
      - GetDashboardStats: 使用 timezone.Now() 和 timezone.Today()
      - GetDashboardStatsWithRange: 同上
      
      影响的统计项:
      - 今日请求 (TodayRequests)
      - 今日 Token (TodayTokens)
      - 今日费用 (TodayCost/TodayActualCost)
      - 今日新用户 (TodayNewUsers)
      - 今日活跃用户 (ActiveUsers)
      5aaaffe4
  2. 14 Jan, 2026 12 commits