1. 05 Jan, 2026 32 commits
  2. 04 Jan, 2026 8 commits
    • IanShaw027's avatar
      refactor(frontend): 统一管理页面工具条布局和操作列样式 · eef12cb9
      IanShaw027 authored
      ## 修复内容
      
      ### 1. 统一操作列按钮样式
      - 所有操作列按钮统一为"图标+文字"垂直排列样式
      - UsersView: 编辑和更多按钮添加文字标签
      - 与 AccountsView、GroupsView 等页面保持一致
      
      ### 2. 统一顶部工具条布局(6个管理页面)
      - 使用 flex + justify-between 布局
      - 左侧:模糊搜索框、筛选器(可多行排列)
      - 右侧:刷新、创建等操作按钮(靠右对齐)
      - 响应式:宽度不够时右侧按钮自动换行到上一行
      
      ### 3. 修复的页面
      - AccountsView: 合并 actions/filters 到单行工具条
      - UsersView: 标准左右分栏,操作列添加文字
      - GroupsView: 新增搜索框,左右分栏布局
      - ProxiesView: 左右分栏,响应式布局
      - SubscriptionsView: 新增用户模糊搜索,左右分栏
      - UsageView: 补齐所有筛选项,左右分栏
      
      ### 4. 新增功能
      - GroupsView: 新增分组名称/描述模糊搜索
      - SubscriptionsView: 新增用户模糊搜索功能
      - UsageView: 补齐 API Key 搜索筛选
      
      ### 5. 国际化
      - 新增相关搜索框的 placeholder 文案(中英文)
      
      ## 技术细节
      - 使用 flex-wrap-reverse 实现响应式换行
      - 左侧筛选区使用 flex-wrap 支持多行
      - 右侧按钮区使用 ml-auto + justify-end 保持右对齐
      - 移动端使用 w-full sm:w-* 响应式宽度
      
      ## 验证结果
      -  TypeScript 类型检查通过
      -  所有页面布局统一
      -  响应式布局正常工作
      eef12cb9
    • IanShaw027's avatar
      fix(backend): 修复 CI 失败问题 · 06216aad
      IanShaw027 authored
      修复内容:
      1. 修复 6 个 golangci-lint 错误
         - 3 个 errcheck 错误:在 gateway_request_test.go 中添加类型断言检查
         - 3 个 gofmt 格式化问题:修复代码格式
      2. 修复 API 契约测试失败
         - 在测试中添加缺失的字段:enable_identity_patch 和 identity_patch_prompt
      
      所有测试和 linter 检查现已通过。
      06216aad
    • 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
    • shaw's avatar
      fix(前端): 修复 CSP 策略阻止 vue-i18n 运行时编译 · ad2ff908
      shaw authored
      使用 vue-i18n 纯运行时版本替代默认版本,避免运行时消息编译
      需要 `new Function` 而被 CSP `script-src 'self'` 策略阻止。
      ad2ff908
    • IanShaw027's avatar
    • IanShaw027's avatar
      merge: 合并 upstream/main 并解决冲突 · aa6f2533
      IanShaw027 authored
      解决了以下文件的冲突:
      - backend/internal/handler/admin/setting_handler.go
        - 采用 upstream 的字段对齐风格和 *Configured 字段名
        - 添加 EnableIdentityPatch 和 IdentityPatchPrompt 字段
      
      - backend/internal/handler/gateway_handler.go
        - 采用 upstream 的 billingErrorDetails 错误处理方式
      
      - frontend/src/api/admin/settings.ts
        - 采用 upstream 的 *_configured 字段名
        - 添加 enable_identity_patch 和 identity_patch_prompt 字段
      
      - frontend/src/views/admin/SettingsView.vue
        - 合并 turnstile_secret_key_configured 字段
        - 保留 enable_identity_patch 和 identity_patch_prompt 字段
      aa6f2533
    • IanShaw027's avatar
      fix: 修复代码审查报告中的4个关键问题 · f60f943d
      IanShaw027 authored
      1. 资源管理冗余(ForwardGemini双重Close)
         - 错误分支读取body后立即关闭原始body,用内存副本重新包装
         - defer添加nil guard,避免重复关闭
         - fallback成功时显式关闭旧body,确保连接释放
      
      2. Schema校验丢失(cleanJSONSchema移除字段无感知)
         - 新增schemaCleaningWarningsEnabled()支持环境变量控制
         - 实现warnSchemaKeyRemovedOnce()在非release模式下告警
         - 移除关键验证字段时输出warning,包含key和path
      
      3. UI响应式风险(UsersView操作菜单硬编码定位)
         - 菜单改为先粗定位、渲染后测量、再clamp到视口内
         - 添加max-height + overflow-auto,超出时可滚动
         - 增强交互:点击其它位置/滚动/resize自动关闭或重新定位
      
      4. 身份补丁干扰(TransformClaudeToGemini默认注入)
         - 新增TransformOptions + TransformClaudeToGeminiWithOptions
         - 系统设置新增enable_identity_patch、identity_patch_prompt
         - 完整打通handler/dto/service/frontend配置链路
         - 默认保持启用,向后兼容现有行为
      
      测试:
      - 后端单测全量通过:go test ./...
      - 前端类型检查通过:npm run typecheck
      f60f943d
    • shaw's avatar