1. 06 Jan, 2026 1 commit
    • yangjianbo's avatar
      fix(前端): 修复 ESLint 代码规范问题 · 4790aced
      yangjianbo authored
      - 修复 AccountTableFilters.vue 中的 vue/no-mutating-props 错误,使用 emit 模式替代直接修改 props
      - 修复 TypeScript 类型错误,支持 Select 组件的 null 值类型
      - 为所有空 catch 块添加错误日志,提升代码可维护性和调试能力
      - 涉及文件:AccountTableFilters.vue, UserAllowedGroupsModal.vue, UserApiKeysModal.vue, UserBalanceModal.vue, AccountsView.vue, UsageView.vue, DashboardView.vue, ProfileView.vue
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      4790aced
  2. 05 Jan, 2026 4 commits
    • IanShaw027's avatar
      refactor(frontend): 完成所有组件的内联SVG统一替换为Icon组件 · 4251a5a4
      IanShaw027 authored
      - 扩展 Icon.vue 组件,新增 60+ 图标路径
        - 导航类: arrowRight, arrowLeft, arrowUp, arrowDown, chevronUp, externalLink
        - 状态类: checkCircle, xCircle, exclamationCircle, exclamationTriangle, infoCircle
        - 用户类: user, userCircle, userPlus, users
        - 文档类: document, clipboard, copy, inbox
        - 操作类: download, upload, filter, sort
        - 安全类: key, lock, shield
        - UI类: menu, calendar, home, terminal, gift, creditCard, mail
        - 数据类: chartBar, trendingUp, database, cube
        - 其他: bolt, sparkles, cloud, server, sun, moon, book 等
      
      - 重构 56 个 Vue 组件,用 Icon 组件替换内联 SVG
        - 净减少约 2200 行代码
        - 提升代码可维护性和一致性
        - 统一图标样式和尺寸管理
      4251a5a4
    • song's avatar
      feat: 图片生成计费功能 · d4c2b723
      song authored
      - 新增 Group 图片价格配置(image_price_1k/2k/4k)
      - BillingService 新增 CalculateImageCost 方法
      - AntigravityGatewayService 支持识别图片生成模型并按次计费
      - UsageLog 新增 image_count 和 image_size 字段
      - 前端分组管理支持配置图片价格(antigravity 和 gemini 平台)
      - 图片计费复用通用计费能力(余额检查、扣费、倍率、订阅限额)
      d4c2b723
    • ianshaw's avatar
      fix(frontend): 修复重构时遗漏的 SVG 图标,创建统一图标管理组件 · 471b1c3e
      ianshaw authored
      - 创建 Icon.vue 统一管理 SVG 图标(20+ 常用图标)
      - 修复 AccountActionMenu 中被错误替换为 emoji 的图标
      - 修复 ProfileView 和 GroupsView 中的 emoji 图标
      - 图标支持 size/strokeWidth 属性,便于复用
      471b1c3e
    • ianshaw's avatar
      fix(frontend): 完善表单校验并添加错误提示 · 85f53ef2
      ianshaw authored
      - UserEditModal: 添加 email 必填和 concurrency 最小值校验
      - UserAttributesConfigModal: 添加 key/name 必填和 options 非空校验
      - GroupsView: 添加 name 必填校验
      - ProxiesView: 添加 name/host 必填和 port 范围校验
      - UserBalanceModal: 添加 amount 有效性和余额充足性校验
      - RedeemView: 添加空兑换码错误提示
      - i18n: 添加所有新增校验的中英文翻译
      85f53ef2
  3. 04 Jan, 2026 5 commits
    • IanShaw027's avatar
      fix(frontend): 修复前端重构后的样式一致性和功能完整性 · 64b52c43
      IanShaw027 authored
      ## 修复内容
      
      ### 1. AccountsView 功能恢复
      - 恢复3个缺失的模态框组件:
        - ReAuthAccountModal.vue - 重新授权功能
        - AccountTestModal.vue - 测试连接功能
        - AccountStatsModal.vue - 查看统计功能
      - 恢复 handleTest/handleViewStats/handleReAuth 调用模态框
      - 修复 UpdateAccountRequest 类型定义(添加 schedulable 字段)
      
      ### 2. DashboardView 修复
      - 恢复 formatBalance 函数(支持千位分隔符显示)
      - 为 UserDashboardStats 添加完整 Props 类型定义
      - 为 UserDashboardRecentUsage 添加完整 Props 类型定义
      - 优化格式化函数到共享 utils/format.ts
      
      ### 3. 类型安全增强
      - 修复 UserAttributeOption 索引签名兼容性
      - 移除未使用的类型导入
      - 所有组件 Props 类型完整
      
      ## 验证结果
      -  TypeScript 类型检查通过(0 errors)
      -  vue-tsc 检查通过(0 errors)
      -  所有样式与重构前100%一致
      -  所有功能完整恢复
      
      ## 影响范围
      - AccountsView: 代码行数从974行优化到189行(提升80.6%可维护性)
      - DashboardView: 保持组件化同时恢复所有原有功能
      - 深色模式支持完整
      - 所有颜色方案和 SVG 图标保持一致
      
      Closes #149
      64b52c43
    • IanShaw027's avatar
      refactor(frontend): final component split and comprehensive type safety fixes · d4d21d5e
      IanShaw027 authored
      - Completed modular refactoring of KeysView.vue and SettingsView.vue.
      - Resolved remaining TypeScript errors in new components.
      - Standardized prop types and event emitters for sub-components.
      - Optimized bundle size by eliminating redundant template code and unused script variables.
      - Verified system stability with final type checking.
      d4d21d5e
    • IanShaw027's avatar
      refactor(frontend): comprehensive split of large view files into modular components · e99063e1
      IanShaw027 authored
      - Split UsersView.vue into UserCreateModal, UserEditModal, UserApiKeysModal, etc.
      - Split UsageView.vue into UsageStatsCards, UsageFilters, UsageTable, etc.
      - Split DashboardView.vue into UserDashboardStats, UserDashboardCharts, etc.
      - Split AccountsView.vue into AccountTableActions, AccountTableFilters, etc.
      - Standardized TypeScript types across new components to resolve implicit 'any' and 'never[]' errors.
      - Improved overall frontend maintainability and code clarity.
      e99063e1
    • 墨颜's avatar
      refactor(keys): 优化分组选项显示与代码复用 · 6708f400
      墨颜 authored
      - 删除冗余的 vite.config.js,统一使用 TypeScript 配置
      - 创建 GroupOptionItem 组件封装分组选项 UI 逻辑(GroupBadge + 描述 + 勾选状态)
      - 在密钥页面的分组选择器中显示分组描述文字
      - 添加选中状态的勾选图标,提升交互体验
      - 优化描述文字左对齐和截断显示效果
      - 消除代码重复,简化维护成本
      6708f400
    • IanShaw027's avatar
  4. 03 Jan, 2026 1 commit
    • ianshaw's avatar
      feat(frontend): 增强用户界面和使用教程 · ff3f514f
      ianshaw authored
      主要改进:
      - 扩展 UseKeyModal 支持 Antigravity/Gemini 平台教程
      - 添加 CCS (Claude Code Settings) 导入说明
      - 添加混合渠道风险警告提示
      - 优化登录/注册页面样式
      - 更新 Antigravity 混合调度选项文案
      - 完善中英文国际化文案
      ff3f514f
  5. 02 Jan, 2026 1 commit
    • shaw's avatar
      feat(keys): 适配 Antigravity 和 Gemini 平台的使用教程与 CCS 导入 · 9d3ec9e6
      shaw authored
      - UseKeyModal: 添加 Antigravity 两级 Tab (Claude Code / Gemini CLI)
      - UseKeyModal: 添加 Gemini 平台的 Gemini CLI 教程
      - UseKeyModal: Antigravity 平台统一使用 /antigravity 后缀
      - KeysView: CCS 导入支持 Antigravity (询问客户端) / Gemini / OpenAI
      - i18n: 添加相关中英文翻译
      9d3ec9e6
  6. 01 Jan, 2026 1 commit
    • Edric Li's avatar
      refactor: migrate wechat to user attributes and enhance users list · 404bf0f8
      Edric Li authored
      Migrate the hardcoded wechat field to the new extensible user
      attributes system and improve the users management UI.
      
      Migration:
      - Add migration 019 to move wechat data to user_attribute_values
      - Remove wechat field from User entity, DTOs, and API contracts
      - Clean up wechat-related code from backend and frontend
      
      UsersView enhancements:
      - Add text labels to action buttons (Filter Settings, Column Settings,
        Attributes Config) for better UX
      - Change status column to show colored dot + Chinese text instead of
        English text
      - Add dynamic attribute columns support with batch loading
      - Add column visibility settings with localStorage persistence
      - Add filter settings modal for search and filter preferences
      - Update i18n translations
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      404bf0f8
  7. 31 Dec, 2025 1 commit
  8. 29 Dec, 2025 3 commits
    • IanShaw027's avatar
      feat(frontend): 优化弹窗组件架构和用户体验 · 23412965
      IanShaw027 authored
      - 使用 BaseDialog 替代旧版 Modal 组件
      - 添加平滑过渡动画和更好的可访问性支持
      - 新增 ExportProgressDialog 导出进度弹窗
      - 优化所有账号管理和使用记录相关弹窗
      - 更新国际化文案,改进用户交互体验
      - 精简依赖,减少 package.json 体积
      23412965
    • IanShaw027's avatar
      feat(frontend): 实现新手引导功能 · dd247e55
      IanShaw027 authored
      - 添加 Guide 组件和引导步骤配置
      - 实现 useOnboardingTour 和 useTourStepDescription composables
      - 添加 onboarding store 管理引导状态
      - 更新多个视图和组件以支持引导功能
      - 添加国际化支持(中英文)
      - 删除旧的实现指南文档
      dd247e55
    • yangjianbo's avatar
      perf(后端): 优化删除操作的数据库查询性能 · e9c755f4
      yangjianbo authored
      - 新增 ExistsByID 方法用于账号存在性检查,避免加载完整对象
      - 新增 GetOwnerID 方法用于 API Key 所有权验证,仅查询 user_id 字段
      - 优化 AccountService.Delete 使用轻量级存在性检查
      - 优化 ApiKeyService.Delete 使用轻量级权限验证
      - 改进前端删除错误提示,显示后端返回的具体错误消息
      - 添加详细的中文注释说明优化原因
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      e9c755f4
  9. 28 Dec, 2025 4 commits
    • IanShaw027's avatar
      fix(frontend): 修复所有页面的UTC时区日期问题并优化初始化 · a5d6035c
      IanShaw027 authored
      **问题**:
      - 使用 toISOString() 格式化日期导致UTC时区问题
      - 在UTC+8时区凌晨时,日期会显示为前一天
      - 日期范围初始化在 onMounted 中导致重复渲染和请求
      
      **修复**:
      - 统一使用本地时区格式化日期
      - 在变量声明时就初始化日期范围,避免延迟初始化
      - 移除 initializeDateRange() 函数,直接在声明时设置正确值
      - 添加 formatLocalDate() 辅助函数统一日期格式化逻辑
      
      **影响范围**:
      - 用户仪表盘 (DashboardView)
      - 管理员仪表盘 (admin/DashboardView)
      - 用户使用记录 (UsageView)
      - 管理员使用记录 (admin/UsageView)
      
      **效果**:
      - 日期范围正确包含当天数据
      - 避免页面加载时的重复请求
      - 改善用户体验,减少不必要的重新渲染
      a5d6035c
    • IanShaw027's avatar
      fix(frontend): 修复UI改进分支中的关键问题 · 5f2d81d1
      IanShaw027 authored
      - 修复RedeemView订阅刷新失败导致流程中断的问题
        将订阅刷新隔离到独立try/catch,失败时仅显示警告
      - 修复DataTable resize事件监听器泄漏问题
        确保添加和移除使用同一个回调引用
      - 修复订阅状态缓存导致强制刷新失效的问题
        force=true时绕过activePromise缓存,clear()清空缓存
      - 修复图表主题切换后颜色不更新的问题
        添加图表ref并在主题切换时调用update()方法
      5f2d81d1
    • IanShaw027's avatar
      fix(frontend): 改进订阅状态实时刷新机制 · 4e3499c0
      IanShaw027 authored
      - 在 Dashboard 页面加载时强制刷新订阅状态
      - 在兑换订阅卡密后立即刷新订阅状态
      - 清理订阅轮询相关注释
      4e3499c0
    • IanShaw027's avatar
      refactor(frontend): UI/UX改进和组件优化 · 506cb21c
      IanShaw027 authored
      - DataTable组件操作列自适应
      - 优化各种Modal弹窗
      - 统一API调用方式(AbortSignal)
      - 添加全局订阅状态管理
      - 优化各管理视图的交互和布局
      - 修复国际化翻译问题
      506cb21c
  10. 27 Dec, 2025 5 commits
    • yangjianbo's avatar
      fix(仪表盘): 修复最近用量查询日期参数格式 · 97ab649d
      yangjianbo authored
      问题:仪表盘“最近用量”调用 /usage 时传入完整 ISO 时间戳(含时分秒/时区),后端 start_date/end_date 仅接受 YYYY-MM-DD,导致请求参数校验失败,页面无法正常展示最近用量。
      
      解决:
      - loadRecentUsage 改为传入 YYYY-MM-DD(从 toISOString() 取日期部分),与后端参数格式约定保持一致
      - 补充注释说明:后端会将 end_date 扩展到当日结束时间,以及 toISOString() 为 UTC 可能带来的统计口径差异
      - 同步修正 usageAPI.getByDateRange 的参数注释,避免后续误用
      
      验证:npm -C frontend run build
      97ab649d
    • IanShaw's avatar
      fix(frontend): 修复用户仪表板日期格式错误导致请求失败 (#55) · 523fa9f7
      IanShaw authored
      修复 loadRecentUsage 函数中日期格式问题,将 ISO 完整格式改为 YYYY-MM-DD 格式,与后端 API 期望一致。
      523fa9f7
    • IanShaw027's avatar
      refactor(frontend): 优化用户视图和设置向导 · ea2821d1
      IanShaw027 authored
      - 改进API密钥管理界面
      - 优化用户使用统计视图
      - 完善初始化设置向导
      ea2821d1
    • shaw's avatar
      feat: 增强前端clipboard功能 · 016d7ef6
      shaw authored
      016d7ef6
    • IanShaw's avatar
      feat(frontend): 前端界面优化与使用统计功能增强 (#46) · 254f1254
      IanShaw authored
      * feat(frontend): 前端界面优化与使用统计功能增强
      
      主要改动:
      
      1. 表格布局统一优化
         - 新增 TablePageLayout 通用布局组件
         - 统一所有管理页面的表格样式和交互
         - 优化 DataTable、Pagination、Select 等通用组件
      
      2. 使用统计功能增强
         - 管理端: 添加完整的筛选和显示功能
         - 用户端: 完善 API Key 列显示
         - 后端: 优化使用统计数据结构和查询
      
      3. 账户组件优化
         - 优化 AccountStatsModal、AccountUsageCell 等组件
         - 统一进度条和统计显示样式
      
      4. 其他改进
         - 完善中英文国际化
         - 统一页面样式和交互体验
         - 优化各视图页面的响应式布局
      
      * fix(test): 修复 stubUsageLogRepo.ListWithFilters 测试 stub
      
      测试用例 GET /api/v1/usage 返回 500 是因为 stub 方法未实现,
      现在正确返回基于 UserID 过滤的日志数据。
      
      * feat(frontend): 统一日期时间显示格式
      
      **主要改动**:
      1. 增强 utils/format.ts:
         - 新增 formatDateOnly() - 格式: YYYY-MM-DD
         - 新增 formatDateTime() - 格式: YYYY-MM-DD HH:mm:ss
      
      2. 全局替换视图中的格式化函数:
         - 移除各视图中的自定义 formatDate 函数
         - 统一导入使用 @/utils/format 中的函数
         - created_at/updated_at 使用 formatDateTime
         - expires_at 使用 formatDateOnly
      
      3. 受影响的视图 (8个):
         - frontend/src/views/user/KeysView.vue
         - frontend/src/views/user/DashboardView.vue
         - frontend/src/views/user/UsageView.vue
         - frontend/src/views/user/RedeemView.vue
         - frontend/src/views/admin/UsersView.vue
         - frontend/src/views/admin/UsageView.vue
         - frontend/src/views/admin/RedeemView.vue
         - frontend/src/views/admin/SubscriptionsView.vue
      
      **效果**:
      - 日期统一显示为 YYYY-MM-DD
      - 时间统一显示为 YYYY-MM-DD HH:mm:ss
      - 提升可维护性,避免格式不一致
      
      * fix(frontend): 补充遗漏的时间格式化统一
      
      **补充修复**(基于 code review 发现的遗漏):
      
      1. 增强 utils/format.ts:
         - 新增 formatTime() - 格式: HH:mm
      
      2. 修复 4 个遗漏的文件:
         - src/views/admin/UsersView.vue
           * 删除 formatExpiresAt(),改用 formatDateTime()
           * 修复订阅过期时间 tooltip 显示格式不一致问题
      
         - src/views/user/ProfileView.vue
           * 删除 formatMemberSince(),改用 formatDate(date, 'YYYY-MM')
           * 统一会员起始时间显示格式
      
         - src/views/user/SubscriptionsView.vue
           * 修改 formatExpirationDate() 使用 formatDateOnly()
           * 保留天数计算逻辑
      
         - src/components/account/AccountStatusIndicator.vue
           * 删除本地 formatTime(),改用 utils/format 中的统一函数
           * 修复 rate limit 和 overload 重置时间显示
      
      **验证**:
      - TypeScript 类型检查通过 ✓
      - 前端构建成功 ✓
      - 所有剩余的 toLocaleString() 都是数字格式化,属于正确用法 ✓
      
      **效果**:
      - 订阅过期时间统一为 YYYY-MM-DD HH:mm:ss
      - 会员起始时间统一为 YYYY-MM
      - 重置时间统一为 HH:mm
      - 消除所有不规范的原生 locale 方法调用
      254f1254
  11. 26 Dec, 2025 2 commits
  12. 24 Dec, 2025 1 commit
  13. 23 Dec, 2025 3 commits
    • 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
      fix: 修复订阅窗口过期后进度条显示不正确的问题 · 5bbfbcda
      shaw authored
      问题:滑动窗口过期后(如昨天用满额度),前端仍显示历史数据(红色进度条100%、"即将重置")
      
      解决:
      - 后端返回数据前检查窗口是否过期,过期则清零展示数据
      - 前端处理 window_start 为 null 的情况,显示"窗口未激活"
      - 不影响实际的窗口激活逻辑,窗口仍从当天零点开始
      5bbfbcda
    • 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
  14. 20 Dec, 2025 1 commit
  15. 19 Dec, 2025 2 commits
  16. 18 Dec, 2025 3 commits
    • 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
      fix: frontend build error · 3d05e503
      shaw authored
      3d05e503
    • shaw's avatar
      First commit · 642842c2
      shaw authored
      642842c2