Commit Graph

510 Commits

Author SHA1 Message Date
github-actions[bot]
31ccf48b00 chore: sync VERSION file with release v1.1.45 and rebuild frontend [skip ci] 2025-07-29 08:14:59 +00: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
github-actions[bot]
f23b9bd222 chore: sync VERSION file with release v1.1.44 and rebuild frontend [skip ci] 2025-07-29 07:50:00 +00:00
shaw
ff6a361720 fix(admin-spa): 完善账户管理代理信息显示功能
- 修复账户列表中代理信息显示,支持用户名密码部分隐藏
- 修复编辑账户时自动勾选代理设置并正确显示代理信息
- 改进代理密码输入框使用密码类型
- 将 admin-spa/dist 目录加入 .gitignore 并从版本控制中移除

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 15:49:15 +08:00
github-actions[bot]
5795e8cdef chore: sync VERSION file with release v1.1.43 and rebuild frontend [skip ci] 2025-07-29 07:12:23 +00:00
shaw
9e693d3d7f fix(admin-spa): 修复多个管理后台问题
- 修复代理设置导致页面卡死的问题(循环更新)
- 修复Gemini账号授权码自动提取功能
- 修复账户名称验证无错误提示的问题
- 修复网站图标只在settings页面显示的问题
- 修复删除账户使用自定义确认弹窗
- 修复账号添加成功提示重复显示的问题
- 修复代理配置字段格式与原版不一致的问题
- 添加.gitignore忽略旧版web/admin和web/apiStats目录

所有问题已按照原版逻辑完整修复,提升了用户体验。
2025-07-29 15:11:35 +08:00
github-actions[bot]
5a6740cce7 chore: sync VERSION file with release v1.1.42 and rebuild frontend [skip ci] 2025-07-29 06:23:07 +00:00
shaw
9225c9f2f5 chore(admin-spa): 移除yarn.lock文件避免包管理器混淆
- 项目使用npm作为包管理器,已有package-lock.json
- 避免同时存在两个锁文件导致的版本不一致问题
- 统一使用npm以确保CI/CD构建的一致性
2025-07-29 14:19:28 +08:00
shaw
bd9001bdbe build: 优化admin-spa构建配置和环境变量
- 添加 .env.production 配置文件,确保workflow构建时使用正确的基础路径
- 更新 .gitignore 规则,允许提交生产环境配置
- 调整环境变量配置,支持自动化构建流程

这些更改确保GitHub Actions构建的前端能正确配置路由和API路径

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 14:06:33 +08:00
shaw
7b81106949 feat: 将admin-spa构建迁移到GitHub Actions workflow
🔄 主要改进:
- 在自动发布流程中添加admin-spa前端构建步骤
- 仅在web/admin-spa目录有改动时才触发构建
- 构建后的dist目录会自动包含在版本发布中
- 移除手动提交的dist目录,避免安全风险

🐛 修复:
- 修复登录后用户名显示为默认"Admin"的问题
- 现在会正确从服务器获取并显示实际用户名

🔒 安全优化:
- 防止恶意代码通过dist目录注入
- 所有前端代码都会在CI环境中重新构建

现在开发者无需手动构建前端,workflow会自动处理

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 13:45:11 +08:00
shaw
19cab40b77 feat(admin-spa): 添加构建后的dist目录并更新.gitignore
- 添加 admin-spa 构建后的 dist 目录
- 从 .gitignore 中移除 dist 忽略规则
- 确保 /admin-next 路由可以正常访问

现在访问 /admin-next/api-stats 将能正确加载新版管理界面

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 12:48:15 +08:00
shaw
414856f152 feat: 全新的Vue3管理后台(admin-spa)和路由重构
🎨 新增功能:
- 使用Vue3 + Vite构建的全新管理后台界面
- 支持Tab切换的API统计页面(统计查询/使用教程)
- 优雅的胶囊式Tab切换设计
- 同步了PR #106的会话窗口管理功能
- 完整的响应式设计和骨架屏加载状态

🔧 路由调整:
- 新版管理后台部署在 /admin-next/ 路径
- 将根路径 / 重定向到 /admin-next/api-stats
- 将 /web 页面路由重定向到新版,保留 /web/auth/* 认证路由
- 将 /apiStats 页面路由重定向到新版,保留API端点

🗑️ 清理工作:
- 删除旧版 web/admin/ 静态文件
- 删除旧版 web/apiStats/ 静态文件
- 清理相关的文件服务代码

🐛 修复问题:
- 修复重定向循环问题
- 修复环境变量配置
- 修复路由404错误
- 优化构建配置

🚀 生成方式:使用 Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 12:40:51 +08:00
shaw
c98de2aca5 feat(admin-spa): 同步PR #106的会话窗口管理功能到新版管理后台
- 在账户管理表格中添加'会话窗口'列
- 显示Claude账户的会话窗口状态(进度条、时间范围、剩余时间)
- 添加formatSessionWindow和formatRemainingTime格式化函数
- 完整同步原版PR #106的前端功能到重构后的admin-spa
2025-07-29 11:11:25 +08:00
KevinLiao
718733b78b feat: 增加账号session窗口管理与显示。后续可以据此优化账号轮转逻辑。
scripts目录有相关管理脚本,请自行探索
2025-07-28 15:51:38 +08:00
Wesley Liddick
e2f5c32cc0 Merge branch 'main' into main 2025-07-28 09:01:23 +08:00
Edric Li
9193d64d2a feat: 添加 OEM 设置功能并统一 API 统计页面样式
- 添加 OEM 设置管理功能,支持自定义网站名称和图标
- 支持图标文件上传和 Base64 编码存储
- 实现动态更新网站标题和 favicon
- 统一 API 统计页面与管理页面的样式和布局
- 修复文本颜色显示问题,提升可读性
- 优化错误处理和默认值回退机制
- 移除测试文件和冗余代码

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 23:20:44 +08:00
KevinLiao
75b4919693 feat: 优化APIKey查询
1. 查询相关接口修改为APIKey的UUID
2. 输入APIKey查询后,自动查询API的UUID并添加浏览器地址参数,后续可以直接复制链接进行查询。同时保证了APIKey的安全性
2025-07-27 23:20:15 +08:00
KevinLiao
64a5e4c773 fix: APIKey查询页面顶部文字颜色修正 2025-07-27 21:01:12 +08:00
KevinLiao
2de9c9e843 fix: 修复新增编辑APIKeys时,填写Token限制报错 2025-07-27 20:05:26 +08:00
KevinLiao
bdf125e001 fix: APIKey查询页面数据不正确的情况 2025-07-27 19:51:37 +08:00
KevinLiao
dfabd77928 fix: 调整样式 2025-07-27 18:42:07 +08:00
KevinLiao
85a8cae5ab feat: 新增用户统计页面,并作为默认路由 2025-07-27 18:12:50 +08:00
KevinLiao
a04dd06be9 feat: 新增ApiKey查询页面 2025-07-27 17:38:12 +08:00
KevinLiao
ac1e367a69 feat: 增加每日费用限制 2025-07-27 14:47:59 +08:00
KevinLiao
375d70ee1f feat: APIKeys 列表,统计周期选项增加今日。 2025-07-27 12:03:22 +08:00
Gemini Wen
5ca568e693 feat: format numbers >= million with M suffix and remove billion k formatting
- Update formatNumber function to display numbers >= 1 million with 'M' suffix
- Remove previous billion formatting with 'k' suffix
- Example: 2,500,000 displays as '2M' for better readability
- Use Math.floor() to ensure no decimal points in formatted numbers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 10:50:39 +08:00
Gemini Wen
2dbcb9d6f3 fix: remove decimal points from k-formatted numbers
- Use Math.floor() to display whole numbers for billion+ values
- Example: 2,500,123,456 displays as '2,500,123k' instead of '2,500,123.456k'
- Cleaner display for large token numbers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 10:04:21 +08:00
Gemini Wen
53e9e421c8 feat: format numbers >= billion with k suffix
- Update formatNumber function to display numbers >= 1 billion with 'k' suffix
- Example: 2,500,000,000 displays as '2,500,000k' for better readability
- Improves token statistics display for large numbers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 10:02:16 +08:00
Gemini Wen
c201a17cd4 feat: add flex-wrap to token display containers
- Add flex-wrap class to both today and total token stat containers
- Allows token numbers and costs to wrap on smaller screens
- Improves responsive layout for token statistics display

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 09:58:25 +08:00
Gemini Wen
e7940ea9f3 fix: stat-icons shrink behavior
- Fix missing space in flex-shrink-0 class for yellow stat-icon
- Add missing flex-shrink-0 to indigo stat-icon
- Ensures all stat icons have proper flex behavior

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 09:53:36 +08:00
Gemini Wen
ebccf2116d fix: improve spacing in Token statistics cards
- Add mr-8 right margin to flex-1 containers in Token cards
- Prevents overcrowding between cache data and card icons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 22:38:14 +08:00
Wesley Liddick
383f33fa77 Merge pull request #72 from kevinconan/main
feat: 增加APIKey 客户端限制功能
2025-07-26 11:03:06 +08:00
Wesley Liddick
cf0eaf0534 Merge branch 'main' into main 2025-07-26 10:05:24 +08:00
kevinconan
441361f3b4 Merge branch 'Wei-Shaw:main' into main 2025-07-26 08:57:03 +08:00
csdbit
fb306242c2 给API Keys和账号管理列表增加关键字段排序 2025-07-26 01:53:23 +08:00
KevinLiao
b8c7c3e9f5 feat: 增加APIKey 客户端限制功能 2025-07-25 23:36:48 +08:00
leslie
1cf70a627f 添加claude账号维度计算token费用 2025-07-25 21:36:17 +08:00
KevinLiao
e8d795713a feat: API页面增加统计时间选择 2025-07-25 10:42:19 +08:00
breaker
6a22163d83 feat: 支持通过URL参数切换管理界面标签页
- 添加URL参数解析功能,支持 ?tab=apiKeys 等参数直接跳转到指定标签页
- 切换标签页时自动更新URL,方便分享和书签
- 支持浏览器前进后退按钮,保持标签页状态同步
- 默认dashboard标签页不显示URL参数,保持简洁
2025-07-25 09:53:28 +08:00
KevinLiao
f614d54ab5 fix: APIKey列表费用及Token显示不准确的问题,目前显示总数
feat: 增加APIKey过期设置,以及到期续期的能力
2025-07-25 09:53:16 +08:00
shaw
521ba99f48 refactor: 重构GitHub Actions发布流程和修复管理界面问题
- 删除旧的auto-release.yml工作流,避免循环触发问题
- 新增auto-version-bump.yml:自动同步VERSION文件与release版本
- 新增release-on-version.yml:基于VERSION文件变更自动创建release
- 更新docker-publish.yml:简化触发条件,仅在tag推送时构建
- 添加RELEASE_PROCESS.md文档:详细说明新的发布流程
- 修复web管理界面:解决OAuth账户token刷新和代理配置相关问题

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 11:30:54 +08:00
shaw
2f4730baba 优化: 替换第三方CDN资源以提升加载速度
- 将所有第三方资源从 bootcdn 迁移到 cdnjs.cloudflare.com
- 移除 SRI 完整性校验以避免哈希值不匹配问题
- 添加 DNS 预取和预连接以加速资源加载
- 调整脚本加载顺序,确保依赖关系正确
- 保持所有库版本号不变 (Vue 3.3.4, Element Plus 2.4.4, Chart.js 4.4.0)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-23 11:15:33 +08:00
shaw
e77945a3e3 fix: 修复 API Key 编辑时服务权限和 Gemini 专属账号字段不显示的问题
- 创建 API Key 时添加 permissions 和 geminiAccountId 字段发送到后端
- 编辑 API Key 时正确加载和保存 permissions 和 geminiAccountId 字段
- 更新 openEditApiKeyModal 函数以包含这两个字段
- 更新 updateApiKey 函数的请求体以发送这两个字段

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-22 17:10:04 +08:00
shaw
11318c22b0 feat: 优化 Gemini OAuth 授权流程,使用固定的 localhost 回调地址
- 将 Gemini OAuth 回调地址固定为 http://localhost:45462
- 更新前端提示文字为"复制oauth后的链接"
- 实现自动提取 localhost:45462 链接中的 code 参数功能
- 删除不再需要的 web/auth_gemini 路由
- 添加详细的用户操作说明和错误处理提示
- 支持两种输入方式:完整链接或仅授权码

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-22 11:42:54 +08:00
shaw
38c1fc4785 feat: 添加多模型支持和OpenAI兼容接口
- 新增 Gemini 模型支持和账户管理功能
- 实现 OpenAI 格式到 Claude/Gemini 的请求转换
- 添加自动 token 刷新服务,支持提前刷新策略
- 增强 Web 管理界面,支持 Gemini 账户管理
- 优化 token 显示,添加掩码功能
- 完善日志记录和错误处理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-22 10:17:39 +08:00
shaw
088ce266ba feat: 添加API Key时间窗口限流功能并移除累计总量限制
- 新增时间窗口限流功能,支持按分钟设置时间窗口
- 支持在时间窗口内限制请求次数和Token使用量
- 移除原有的累计总量限制,只保留时间窗口限制
- Token统计包含所有4种类型:输入、输出、缓存创建、缓存读取
- 前端UI优化,明确显示限流参数的作用范围
- 限流触发时提供友好的错误提示和重置时间

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 15:58:00 +08:00
shaw
f962083752 feat: 为API Key添加模型限制功能
- 前端:在API Key创建和编辑表单中添加模型限制开关和标签输入
- 前端:支持动态添加/删除限制的模型列表
- 后端:更新API Key数据结构,新增enableModelRestriction和restrictedModels字段
- 后端:在中转请求时检查模型访问权限
- 修复:Enter键提交表单问题,使用@keydown.enter.prevent
- 优化:限制模型数据持久化,关闭开关时不清空数据

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-19 20:54:26 +08:00
shaw
f5968e518e feat: 改进管理界面弹窗体验和滚动条美化
- 修复API Key创建/编辑弹窗和账户信息修改弹窗在低高度屏幕上被遮挡的问题
- 为所有弹窗添加自适应高度支持,最大高度限制为90vh
- 美化Claude账户弹窗的滚动条样式,使用紫蓝渐变色与主题保持一致
- 添加响应式适配,移动设备上弹窗高度调整为85vh
- 优化滚动条交互体验,支持悬停和激活状态

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 23:49:55 +08:00
shaw
4372b29252 fix: 修复管理界面用户菜单z-index层级问题
- 修复了querySelector语法错误,移除了无效的@click属性选择器
- 为用户菜单容器添加专门的类名user-menu-container
- 简化点击检测逻辑,提高代码可维护性
- 解决了控制台报错问题

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17 21:07:50 +08:00
shaw
11873ed78b fix: 统一管理员密码管理机制,以init.json为唯一数据源
- app.js: 每次启动强制从init.json加载管理员凭据到Redis,确保数据一致性
- web.js: 修改密码时先更新init.json,成功后再更新Redis缓存
- cli/index.js: CLI创建管理员时同时更新init.json和Redis
- setup.js: 优化提示信息,明确重置密码需要重启服务
- admin.js: 修复Claude账户专属绑定功能的验证逻辑

解决了之前存在的双重存储同步问题,现在init.json是唯一真实数据源。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17 20:57:31 +08:00