1. 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
  2. 27 Dec, 2025 3 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
    • 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
  3. 26 Dec, 2025 1 commit
  4. 24 Dec, 2025 1 commit
  5. 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