1. 31 Jan, 2026 1 commit
  2. 30 Jan, 2026 1 commit
  3. 28 Jan, 2026 1 commit
    • shaw's avatar
      修复调度器空缓存导致的竞态条件bug · e12dd079
      shaw authored
      当新分组创建后立即绑定账号时,调度器会错误地将空快照视为有效缓存命中,
      导致返回没有可调度的账号。现在空快照会触发数据库回退查询。
      e12dd079
  4. 27 Jan, 2026 2 commits
  5. 26 Jan, 2026 1 commit
    • shaw's avatar
      feat(auth): 实现 TOTP 双因素认证功能 · 1245f07a
      shaw authored
      新增功能:
      - 支持 Google Authenticator 等应用进行 TOTP 二次验证
      - 用户可在个人设置中启用/禁用 2FA
      - 登录时支持 TOTP 验证流程
      - 管理后台可全局开关 TOTP 功能
      
      安全增强:
      - TOTP 密钥使用 AES-256-GCM 加密存储
      - 添加 TOTP_ENCRYPTION_KEY 配置项,必须手动配置才能启用功能
      - 防止服务重启导致加密密钥变更使用户无法登录
      - 验证失败次数限制,防止暴力破解
      
      配置说明:
      - Docker 部署:在 .env 中设置 TOTP_ENCRYPTION_KEY
      - 非 Docker 部署:在 config.yaml 中设置 totp.encryption_key
      - 生成密钥命令:openssl rand -hex 32
      1245f07a
  6. 24 Jan, 2026 3 commits
    • shaw's avatar
      feat(auth): 密码重置邮件队列化与限流优化 · 9cc83525
      shaw authored
      - 邮件发送改为异步队列处理,避免并发导致发送失败
      - 新增 Email 维度限流(30秒冷却期),防止邮件轰炸
      - Token 验证使用常量时间比较,防止时序攻击
      - 重构代码消除冗余,提取公共验证逻辑
      9cc83525
    • shaw's avatar
      fix(test): 修复订阅相关测试失败问题 · 43a1031e
      shaw authored
      1. 使用未来日期(2099年)作为测试订阅的过期时间,避免
         normalizeSubscriptionStatus 将测试数据标记为过期
      2. 修复 List 方法调用参数不足的问题(新增 sortBy/sortOrder 参数)
      43a1031e
    • shaw's avatar
      feat(subscription): 订阅过期状态自动更新与服务端排序 · b0aa2354
      shaw authored
      - 新增 SubscriptionExpiryService 定时任务,每分钟更新过期订阅状态
      - 订阅列表支持服务端排序(按过期时间、状态、创建时间)
      - 实时显示正确的过期状态,无需等待定时任务
      - 允许对已过期订阅进行续期操作
      - DataTable 组件支持 serverSideSort 模式
      b0aa2354
  7. 23 Jan, 2026 1 commit
  8. 20 Jan, 2026 3 commits
  9. 19 Jan, 2026 6 commits
  10. 18 Jan, 2026 5 commits
  11. 17 Jan, 2026 1 commit
    • ianshaw's avatar
      fix(ops): 统一 request-errors 和 SLA 的错误分类逻辑 · bc1d7edc
      ianshaw authored
      修复 request-errors 接口与 Dashboard Overview SLA 计算不一致的问题:
      - errors 视图现在只排除业务限制错误(余额不足、并发限制等)
      - 上游 429/529 错误现在包含在 errors 视图中,与 SLA 计算保持一致
      - excluded 视图现在只显示业务限制错误
      
      这确保了 request-errors 接口和 Dashboard 的 error_count_sla 使用相同的过滤逻辑。
      bc1d7edc
  12. 16 Jan, 2026 5 commits
  13. 15 Jan, 2026 9 commits
  14. 14 Jan, 2026 1 commit
    • IanShaw027's avatar
      feat(ops): 添加用户信息显示和搜索功能 · 2a6fb1e4
      IanShaw027 authored
      - 在错误日志列表和详情中显示用户邮箱
      - 在 GetErrorLogByID 中关联 users 表获取用户邮箱
      - 在 OpsErrorLogFilter 中添加 UserQuery 字段
      - 在 buildOpsErrorLogsWhere 中添加用户邮箱搜索条件
      - 在 GetErrorLogs handler 中支持 user_query 参数
      2a6fb1e4