1. 23 Dec, 2025 13 commits
    • dexcoder6's avatar
      feat: 添加用户余额充值/退款功能 (#17) · 50dba656
      dexcoder6 authored
      ## 功能特性
      
      ### 前端
      - 在用户列表操作列添加充值和退款按钮
      - 实现充值/退款对话框,支持输入金额和备注
      - 从编辑用户表单中移除余额字段,防止直接修改
      - 添加余额不足验证,实时显示操作后余额
      - 优化备注提示词,提供多种场景示例
      
      ### 后端
      - 为 redeem_codes 表添加 notes 字段(迁移文件)
      - 在 UpdateUserBalance 接口添加 notes 参数支持
      - 添加余额验证:金额必须大于0,操作后余额不能为负
      - UpdateUser 接口移除 balance 字段处理,防止误操作
      - 完整的审计日志和缓存管理
      
      ## 安全保护
      
      - 前端:余额不足时禁用提交按钮,实时提示
      - 后端:双重验证(输入金额 > 0 + 结果余额 >= 0)
      - 权限:仅管理员可访问(AdminAuth 中间件)
      - 审计:所有操作记录到 redeem_codes 表
      
      ## 修改文件
      
      后端:
      - backend/migrations/004_add_redeem_code_notes.sql
      - backend/internal/model/redeem_code.go
      - backend/internal/service/admin_service.go
      - backend/internal/handler/admin/user_handler.go
      
      前端:
      - frontend/src/views/admin/UsersView.vue
      - frontend/src/api/admin/users.ts
      - frontend/src/i18n/locales/zh.ts
      - frontend/src/i18n/locales/en.ts
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-authored-by: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      50dba656
    • shaw's avatar
      chore: 忽略TypeScript增量编译缓存文件 · 0e282145
      shaw authored
      0e282145
    • shaw's avatar
      feat: OpenAI OAuth账号显示Codex使用量 · f25ac3af
      shaw authored
      从响应头提取x-codex-*使用量信息并保存到账号Extra字段,
      前端账号列表展示5h/7d窗口的使用进度条。
      f25ac3af
    • shaw's avatar
      chore: 将"代理管理"菜单更名为"IP管理" · f6341b7f
      shaw authored
      f6341b7f
    • shaw's avatar
      style: 统一平台和分组列的样式 · 4e257512
      shaw authored
      - 账号页面平台列改为与分组页面一致的标签样式
      - 订阅页面分组列改用 GroupBadge 组件展示
      - 修正 OpenAI OAuth 类型描述文案
      4e257512
    • shaw's avatar
      feat: 账号管理新增使用统计功能 · 7b9c3f16
      shaw authored
      - 新增账号统计弹窗,展示30天使用数据
      - 显示总费用、请求数、日均费用、日均请求等汇总指标
      - 显示今日概览、最高费用日、最高请求日
      - 包含费用与请求趋势图(双Y轴)
      - 复用模型分布图组件展示模型使用分布
      - 显示实际扣费和标准计费(标准计费以较淡颜色显示)
      7b9c3f16
    • dexcoder6's avatar
      feat: 增强用户管理功能,添加用户名、微信号和备注字段 · 0b8e84f9
      dexcoder6 authored
      - 新增User模型字段:username(用户名)、wechat(微信号)、notes(备注)
      - 扩展用户搜索功能,支持通过用户名和微信号搜索
      - 添加用户个人资料更新功能,用户可自行编辑用户名和微信号
      - 管理员用户列表新增用户名、微信号、备注显示列
      - 备注字段仅对管理员可见,增强数据安全性
      - 完善中英文国际化翻译
      - 修复国际化文件中重复属性的TypeScript错误
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      0b8e84f9
    • shaw's avatar
      feat: 账号列表显示所属分组 · d9e27df9
      shaw authored
      - Account模型新增Groups虚拟字段
      - 账号列表API预加载Group信息
      - 账号管理页面新增分组列,使用GroupBadge展示
      d9e27df9
    • shaw's avatar
      feat: 用户列表显示订阅分组及剩余天数 · f0fabf89
      shaw authored
      - User模型新增Subscriptions关联
      - 用户列表批量加载订阅信息避免N+1查询
      - GroupBadge组件支持显示剩余天数(过期红色、<=3天红色、<=7天橙色)
      - 用户管理页面新增订阅分组列
      f0fabf89
    • shaw's avatar
      fix: 修复订阅窗口过期后进度条显示不正确的问题 · 5bbfbcda
      shaw authored
      问题:滑动窗口过期后(如昨天用满额度),前端仍显示历史数据(红色进度条100%、"即将重置")
      
      解决:
      - 后端返回数据前检查窗口是否过期,过期则清零展示数据
      - 前端处理 window_start 为 null 的情况,显示"窗口未激活"
      - 不影响实际的窗口激活逻辑,窗口仍从当天零点开始
      5bbfbcda
    • shaw's avatar
      feat: admin/subscriptions新增重置时间显示 · 5f7e5184
      shaw authored
      5f7e5184
    • shaw's avatar
      chore: 更新前端构建信息 · 008a1112
      shaw authored
      008a1112
    • shaw's avatar
      feat: 平台图标与计费修复 · fda75327
      shaw authored
      - fix(billing): 修复 OpenAI 兼容 API 缓存 token 重复计费问题
      - fix(auth): 隐藏数据库错误详情,返回通用服务不可用错误
      - feat(ui): 新增 PlatformIcon 组件,GroupBadge 支持平台颜色区分
      - feat(ui): 账号管理新增重置状态按钮,重授权后自动清除错误
      - feat(ui): 分组管理新增计费类型列,显示订阅限额信息
      - ui: 首页 GPT 状态改为已支持
      fda75327
  2. 22 Dec, 2025 1 commit
  3. 20 Dec, 2025 4 commits
  4. 19 Dec, 2025 11 commits
  5. 18 Dec, 2025 7 commits
    • shaw's avatar
      fix: 修复前端github项目地址 · 66ba4876
      shaw authored
      66ba4876
    • shaw's avatar
      fix: 修复前端多个 bug · 14517146
      shaw authored
      1. 版本号闪烁问题
         - 将版本信息缓存到 Pinia store,避免每次路由切换都重新请求
         - 添加加载占位符,版本为空时显示骨架屏
      
      2. 管理员登录跳转问题
         - 管理员登录后现在正确跳转到 /admin/dashboard
         - 普通用户仍跳转到 /dashboard
      
      3. Dashboard 页面空白报错
         - 修复 API 返回 null 时访问 .length 导致的 TypeError
         - 为 computed 属性添加可选链操作符保护
         - 为数据赋值添加空数组默认值
      14517146
    • shaw's avatar
      feat: 实现后台在线更新功能 · 9b4fc424
      shaw authored
      - 前端添加更新和重启按钮,支持一键更新 Release 构建
      - 修复条件判断优先级问题,确保错误/成功状态正确显示
      - 后端使用原子文件替换模式,确保更新过程安全可靠
      - 在可执行文件同目录创建临时文件,保证 rename 原子性
      - 删除未使用的 copyFile 函数,保持代码整洁
      9b4fc424
    • shaw's avatar
      fix: 修复前端页面刷新时偶发空白渲染的竞态条件问题 · a26db8b3
      shaw authored
      使用 router.isReady() 等待路由器完成初始导航后再挂载应用,
      避免 RouterView 在路由未就绪时渲染空的 Comment 节点。
      a26db8b3
    • shaw's avatar
      fix: release error · e2ae9fe5
      shaw authored
      e2ae9fe5
    • shaw's avatar
      fix: frontend build error · 3d05e503
      shaw authored
      3d05e503
    • shaw's avatar
      First commit · 642842c2
      shaw authored
      642842c2