shaw
|
c328b741cb
|
Merge PR #73: feat(antigravity): 添加 Antigravity (Cloud AI Companion) 平台支持
新增功能:
- Antigravity OAuth 授权流程支持
- Claude → Gemini 协议转换(Claude API 请求自动转换为 Gemini 格式)
- 配额刷新和状态显示
- 混合调度功能,支持 Anthropic 和 Antigravity 账户混合使用
- /antigravity 专用路由,支持仅使用 Antigravity 账户
- 前端 Antigravity 服务商标识和账户管理功能
冲突解决:
- CreateAccountModal.vue: 合并 data-tour 属性和 mixed-scheduling 属性
- EditAccountModal.vue: 合并 data-tour 属性和 mixed-scheduling 属性
代码质量改进:
- 修复 antigravity 类型文件的 gofmt 格式问题(struct 字段对齐、interface{} → any)
- 移除 .golangci.yml 中的 gofmt 排除规则
- 修复测试文件的格式问题
|
2025-12-29 20:32:20 +08:00 |
|
shaw
|
e85b35c6bd
|
Merge PR #70: feat(frontend): 优化弹窗组件架构和用户体验
## 主要变更
### 对话框系统重构
- 升级 BaseDialog 组件,添加动画、焦点管理、响应式宽度
- 删除旧的 Modal.vue,统一使用 BaseDialog
### 使用量数据导出升级
- 改为 Excel 格式导出,支持分页全量导出
- 添加导出进度对话框,支持取消操作
- 新增依赖:xlsx、file-saver
### 使用量页面优化
- Token 明细悬浮提示
- 请求 ID 一键复制
- 新增 first_token 列
### 后端修复
- 账户统计查询添加软删除过滤
## 冲突解决
- 保留 driver.js 依赖(onboarding 功能需要)
- 合并 package.json 变更
|
2025-12-29 19:59:20 +08:00 |
|
song
|
58545efbd7
|
feat(antigravity): 首页添加 Antigravity 服务商标识
|
2025-12-29 17:09:48 +08:00 |
|
song
|
2bd288a677
|
Merge branch 'main' into feature/antigravity_auth
|
2025-12-29 17:04:40 +08:00 |
|
IanShaw027
|
23412965f8
|
feat(frontend): 优化弹窗组件架构和用户体验
- 使用 BaseDialog 替代旧版 Modal 组件
- 添加平滑过渡动画和更好的可访问性支持
- 新增 ExportProgressDialog 导出进度弹窗
- 优化所有账号管理和使用记录相关弹窗
- 更新国际化文案,改进用户交互体验
- 精简依赖,减少 package.json 体积
|
2025-12-29 16:13:09 +08:00 |
|
IanShaw027
|
dd247e55e9
|
feat(frontend): 实现新手引导功能
- 添加 Guide 组件和引导步骤配置
- 实现 useOnboardingTour 和 useTourStepDescription composables
- 添加 onboarding store 管理引导状态
- 更新多个视图和组件以支持引导功能
- 添加国际化支持(中英文)
- 删除旧的实现指南文档
|
2025-12-29 15:43:24 +08:00 |
|
song
|
1ad29032d3
|
feat(antigravity): 添加混合调度可选功能
- 后端:账户模型添加 IsMixedSchedulingEnabled() 方法,读取 extra.mixed_scheduling
- 后端:gateway_service 和 gemini_messages_compat_service 支持混合调度逻辑
- 后端:分组创建支持指定 platform 参数
- 前端:账户创建/编辑弹窗添加混合调度开关(仅 antigravity 账户显示)
- 前端:混合调度开关添加问号图标和 tooltip 说明
- 前端:GroupSelector 支持根据 mixedScheduling 属性过滤分组
- 前端:分组创建支持选择 platform
- 测试:e2e 测试添加 ENDPOINT_PREFIX 环境变量支持混合/隔离模式测试
- 测试:删除过时的 Claude signature 测试用例
|
2025-12-29 09:44:39 +08:00 |
|
shaw
|
c01db6b180
|
fix: 修复快捷添加代理IP弹窗关闭的bug
|
2025-12-29 09:30:32 +08:00 |
|
shaw
|
31fef105c7
|
refactor: 移除旧版数据库配置的简易模式实现
移除与 PR #66 冲突的旧版简易模式实现(commit 7d4b7de)。
新版简易模式通过 run_mode 配置文件/环境变量控制,无需数据库设置。
后端变更:
- 移除 SettingKeySimpleMode 常量
- 移除 SystemSettings/PublicSettings 中的 SimpleMode 字段
- 移除 setting_handler 中的简易模式切换逻辑
- 移除 userService 依赖(不再需要自动设置管理员并发数)
前端变更:
- 移除 appStore.simpleMode 状态
- 移除设置页面的"使用模式"设置区块
- 移除 GroupsView 中的简易模式相关逻辑
- 移除相关国际化文案
|
2025-12-29 09:17:00 +08:00 |
|
song
|
cf1d0f23cc
|
feat(antigravity): 添加账户类型(tier)显示功能
|
2025-12-29 01:25:09 +08:00 |
|
shaw
|
e247be6ead
|
fix(frontend): 修复账号管理页面 API Key 类型的提示文案错误
- 添加 OpenAI/Gemini 平台的 baseUrlHint 和 apiKeyHint 国际化文案
- 修改 CreateAccountModal 和 EditAccountModal 根据平台显示正确提示
- 将重复的平台判断逻辑抽取为 computed 属性,优化代码结构
|
2025-12-28 23:24:46 +08:00 |
|
song
|
08ce6de4db
|
feat(antigravity): 添加配额窗口显示功能
后端:
- 新增 AntigravityQuotaRefresher 定时刷新配额
- Client 添加 FetchAvailableModels 方法获取模型配额
- 配额数据存入 account.extra.quota 字段
前端:
- AccountUsageCell 支持显示 Antigravity 账户配额
- UsageProgressBar 新增 amber 颜色
- 显示 G3P/G3F/G3I/C4.5 四个配额进度条
|
2025-12-28 22:29:01 +08:00 |
|
shaw
|
7d4b7deea9
|
feat: 添加简单模式功能
新增简单模式设置,适合个人使用场景:
- 隐藏多用户管理相关菜单(用户管理、兑换码等)
- 自动关闭用户注册功能
- 管理员并发数自动设为无限制(99999)
- 侧边栏根据模式动态调整菜单项
同时优化分组页面的"专属分组"功能,添加帮助提示说明使用场景
|
2025-12-28 22:19:18 +08:00 |
|
song
|
ff06583c5d
|
Merge branch 'main' into feature/antigravity_auth
|
2025-12-28 18:46:18 +08:00 |
|
song
|
6648e6506c
|
feat: 添加 Antigravity (Cloud AI Companion) OAuth 授权支持
|
2025-12-28 15:54:42 +08:00 |
|
IanShaw027
|
5f2d81d154
|
fix(frontend): 修复UI改进分支中的关键问题
- 修复RedeemView订阅刷新失败导致流程中断的问题
将订阅刷新隔离到独立try/catch,失败时仅显示警告
- 修复DataTable resize事件监听器泄漏问题
确保添加和移除使用同一个回调引用
- 修复订阅状态缓存导致强制刷新失效的问题
force=true时绕过activePromise缓存,clear()清空缓存
- 修复图表主题切换后颜色不更新的问题
添加图表ref并在主题切换时调用update()方法
|
2025-12-28 14:53:36 +08:00 |
|
IanShaw027
|
506cb21cb1
|
refactor(frontend): UI/UX改进和组件优化
- DataTable组件操作列自适应
- 优化各种Modal弹窗
- 统一API调用方式(AbortSignal)
- 添加全局订阅状态管理
- 优化各管理视图的交互和布局
- 修复国际化翻译问题
|
2025-12-28 14:53:36 +08:00 |
|
shaw
|
5187db5ee5
|
fix(frontend): 修复DataTable无限循环和i18n邮箱解析错误
- 修复DataTable组件watch监听actionsExpanded导致的无限循环卡死问题
- 为AccountsView和UsersView添加actionsCount属性启用操作列展开功能
- 修复i18n翻译中邮箱地址的@符号未转义导致的编译错误
|
2025-12-27 21:00:26 +08:00 |
|
IanShaw027
|
d521191e87
|
fix(frontend): 修复i18n翻译中的Invalid linked format错误
问题:
- admin/settings页面无法访问,报错'Invalid linked format'
- vue-i18n解析器将{'@'}误认为链接格式语法
修复:
- 将zh.ts和en.ts中的{'@'}替换为直接的@字符
- 影响范围:代理配置相关的翻译字符串
|
2025-12-27 20:11:13 +08:00 |
|
IanShaw027
|
8d38788672
|
feat(frontend): 更新国际化翻译
- 新增英文翻译条目
- 完善中文翻译内容
- 改进多语言支持
|
2025-12-27 16:04:35 +08:00 |
|
IanShaw
|
254f12543c
|
feat(frontend): 前端界面优化与使用统计功能增强 (#46)
* 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 方法调用
|
2025-12-27 10:50:25 +08:00 |
|
ianshaw
|
50855ec15f
|
feat(i18n): 添加 AI Studio OAuth 配置状态相关文案
- 添加 aiStudioNotConfiguredShort/Tip/aiStudioNotConfigured 翻译
- 更新 needsProjectIdDesc/noProjectIdNeededDesc 描述更准确
|
2025-12-26 00:11:04 -08:00 |
|
ianshaw
|
2d1a15b196
|
feat(frontend): 添加 Gemini OAuth 类型国际化
- zh.ts: 添加中文翻译(Code Assist/AI Studio 选择等)
- en.ts: 添加英文翻译
|
2025-12-26 00:11:03 -08:00 |
|
ianshaw
|
bceed08fc3
|
feat(frontend): 添加 Gemini 平台国际化支持
- 新增中文 Gemini OAuth 相关翻译(步骤说明、错误提示等)
- 新增英文 Gemini OAuth 相关翻译
- 添加 Gemini 账号类型、平台名称等基础翻译
- 优化代码格式
|
2025-12-26 00:10:44 -08:00 |
|
shaw
|
d9e6cfc44d
|
feat: apikey使用弹出适配codex分组
|
2025-12-26 13:46:40 +08:00 |
|
shaw
|
4a2f7d4a99
|
chore: CRS迁移功能增加版本提示
|
2025-12-25 10:57:04 +08:00 |
|
ianshaw
|
938ffb002e
|
style(frontend): format code with prettier
格式化前端业务代码,符合代码规范
- 统一代码风格
- 修复 ESLint 警告
|
2025-12-24 18:07:58 -08:00 |
|
ianshaw
|
62ed5422dd
|
feat(account): 优化批量更新实现,使用统一 SQL 合并 JSONB 字段
- 新增 BulkUpdate 仓储方法,使用单条 SQL 更新所有账户
- credentials/extra 使用 COALESCE(...) || ? 合并,只更新传入的 key
- name/proxy_id/concurrency/priority/status 只在提供时更新
- 分组绑定仍逐账号处理(需要独立操作)
- 前端优化:Base URL 留空则不修改,按勾选字段更新
- 完善 i18n 文案:说明留空不修改、批量更新行为
|
2025-12-24 17:16:19 -08:00 |
|
ianshaw
|
2e76302af7
|
feat(account): 添加批量编辑账户凭据功能并优化 CRS 同步
- 新增批量更新账户凭据接口(account_uuid/org_uuid/intercept_warmup_requests)
- 新增前端批量编辑模态框组件
- 优化 CRS 同步逻辑,改进 extra 字段处理
- 优化 CRS 同步 UI,添加更详细的结果展示
- 完善国际化文案(中英文)
|
2025-12-24 16:56:48 -08:00 |
|
ianshaw
|
6553828008
|
feat(account): 添加从 CRS 同步账户功能
- 添加账户同步 API 接口 (account_handler.go)
- 实现 CRS 同步服务 (crs_sync_service.go)
- 添加前端同步对话框组件 (SyncFromCrsModal.vue)
- 更新账户管理界面支持同步操作
- 添加账户仓库批量创建方法
- 添加中英文国际化翻译
- 更新依赖注入配置
|
2025-12-24 08:48:58 -08:00 |
|
shaw
|
2e7818d688
|
feat(settings): 添加文档链接配置功能
- 后台系统设置新增文档链接(doc_url)配置项
- 首页顶部导航栏显示文档链接图标(条件渲染)
- Footer区域添加文档链接和GitHub链接
- 支持中英文国际化
|
2025-12-24 21:30:19 +08:00 |
|
shaw
|
0abe322cca
|
feat(accounts): 账户列表显示实时并发数
- 在账户列表 API 返回中添加 current_concurrency 字段
- 合并平台和类型列为 PlatformTypeBadge 组件,节省表格空间
- 新增并发状态列,显示 当前/最大 并发数,支持颜色编码
|
2025-12-24 15:44:45 +08:00 |
|
shaw
|
7d9a757a26
|
feat(dashboard): 添加 RPM/TPM 性能指标
在 Dashboard 中用 RPM/TPM 卡片替换原来的"今日缓存"卡片,
实时显示最近1分钟的请求数和 Token 吞吐量。
|
2025-12-24 10:24:02 +08:00 |
|
dexcoder6
|
50dba656fd
|
feat: 添加用户余额充值/退款功能 (#17)
## 功能特性
### 前端
- 在用户列表操作列添加充值和退款按钮
- 实现充值/退款对话框,支持输入金额和备注
- 从编辑用户表单中移除余额字段,防止直接修改
- 添加余额不足验证,实时显示操作后余额
- 优化备注提示词,提供多种场景示例
### 后端
- 为 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: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2025-12-23 16:29:57 +08:00 |
|
shaw
|
f6341b7f2b
|
chore: 将"代理管理"菜单更名为"IP管理"
|
2025-12-23 15:46:10 +08:00 |
|
shaw
|
e53b34f321
|
Merge PR #15: feat: 增强用户管理功能,添加用户名、微信号和备注字段
|
2025-12-23 14:03:07 +08:00 |
|
shaw
|
7b9c3f165e
|
feat: 账号管理新增使用统计功能
- 新增账号统计弹窗,展示30天使用数据
- 显示总费用、请求数、日均费用、日均请求等汇总指标
- 显示今日概览、最高费用日、最高请求日
- 包含费用与请求趋势图(双Y轴)
- 复用模型分布图组件展示模型使用分布
- 显示实际扣费和标准计费(标准计费以较淡颜色显示)
|
2025-12-23 13:42:33 +08:00 |
|
dexcoder6
|
0b8e84f942
|
feat: 增强用户管理功能,添加用户名、微信号和备注字段
- 新增User模型字段:username(用户名)、wechat(微信号)、notes(备注)
- 扩展用户搜索功能,支持通过用户名和微信号搜索
- 添加用户个人资料更新功能,用户可自行编辑用户名和微信号
- 管理员用户列表新增用户名、微信号、备注显示列
- 备注字段仅对管理员可见,增强数据安全性
- 完善中英文国际化翻译
- 修复国际化文件中重复属性的TypeScript错误
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2025-12-23 11:26:22 +08:00 |
|
shaw
|
d9e27df9af
|
feat: 账号列表显示所属分组
- Account模型新增Groups虚拟字段
- 账号列表API预加载Group信息
- 账号管理页面新增分组列,使用GroupBadge展示
|
2025-12-23 11:20:02 +08:00 |
|
shaw
|
f0fabf89a1
|
feat: 用户列表显示订阅分组及剩余天数
- User模型新增Subscriptions关联
- 用户列表批量加载订阅信息避免N+1查询
- GroupBadge组件支持显示剩余天数(过期红色、<=3天红色、<=7天橙色)
- 用户管理页面新增订阅分组列
|
2025-12-23 11:03:10 +08:00 |
|
shaw
|
5bbfbcdae9
|
fix: 修复订阅窗口过期后进度条显示不正确的问题
问题:滑动窗口过期后(如昨天用满额度),前端仍显示历史数据(红色进度条100%、"即将重置")
解决:
- 后端返回数据前检查窗口是否过期,过期则清零展示数据
- 前端处理 window_start 为 null 的情况,显示"窗口未激活"
- 不影响实际的窗口激活逻辑,窗口仍从当天零点开始
|
2025-12-23 10:38:15 +08:00 |
|
shaw
|
5f7e5184eb
|
feat: admin/subscriptions新增重置时间显示
|
2025-12-23 10:14:41 +08:00 |
|
shaw
|
fda753278c
|
feat: 平台图标与计费修复
- fix(billing): 修复 OpenAI 兼容 API 缓存 token 重复计费问题
- fix(auth): 隐藏数据库错误详情,返回通用服务不可用错误
- feat(ui): 新增 PlatformIcon 组件,GroupBadge 支持平台颜色区分
- feat(ui): 账号管理新增重置状态按钮,重授权后自动清除错误
- feat(ui): 分组管理新增计费类型列,显示订阅限额信息
- ui: 首页 GPT 状态改为已支持
|
2025-12-23 10:01:58 +08:00 |
|
shaw
|
6c469b42ed
|
feat: 新增支持codex转发
|
2025-12-22 22:58:31 +08:00 |
|
shaw
|
587012396b
|
feat: 支持创建管理员APIKEY
|
2025-12-20 15:11:43 +08:00 |
|
shaw
|
a79f6c5e1e
|
feat: 给所有表格页面增加刷新按钮
|
2025-12-20 10:48:42 +08:00 |
|
shaw
|
7fd94ab78b
|
fix: 修复usage页面未显示缓存写入的问题
|
2025-12-19 16:57:31 +08:00 |
|
shaw
|
d1f0902ec0
|
feat(account): 支持账号级别拦截预热请求
- 新增 intercept_warmup_requests 配置项,存储在 credentials 字段
- 启用后,标题生成、Warmup 等预热请求返回 mock 响应,不消耗上游 token
- 前端支持所有账号类型(OAuth、Setup Token、API Key)的开关配置
- 修复 OAuth 凭证刷新时丢失非 token 配置的问题
|
2025-12-19 16:39:25 +08:00 |
|
shaw
|
ee86dbca9d
|
feat(account): 账号测试支持选择模型
- 新增 GET /api/v1/admin/accounts/:id/models 接口获取账号可用模型
- 账号测试弹窗新增模型选择下拉框
- 测试时支持传入 model_id 参数,不传则默认使用 Sonnet
- API Key 账号支持根据 model_mapping 映射测试模型
- 将模型常量提取到 claude 包统一管理
|
2025-12-19 16:00:09 +08:00 |
|
shaw
|
463ddea36f
|
fix(frontend): 修复代理快捷添加弹窗的 i18n 解析错误
batchInputHint 中的 @ 符号需要使用 {'@'} 转义
|
2025-12-19 11:24:22 +08:00 |
|