1. 07 Feb, 2026 1 commit
  2. 02 Feb, 2026 1 commit
  3. 25 Jan, 2026 1 commit
  4. 24 Jan, 2026 1 commit
    • shaw's avatar
      feat(subscription): 订阅过期状态自动更新与服务端排序 · b0aa2354
      shaw authored
      - 新增 SubscriptionExpiryService 定时任务,每分钟更新过期订阅状态
      - 订阅列表支持服务端排序(按过期时间、状态、创建时间)
      - 实时显示正确的过期状态,无需等待定时任务
      - 允许对已过期订阅进行续期操作
      - DataTable 组件支持 serverSideSort 模式
      b0aa2354
  5. 19 Jan, 2026 1 commit
  6. 31 Dec, 2025 3 commits
    • NepetaLemon's avatar
      refactor: 移除 infrastructure 目录 (#108) · 2270a54f
      NepetaLemon authored
      * refactor: 迁移初始化 db 和 redis 到 repository
      
      * refactor: 迁移 errors 到 pkg
      2270a54f
    • shaw's avatar
      fix(billing): 修复限额为0时消费记录失败的问题 · c5b792ad
      shaw authored
      - 添加 normalizeLimit 函数,将 0 或负数限额规范化为 nil(无限制)
      - 简化 IncrementUsage,移除冗余的配额检查逻辑
        - 配额检查已在请求前由中间件和网关完成
        - 消费记录应无条件执行,确保数据完整性
      - 删除测试限额超出行为的无效集成测试
      c5b792ad
    • yangjianbo's avatar
      fix(数据层): 修复数据完整性与仓储一致性问题 · 5906f9ab
      yangjianbo authored
      ## 数据完整性修复 (fix-critical-data-integrity)
      - 添加 error_translate.go 统一错误转换层
      - 修复 nil 输入和 NotFound 错误处理
      - 增强仓储层错误一致性
      
      ## 仓储一致性修复 (fix-high-repository-consistency)
      - Group schema 添加 default_validity_days 字段
      - Account schema 添加 proxy edge 关联
      - 新增 UsageLog ent schema 定义
      - 修复 UpdateBalance/UpdateConcurrency 受影响行数校验
      
      ## 数据卫生修复 (fix-medium-data-hygiene)
      - UserSubscription 添加软删除支持 (SoftDeleteMixin)
      - RedeemCode/Setting 添加硬删除策略文档
      - account_groups/user_allowed_groups 的 created_at 声明 timestamptz
      - 停止写入 legacy users.allowed_groups 列
      - 新增迁移: 011-014 (索引优化、软删除、孤立数据审计、列清理)
      
      ## 测试补充
      - 添加 UserSubscription 软删除测试
      - 添加迁移回归测试
      - 添加 NotFound 错误测试
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      5906f9ab
  7. 28 Dec, 2025 1 commit
    • shaw's avatar
      fix: 防止订阅过期时间超出 JSON 序列化范围 · fbdff4f3
      shaw authored
      问题:当分配订阅天数过大时,expires_at 年份可能超过 9999,
      导致 time.Time JSON 序列化失败(RFC 3339 要求年份 <= 9999),
      使后台无法显示和删除异常数据。
      
      修复:
      - handler 层添加 validity_days 最大值验证(max=36500,即100年)
      - service 层添加 MaxValidityDays 和 MaxExpiresAt 双重保护
      - 启动时自动修复已存在的异常数据(expires_at > 2099年)
      fbdff4f3
  8. 26 Dec, 2025 1 commit
  9. 25 Dec, 2025 2 commits
  10. 24 Dec, 2025 1 commit
  11. 23 Dec, 2025 1 commit
    • shaw's avatar
      fix: 修复订阅窗口过期后进度条显示不正确的问题 · 5bbfbcda
      shaw authored
      问题:滑动窗口过期后(如昨天用满额度),前端仍显示历史数据(红色进度条100%、"即将重置")
      
      解决:
      - 后端返回数据前检查窗口是否过期,过期则清零展示数据
      - 前端处理 window_start 为 null 的情况,显示"窗口未激活"
      - 不影响实际的窗口激活逻辑,窗口仍从当天零点开始
      5bbfbcda
  12. 20 Dec, 2025 2 commits
    • NepetaLemon's avatar
      ci(backend): 添加 github actions (#10) · c6b3de11
      NepetaLemon authored
      ## 变更内容
      
      ### CI/CD
      - 添加 GitHub Actions 工作流(test + golangci-lint)
      - 添加 golangci-lint 配置,启用 errcheck/govet/staticcheck/unused/depguard
      - 通过 depguard 强制 service 层不能直接导入 repository
      
      ### 错误处理修复
      - 修复 CSV 写入、SSE 流式输出、随机数生成等未处理的错误
      - GenerateRedeemCode() 现在返回 error
      
      ### 资源泄露修复
      - 统一使用 defer func() { _ = xxx.Close() }() 模式
      
      ### 代码清理
      - 移除未使用的常量
      - 简化 nil map 检查
      - 统一代码格式
      c6b3de11
    • shaw's avatar
      fix: 调整订阅计费时间窗口为每日0点 · 5c2e7ae2
      shaw authored
      - 窗口激活/重置时使用当天零点而非精确时间
      - 使用服务器本地时区计算零点(支持 UTC+8 等时区)
      - 窗口重置时失效 Redis 缓存,避免数据不一致
      5c2e7ae2
  13. 19 Dec, 2025 1 commit
  14. 18 Dec, 2025 2 commits