Edric Li
92ec3ffc72
feat: API Keys页面恢复今日时间选项并设为默认
...
- 添加"今日"时间筛选选项,使用fa-calendar-day图标
- 将默认时间范围从"最近7天"改为"今日"
- 优化日期处理逻辑,确保今日选项从0点开始
- 调整UsageDetailModal宽度以适应内容显示
- 同步更新所有相关的初始化和重置逻辑
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-07 22:18:34 +08:00
Edric Li
8c9d6381f3
feat: API Keys图标系统和UI优化
...
主要功能增强:
- 实现API Key自定义图标功能,支持图片上传、裁剪和智能压缩
- 新增IconPicker组件,提供内置图标选择和图片上传功能
- 支持固定尺寸裁剪区域,可拖拽定位选择头像区域
- 智能图片压缩:PNG保留透明度,JPEG用于不透明图片
UI/UX改进:
- 优化表格布局:移除账号列,在名称下方显示账号绑定信息
- 调整行高和字体大小,提升信息密度
- 最后使用时间改为相对时间显示,悬浮显示具体时间
- 过期时间编辑改为点击文本触发,带悬浮下划线效果
- 更新默认API Key图标为蓝色渐变设计
- 修复表格悬浮偏移和横向滚动条问题
- 将"TOKEN 数量"改为"Token数"
后端支持:
- apiKeyService增加icon字段持久化
- admin路由增加图标数据处理和验证
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-07 22:18:34 +08:00
shaw
d2f3f6866c
feat: Codex账号管理优化与API Key激活机制
...
✨ 新功能
- 支持通过refreshToken新增Codex账号,创建时立即验证token有效性
- API Key新增首次使用自动激活机制,支持activation模式设置有效期
- 前端账号表单增加token验证功能,确保账号创建成功
🐛 修复
- 修复Codex token刷新失败问题,增加分布式锁防止并发刷新
- 优化token刷新错误处理,提供更详细的错误信息和建议
- 修复OpenAI账号token过期检测和自动刷新逻辑
📝 文档更新
- 更新README中Codex使用说明,改为config.toml配置方式
- 优化Cherry Studio等第三方工具接入文档
- 添加详细的配置示例和账号类型说明
🎨 界面优化
- 改进账号创建表单UI,支持手动和OAuth两种模式
- 优化API Key过期时间编辑弹窗,支持激活操作
- 调整教程页面布局,提升移动端响应式体验
💡 代码改进
- 重构token刷新服务,增强错误处理和重试机制
- 优化代理配置处理,确保OAuth请求正确使用代理
- 改进webhook通知,增加token刷新失败告警
2025-09-06 18:04:06 +08:00
shaw
16d397125a
feat: 支持apikey名称修改
2025-09-03 17:28:13 +08:00
Feng Yue
1fc35197e1
Merge remote-tracking branch 'f3n9/dev' into dev-um-8
2025-09-03 09:45:52 +08:00
shaw
81ad098678
fix: 修复apikeys页面的一些bug
2025-09-02 21:38:54 +08:00
Feng Yue
5ee98597e7
fix get userlist issue
2025-09-02 18:40:16 +08:00
Feng Yue
7a9e4abdd5
admin now is able to reassign apikey to admin/user
2025-09-02 17:17:06 +08:00
shaw
e84c6a5555
feat: 实现基于费用的速率限制功能
...
- 新增 rateLimitCost 字段,支持按费用进行速率限制
- 新增 weeklyOpusCostLimit 字段,支持 Opus 模型周费用限制
- 优化速率限制逻辑,支持费用、请求数、token多维度控制
- 更新前端界面,添加费用限制配置选项
- 增强账户管理功能,支持费用统计和限制
- 改进 Redis 数据模型,支持费用计数器
- 优化价格计算服务,支持更精确的成本核算
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-31 17:27:37 +08:00
shaw
a54622e3d7
Revert "Merge pull request #292 from iRubbish/dev"
...
This reverts commit 9e8e74ce6b , reversing
changes made to 222f4e44fe .
2025-08-30 20:09:41 +08:00
iRubbish
82f545c3b0
保存当前API Key管理功能的修改
...
- 统一用户创建和admin创建API Key的逻辑
- 修复admin更新用户创建的API Key功能
- 用户创建API Key名称改为displayName
- 默认无限制配置
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-26 13:42:02 +08:00
shaw
85c1e84b42
fix: 修复批量编辑组件的 Prettier 格式化问题
...
- 格式化所有不符合 Prettier 规范的代码
- 修复长标签元素的换行问题
- 确保前端构建成功通过
2025-08-22 22:29:58 +08:00
shaw
47a1b37243
feat: 为批量编辑API Keys组件添加暗黑模式支持
...
- 为所有文本、背景、边框添加暗黑模式样式
- 更新表单控件(输入框、选择框、按钮)的暗黑模式样式
- 确保与项目其他组件的暗黑模式风格保持一致
2025-08-22 22:24:33 +08:00
shaw
15c8478a96
Merge branch 'pr-272' into dev
2025-08-22 22:19:00 +08:00
shaw
d2f0ac37a9
feat: 支持Dark Mode
2025-08-22 22:09:38 +08:00
iRubbish
ee93018c20
增加 API keys 批量编辑管理
2025-08-22 16:12:04 +08:00
iRubbish
59d013f02f
feat: 批量编辑API Keys功能优化和Bug修复
...
- 添加批量编辑API Keys路由和验证逻辑
- 修复标签操作(添加、移除、替换)功能
- 新增批量编辑前端组件,支持共享账号池选择
- 完善Bedrock账户显示和绑定功能
- 优化账户选择UI,统一所有平台选项
- 修复前端构建错误和代码格式问题
- 添加comprehensive测试场景文档
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-22 13:55:39 +08:00
shaw
812e98355f
feat: 实现 OpenAI token 自动刷新功能并优化账户管理界面
...
主要更改:
1. OpenAI Token 自动刷新
- 实现 refreshAccessToken 函数,支持 OAuth 2.0 refresh_token grant type
- 使用 Codex CLI 官方 CLIENT_ID (app_EMoamEEZ73f0CkXaXp7hrann)
- 支持 SOCKS5 和 HTTP/HTTPS 代理
- 自动更新 access token、id token 和 refresh token
2. 账户管理界面优化
- 移除手动刷新 token 按钮(桌面端和移动端)
- 保留后端自动刷新机制
- 优化代码结构,删除不再需要的函数和变量
3. 测试和文档
- 添加 test-openai-refresh.js 测试脚本
- 创建详细的实现文档
技术细节:
- Token 端点: https://auth.openai.com/oauth/token
- 默认有效期: 1小时
- 加密存储: AES-256-CBC
所有平台现在都支持自动 token 刷新:
✅ Claude - OAuth 自动刷新
✅ Gemini - Google OAuth2 自动刷新
✅ OpenAI - OAuth 自动刷新(新实现)
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-15 16:56:44 +08:00
shaw
f462684f97
feat: 实现OpenAI账户管理和统一调度系统
...
- 新增 OpenAI 账户管理服务,支持多账户轮询和负载均衡
- 实现统一的 OpenAI API 调度器,智能选择最优账户
- 优化成本计算器,支持更精确的 token 计算
- 更新模型定价数据,包含最新的 OpenAI 模型价格
- 增强 API Key 管理,支持更灵活的配额控制
- 改进管理界面,添加教程视图和账户分组管理
- 优化限流配置组件,提供更直观的用户体验
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-11 13:58:43 +08:00
shaw
7e1a9daa6b
feat: 完善管理界面功能和用户体验
...
- 添加 API Key 窗口倒计时组件 (WindowCountdown)
- 添加自定义下拉菜单组件 (CustomDropdown)
- 优化账户和 API Key 管理界面交互
- 改进教程页面布局和说明文字
- 完善账户状态显示和错误处理
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-08 14:14:46 +08:00
shaw
4adc8d9695
恢复并保存本地修改:仪表盘服务账户分类显示、WindowCountdown组件等功能
2025-08-08 11:56:24 +08:00
千羽
8a74bf5afe
refactor: standardize code formatting and linting configuration
...
- Replace .eslintrc.js with .eslintrc.cjs for better ES module compatibility
- Add .prettierrc configuration for consistent code formatting
- Update package.json with new lint and format scripts
- Add nodemon.json for development hot reloading configuration
- Standardize code formatting across all JavaScript and Vue files
- Update web admin SPA with improved linting rules and formatting
- Add prettier configuration to web admin SPA
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-07 18:19:31 +09:00
shaw
e57b98f343
fix: 修复 API Key 创建和编辑时账户绑定冲突问题
...
- 创建 API Key 时确保 OAuth 和 Console 账户不会同时设置
- 编辑 API Key 时正确清空未使用的账户类型字段
- 使用共享池时清空所有账户绑定
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-07 00:43:09 +08:00
Van Zheng
9781a39e09
feat: add quick add buttons for model restrictions in API Key editor
...
- Add quick add buttons for common Claude models including claude-opus-4-1-20250805
- Implement dynamic filtering to hide models already in restriction list
- Add mobile-responsive design with proper text sizing and layout
- Show helpful message when all common models are restricted
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-06 09:44:26 +08:00
Wesley Liddick
5b0c02d8ce
Merge pull request #181 from wbchn/main
...
fix: 🐛 修复续期 endpoint
2025-08-05 17:34:41 +08:00
shaw
7fa75df1fd
fix: 修复分组调度功能和API Keys统计弹窗UI问题
...
1. 分组调度功能修复:
- 统一使用 unifiedClaudeScheduler 和 unifiedGeminiScheduler
- 修复 schedulable 字段数据类型不一致问题(布尔值/字符串)
- 添加 _isSchedulable() 辅助方法确保兼容性
- 修复所有路由文件中的调度器调用
2. API Keys 统计弹窗UI优化:
- 统一弹窗样式与系统UI风格
- 添加右上角关闭按钮
- 修复移动端宽度问题(设置为95%屏幕宽度)
- 使用 Teleport 组件和项目通用样式
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-05 17:06:52 +08:00
wbchn
e6e5a2d53e
fix: 🐛 修复续期 endpoint
2025-08-05 14:19:38 +08:00
shaw
a69d1ae1dd
fix: 修复账户管理和API Key管理的多个问题
...
- 修复 Claude Console 账号 supportedModels 导致的 be.join 错误
- 添加专属账号选择器组件,支持搜索和按创建时间倒序排序
- 修复搜索框图标与placeholder文字重叠的问题
- 修复选择共享账号池后显示文字不正确的问题
- 优化下拉框定位逻辑,解决超出视窗无法滚动的问题
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-04 18:44:36 +08:00
shaw
c6074bd244
fix: 修复API Keys页面时间窗口进度条和Token数值显示问题
...
- 修复时间窗口限制的请求次数和Token使用量进度条不更新的问题
- 在apiKeyService.getAllApiKeys()中添加获取当前窗口统计数据的逻辑
- 从Redis读取rate_limit:requests和rate_limit:tokens键的值
- 优化Token数值展示,添加K/M单位格式化
- UsageDetailModal组件中5处Token数值改用formatTokenCount
- ApiKeysView模型统计中5处Token数值改用formatTokenCount
- 统一使用K/M单位简化大数字显示
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-04 10:54:57 +08:00
shaw
2ceac331dd
feat: 优化 API Keys 页面的分组显示和使用统计展示
...
- 修复分组调度显示,正确展示分组名称
- 重新设计使用统计列,添加进度条显示每日费用和窗口限制
- 创建使用详情弹窗组件,展示完整统计信息
- 优化时间窗口限制显示,支持请求次数和Token双维度进度条
- 改进移动端自适应布局
- 修复 ESLint 警告,提升代码质量
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-04 10:31:59 +08:00
shaw
dcf175b366
fix: 修复 web/admin-spa 合并冲突和构建错误
...
- 恢复 web/admin-spa 目录到 dev 分支状态
- 修复 ApiKeysView.vue 中的重复变量声明问题
- 重新构建前端项目确保正常运行
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-03 22:48:20 +08:00
shaw
a5c7eeaf84
fix: 修复专属账号下拉框,仅显示dedicated类型账号
...
- 修改CreateApiKeyModal和EditApiKeyModal的过滤逻辑
- 专属账号下拉框只显示accountType='dedicated'的账号
- 移除accountType='group'的账号,这些账号通过分组调度
- 更新标签文字为'专属账号'以更准确描述
2025-08-03 22:34:44 +08:00
shaw
9c9afe1528
feat: 实现账户分组管理功能和优化响应式设计
...
主要更新:
- 实现账户分组管理功能,支持创建、编辑、删除分组
- 支持将账户添加到分组进行统一调度
- 优化 API Keys 页面响应式设计,解决操作栏被隐藏的问题
- 优化账户管理页面布局,合并平台/类型列,改进操作按钮布局
- 修复代理信息显示溢出问题
- 改进表格列宽分配,充分利用屏幕空间
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-03 22:34:43 +08:00
shaw
495c458e9a
fix: 修复API Keys页面的undefined错误
...
- 修复filteredAndSortedApiKeys未定义错误,改为使用sortedApiKeys
- 添加缺失的分页相关变量定义(currentPage, pageSize, totalPages等)
- 添加paginatedApiKeys计算属性实现分页功能
- 修复CreateApiKeyModal和EditApiKeyModal中localAccounts防御性编程
- 添加筛选条件变化时重置页码的逻辑
- 修复"Cannot read properties of undefined (reading 'length')"错误
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-03 22:34:42 +08:00
shaw
6dd8d0076e
fix: 解决Git合并冲突
...
- 解决ApiKeysView.vue中的合并冲突
- 解决CreateApiKeyModal.vue中的合并冲突
- 解决EditApiKeyModal.vue中的合并冲突
- 保留本地修改版本,包含更完善的功能:
- Claude OAuth和Console账户分组显示
- 移动端响应式优化
- 批量创建API Key功能
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-03 22:34:41 +08:00
shaw
ecfc1050d3
feat: 优化移动端响应式设计
...
- 优化所有页面的移动端适配(手机、平板、PC)
- 修复AccountsView移动端状态显示和按钮功能问题
- 修复ApiKeysView移动端详情展开显示问题
- 移除ApiKeysView不必要的查看按钮
- 修复Dashboard页面PC版时间筛选按钮布局
- 改进所有组件的响应式设计
- 删除dist目录避免构建文件冲突
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-03 22:34:41 +08:00
KevinLiao
6216433b0b
Merge branch 'main' of https://github.com/Wei-Shaw/claude-relay-service
...
# Conflicts:
# web/admin-spa/dist/assets/LoginView-BJ0LLv16.js
# web/admin-spa/dist/assets/LogoTitle-DHj-MjwS.js
# web/admin-spa/dist/assets/MainLayout-CLydIeqJ.js
# web/admin-spa/dist/assets/SettingsView-DicW12bL.js
# web/admin-spa/dist/assets/index-HYE9xPuR.js
# web/admin-spa/dist/index.html
# web/admin-spa/src/components/apikeys/CreateApiKeyModal.vue
# web/admin-spa/src/components/apikeys/EditApiKeyModal.vue
# web/admin-spa/src/views/ApiKeysView.vue
2025-07-30 20:41:10 +08:00
KevinLiao
b86adcd6d2
fix: 1.修复ClaudeConsole账号设置为专属绑定的功能
...
2. 修复Claude 官方账号会话窗口计算错误的问题
2025-07-30 20:20:12 +08:00
Alfonsxh
0fc9fab621
fix: 修复创建 API Key 时专属账号下拉框无选项的问题
...
问题描述:
- 创建 API Key 时,专属账号下拉框中没有显示任何账号选项
- 原因是前端代码使用了错误的过滤条件 `a.isDedicated`
解决方案:
- 将过滤条件修改为 `a.accountType === 'dedicated'`
- 后端返回的账号对象使用 `accountType` 属性(值为 'shared' 或 'dedicated')
其他修改:
- 更新 package.json 中的 build:web 和 install:web 脚本路径
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-07-30 16:16:16 +08:00
shaw
7116a6e043
优化仪表盘自动刷新UI布局
...
- 调整Element Plus日期选择器宽度为400px,确保时间完整显示
- 重新设计自动刷新控制的样式和布局
- 统一控制栏所有元素的高度,保持视觉一致性
- 使用更精致的开关组件和优化的交互效果
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-07-30 15:37:59 +08:00
shaw
a6ab6b7abe
feat: 实现基于滑动窗口的实时RPM/TPM统计
...
- 添加系统级分钟统计,支持1-60分钟可配置时间窗口
- 新增 getRealtimeSystemMetrics 方法计算滑动窗口内的平均值
- 前端显示实时RPM/TPM,标注时间窗口和数据来源
- 修复 EditApiKeyModal 中模型限制和客户端限制复选框状态错误
- 优化性能:使用Pipeline批量操作替代Promise.all
- TPM包含所有token类型:input、output、cache_creation、cache_read
- 添加降级方案:实时数据不可用时返回历史平均值
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-07-30 15:37:57 +08:00
Alfonsxh
fc5c24e1ca
feat: 增强 API Key 标签选择功能
...
- 添加获取已存在标签的 API 端点 /admin/api-keys/tags
- 重构标签输入 UI,从下拉菜单改为平铺展示
- 支持点击选择已有标签,避免重复创建
- 增加弹框宽度 (max-w-4xl),改善布局和用户体验
- 统一创建和编辑 API Key 的标签管理体验
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-07-30 11:24:27 +08:00
shaw
9320833b2c
fix(admin-spa): 恢复速率限制设置的详细说明并优化布局
...
- 恢复每个速率限制字段的详细说明文字
- 恢复完整的使用示例,帮助用户理解功能
- 使用响应式3列网格布局,在大屏幕上更紧凑
- 优化示例说明的排版,减少垂直空间占用
- 调整modal宽度为max-w-lg,提供更好的横向空间
2025-07-29 19:21:52 +08:00
shaw
8f9272bc43
fix(admin-spa): 优化创建API Key表单布局和添加必填验证
...
- 优化表单布局,减少高度和间距,使其更紧凑
- 将速率限制的三个字段合并到同一区块,使用网格布局
- 为名称字段添加必填验证,未填写时显示红色提示
- 优化模型限制和客户端限制的布局,使用彩色背景区块
- 减少各字段的边距和字体大小,提升空间利用率
2025-07-29 19:21:34 +08:00
shaw
179fd26dd8
fix(admin-spa): 修复确认弹窗层级和关闭按钮响应问题
...
- 提高ConfirmDialog的z-index到100,确保显示在最上层
- 修改确认弹窗样式,使用amber色调作为警告色
- 为API Key弹窗X按钮添加单独的handleDirectClose方法
- 解决确认弹窗被API Key弹窗遮挡的问题
2025-07-29 19:21:18 +08:00
shaw
d761e89925
fix(admin-spa): 替换原生确认弹窗为自定义弹窗并修复按钮样式
...
- 替换API Key删除确认弹窗为自定义ConfirmDialog组件
- 替换API Key创建成功后关闭确认弹窗为自定义弹窗
- 修复'我已保存'按钮样式,增加背景色对比度和边框
- 添加降级方案以确保兼容性
2025-07-29 19:21:01 +08:00
shaw
eff796ed8e
fix(admin-spa): 修复API Key创建成功后的弹窗显示问题
...
- 完全复刻原版的API Key成功弹窗样式
- 修复API Key字段读取问题,支持apiKey和key两种字段名
- 添加完整的显示/隐藏功能,默认隐藏API Key内容
- 实现与原版一致的警告提示和关闭确认
- 优化复制功能,添加降级方案
2025-07-29 18:36:35 +08:00
shaw
a11e3909e0
fix(admin-spa): 修复版本号显示位置,使其与网站名称在同一行显示
2025-07-29 17:05:43 +08:00
shaw
5e3647aea8
fix(admin-spa): 修复API Key创建后直接消失的问题
...
- 修正NewApiKeyModal组件的prop名从apiKeyData改为apiKey
- 修正CreateApiKeyModal中emit的数据从result.apiKey改为result.data
- 补充创建和编辑API Key时缺失的enableModelRestriction和enableClientRestriction字段
- 确保所有字段名与旧版保持一致
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-07-29 16:37:44 +08:00
shaw
03a5300b78
feat(admin-spa): 添加 API Key 标签管理功能
...
基于 PR #114 的功能需求,为新版 admin-spa 实现完整的标签系统:
后端改进:
- apiKeyService 支持标签的创建、查询和更新
- admin 路由添加标签验证和处理逻辑
- 标签以 JSON 数组形式存储在 Redis 中
前端功能:
- API Key 列表增加标签列,显示彩色标签徽章
- 添加标签筛选器,支持按标签过滤 API Keys
- 创建和编辑 API Key 时可添加/删除标签
- 标签输入支持 Enter 键快速添加
- 自动收集并排序所有可用标签
界面优化:
- 使用蓝色圆角标签样式,视觉清晰
- 无标签时显示"无标签"提示
- 标签管理操作流畅,支持即时添加删除
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-07-29 16:14:16 +08:00