1. 08 Mar, 2026 1 commit
  2. 07 Mar, 2026 2 commits
  3. 05 Mar, 2026 3 commits
    • erio's avatar
      feat: add quota limit for API key accounts · 05527b13
      erio authored
      - Add configurable spending limit (quota_limit) for apikey-type accounts
      - Atomic quota accumulation via PostgreSQL JSONB operations on TotalCost
      - Scheduler filters out over-quota accounts with outbox-triggered snapshot refresh
      - Display quota usage ($used / $limit) in account capacity column
      - Add "Reset Quota" action in account menu to reset usage to zero
      - Editing account settings preserves quota_used (no accidental reset)
      - Covers all 3 billing paths: Anthropic, Gemini, OpenAI RecordUsage
      
      chore: bump version to 0.1.90.4
      05527b13
    • guoyongchang's avatar
      feat: 支持基于 crontab 的定时账号测试 · 3a089242
      guoyongchang authored
      
      
      每个测试计划绑定一个账号和一个模型,按 cron 表达式定期执行测试,
      保存历史结果并在前端账号管理页面中提供完整的增删改查和结果查看功能。
      
      主要变更:
      - 新增 scheduled_test_plans / scheduled_test_results 两张表及迁移
      - 后端 service 层:CRUD 服务 + 后台 cron runner(每分钟扫描到期计划并发执行)
      - RunTestBackground 方法通过 httptest 在内存中执行账号测试并解析 SSE 输出
      - Redis leader lock + pg_try_advisory_lock 双重保障多实例部署只执行一次
      - REST API:5 个管理端点(计划 CRUD + 结果查询)
      - 前端 ScheduledTestsPanel 组件:计划管理、启用开关、内联编辑、结果展开查看
      - 中英文 i18n 支持
      Co-Authored-By: default avatarClaude Opus 4.6 <noreply@anthropic.com>
      3a089242
    • shaw's avatar
      078fefed
  4. 04 Mar, 2026 1 commit
  5. 28 Feb, 2026 2 commits
    • QTom's avatar
      fix: address code review issues for RPM limiting feature · 60723757
      QTom authored
      - Use TxPipeline (MULTI/EXEC) instead of Pipeline for atomic INCR+EXPIRE
      - Filter negative values in GetBaseRPM(), update test expectation
      - Add RPM batch query (GetRPMBatch) to account List API
      - Add warn logs for RPM increment failures in gateway handler
      - Reset enableRpmLimit on BulkEditAccountModal close
      - Use union type 'tiered' | 'sticky_exempt' for rpmStrategy refs
      - Add design decision comments for rdb.Time() RTT trade-off
      60723757
    • yangjianbo's avatar
      feat(sync): full code sync from release · bb664d9b
      yangjianbo authored
      bb664d9b
  6. 26 Feb, 2026 1 commit
    • cagedbird043's avatar
      fix(frontend): 批量编辑添加跨平台模型映射警告与过滤 · e350aab1
      cagedbird043 authored
      - 新增 selectedPlatforms prop,从父组件传入选中账号的平台集合
      - 根据选中平台过滤模型列表与预设映射按钮,避免误操作
      - 混选多平台时显示 amber 警告横幅,提醒用户注意映射适用性
      - 仅警告不阻断,保持加法兼容
      e350aab1
  7. 14 Feb, 2026 3 commits
  8. 11 Feb, 2026 1 commit
    • kyx236's avatar
      feat(admin): Add group filtering for account listings · fe1d46a8
      kyx236 authored
      - Add groupID parameter to ListAccounts and ListWithFilters methods
      - Implement account filtering by group ID in repository query
      - Add group query parameter parsing in account handler
      - Update all ListAccounts/ListWithFilters call sites with groupID parameter
      - Add group filter UI component to AccountTableFilters
      - Add i18n translations for group filter label in English and Chinese
      - Update API contract and test stubs to reflect new signature
      - Enable filtering accounts by their assigned groups in admin panel
      fe1d46a8
  9. 06 Feb, 2026 1 commit
  10. 05 Feb, 2026 4 commits
    • shaw's avatar
      feat: 新增全局错误透传规则功能 · 39e05a2d
      shaw authored
      支持管理员配置上游错误如何返回给客户端:
      - 新增 ErrorPassthroughRule 数据模型和 Ent Schema
      - 实现规则的 CRUD API(/admin/error-passthrough-rules)
      - 支持按错误码、关键词匹配,支持 any/all 匹配模式
      - 支持按平台过滤(anthropic/openai/gemini/antigravity)
      - 支持透传或自定义响应状态码和错误消息
      - 实现两级缓存(Redis + 本地内存)和多实例同步
      - 集成到 gateway_handler 的错误处理流程
      - 新增前端管理界面组件
      - 新增单元测试覆盖核心匹配逻辑
      
      优化:
      - 移除 refreshLocalCache 中的冗余排序(数据库已排序)
      - 后端 Validate() 增加匹配条件非空校验
      39e05a2d
    • LLLLLLiulei's avatar
      feat: refine proxy export and toolbar layout · 0c660f83
      LLLLLLiulei authored
      0c660f83
    • LLLLLLiulei's avatar
      feat: add proxy import flow · ce9a247a
      LLLLLLiulei authored
      ce9a247a
    • LLLLLLiulei's avatar
      feat: add data import/export bundle · b4bd46d0
      LLLLLLiulei authored
      b4bd46d0
  11. 02 Feb, 2026 1 commit
  12. 23 Jan, 2026 1 commit
  13. 21 Jan, 2026 1 commit
  14. 19 Jan, 2026 2 commits
  15. 18 Jan, 2026 1 commit
  16. 16 Jan, 2026 2 commits
  17. 15 Jan, 2026 5 commits
    • IanShaw027's avatar
      refactor(ops): 简化自动刷新定时器逻辑 · 8b95d162
      IanShaw027 authored
      - 合并双定时器为单一倒计时定时器
      - 倒计时归零时触发数据刷新
      - 添加自定义时间范围的安全回退
      8b95d162
    • IanShaw027's avatar
      refactor(ops): 优化任务心跳和组件刷新机制 · 23aa69f5
      IanShaw027 authored
      后端改动:
      - 添加 ops_job_heartbeats.last_result 字段记录任务执行结果
      - 优化告警评估器统计信息(规则数/事件数/邮件数)
      - 统一各定时任务的心跳记录格式
      
      前端改动:
      - 重构 OpsConcurrencyCard 使用父组件统一控制刷新节奏
      - 移除独立的 5 秒刷新定时器,改用 refreshToken 机制
      - 修复 TypeScript 类型错误
      23aa69f5
    • yangjianbo's avatar
      fix(账号管理): 移除调度切换后的冗余列表刷新 · 1bb4c76d
      yangjianbo authored
      
      
      切换账号调度状态后,updateSchedulableInList 已完成局部更新,
      无需再调用 load() 刷新整个列表。此修改减少不必要的 API 请求,
      避免 UI 闪烁。
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      1bb4c76d
    • yangjianbo's avatar
      feat: merge dev · 90bce60b
      yangjianbo authored
      90bce60b
    • 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
  18. 14 Jan, 2026 1 commit
    • 墨颜's avatar
      feat(计费): 支持账号计费倍率快照与统计展示 · fb99ceac
      墨颜 authored
      - 新增 accounts.rate_multiplier(默认 1.0,允许 0)
      - 使用 usage_logs.account_rate_multiplier 记录倍率快照,避免历史回算
      - 统计/导出/管理端展示账号口径费用(total_cost * account_rate_multiplier)
      fb99ceac
  19. 12 Jan, 2026 1 commit
  20. 11 Jan, 2026 1 commit
    • yangjianbo's avatar
      fix(账号管理): 调度批量结果明细与刷新优化 · 32953405
      yangjianbo authored
      补充批量调度返回 success_ids/failed_ids 并增加合约/单测
      
      前端加入降级处理与部分失败提示,表格行使用稳定 key
      
      测试: make test-frontend
      
      测试: go test ./internal/service -run BulkUpdateAccounts -tags=unit
      
      测试: go test ./internal/server -run APIContracts -tags=unit
      32953405
  21. 09 Jan, 2026 3 commits
    • IanShaw027's avatar
      feat(admin): 添加账号批量调度开关功能 · 5e936fbf
      IanShaw027 authored
      - 后端:支持批量更新账号的 schedulable 字段
        - 在 BulkUpdateAccountsRequest 中添加 schedulable 参数
        - 在 AccountBulkUpdate 中添加 schedulable 字段支持
        - 更新 repository 层批量更新 SQL 逻辑
      - 前端:在账号管理页面添加批量调度控制
        - 新增"批量启用调度"和"批量停止调度"按钮
        - 添加 handleBulkToggleSchedulable 处理函数
        - 显示具体的成功提示信息(包含操作账号数量)
      - 国际化:添加批量调度相关中英文翻译
      - 优化:添加 search 参数标准化和验证(account_handler)
      5e936fbf
    • IanShaw027's avatar
      fix(fe): 修复中优先级表格功能问题 · 514f5802
      IanShaw027 authored
      修复的问题:
      
      1. **搜索和筛选防抖不同步**(AccountsView.vue)
         - 问题:筛选器使用 reload(立即),搜索使用 debouncedReload(300ms延迟)
         - 修复:统一使用 debouncedReload,避免多余的API调用
      
      2. **useTableLoader 竞态条件**(useTableLoader.ts)
         - 问题:finally 块检查 signal.aborted 而不是 controller 实例
         - 修复:检查 abortController === currentController
      
      3. **改进错误处理**(UsersView.vue)
         - 添加详细错误消息:error.response?.data?.detail || error.message
         - 用户可以看到具体的错误原因而不是通用消息
      
      4. **分页边界检查**(useTableLoader.ts, UsersView.vue)
         - 添加页码有效性检查:Math.max(1, Math.min(page, pagination.pages || 1))
         - 防止分页越界导致显示空表
      
      影响范围:
      - frontend/src/composables/useTableLoader.ts
      - frontend/src/views/admin/AccountsView.vue
      - frontend/src/views/admin/UsersView.vue
      
      测试:✓ 前端构建测试通过
      514f5802
    • IanShaw027's avatar
      fix(fe): 修复表格分页和基础功能问题 · ee9b9b39
      IanShaw027 authored
      修复的主要问题:
      
      1. **分页切换失效**(AccountsView.vue)
         - 修复 useTableLoader 未解构 handlePageSizeChange 函数
         - 添加 @update:pageSize 事件绑定到 Pagination 组件
      
      2. **内存泄漏修复**(多个文件)
         - UsersView.vue: 添加 searchTimeout 清理和 abortController.abort()
         - ProxiesView.vue: 添加 onUnmounted 钩子清理定时器
         - RedeemView.vue: 添加 onUnmounted 钩子清理定时器
      
      3. **分页重置问题**(UsersView.vue)
         - toggleBuiltInFilter: 切换筛选器时重置 pagination.page = 1
         - toggleAttributeFilter: 切换属性筛选时重置 pagination.page = 1
      
      影响范围:
      - frontend/src/views/admin/AccountsView.vue
      - frontend/src/views/admin/ProxiesView.vue
      - frontend/src/views/admin/RedeemView.vue
      - frontend/src/views/admin/UsersView.vue
      
      测试:✓ 前端构建测试通过
      ee9b9b39
  22. 07 Jan, 2026 1 commit
  23. 06 Jan, 2026 1 commit