shaw
|
07d80f76d0
|
chore: 忽略 TypeScript composite 模式生成的 vite.config.js
|
2026-01-05 08:39:49 +08:00 |
|
shaw
|
ad2ff90851
|
fix(前端): 修复 CSP 策略阻止 vue-i18n 运行时编译
使用 vue-i18n 纯运行时版本替代默认版本,避免运行时消息编译
需要 `new Function` 而被 CSP `script-src 'self'` 策略阻止。
|
2026-01-04 23:51:48 +08:00 |
|
shaw
|
46dda58355
|
Merge PR #146: feat: 提升流式网关稳定性与安全策略强化
|
2026-01-04 22:45:01 +08:00 |
|
shaw
|
e78c864650
|
Merge PR #142: feat: 多平台网关优化与用户系统增强
主要功能:
- Gemini OAuth 配额系统优化:Google One tier 自动推断
- Antigravity 网关增强:Thinking Block 重试、Claude 模型 signature 透传
- 账号调度改进:临时不可调度功能、负载感知调度优化
- 前端用户体验:账号管理界面优化、使用教程改进
冲突解决:保留 handleUpstreamError 的 prefix 参数和日志记录能力,
同时合并 PR 的 thinking block 重试和 model fallback 功能。
|
2026-01-04 20:30:19 +08:00 |
|
shaw
|
4df712624e
|
Merge branch 'slovx2/main'
|
2026-01-04 19:51:17 +08:00 |
|
shaw
|
a527559526
|
fix(test): 修复claude、openai oauth账号test刷新token的bug
|
2026-01-04 17:29:34 +08:00 |
|
shaw
|
678b088a13
|
Merge PR #137: fix(frontend): 修复跨时区日期范围筛选问题
|
2026-01-04 14:29:28 +08:00 |
|
shaw
|
fac19d258d
|
fix(oauth): 修复claude cookie添加账号时会话混淆的问题
|
2026-01-04 14:20:17 +08:00 |
|
shaw
|
70e9329e64
|
feat(proxy): 统一代理配置并支持 SOCKS5H 协议
- 新增 proxyutil 包,统一 HTTP/HTTPS/SOCKS5/SOCKS5H 代理配置逻辑
- SOCKS5H 支持服务端 DNS 解析,避免本地 DNS 泄露
- 移除 ProxyStrict 宽松模式,代理失败直接返回错误不回退直连
- 前端代理管理页面支持 SOCKS5H 协议的添加/编辑/批量导入
- 补充 IPv6 地址和特殊字符密码的边界测试
|
2026-01-04 11:43:58 +08:00 |
|
shaw
|
a11c71cea9
|
fix: 修复创建账号schedulable值默认为false的bug
|
2026-01-04 10:45:18 +08:00 |
|
shaw
|
d9b1587982
|
feat(gateway): 实现 Claude Code 系统提示词智能注入
|
2026-01-04 10:38:13 +08:00 |
|
shaw
|
631ba25e04
|
Merge branch 'feature/atomic-scheduling-v2'
|
2026-01-03 13:35:19 +08:00 |
|
shaw
|
9d3ec9e627
|
feat(keys): 适配 Antigravity 和 Gemini 平台的使用教程与 CCS 导入
- UseKeyModal: 添加 Antigravity 两级 Tab (Claude Code / Gemini CLI)
- UseKeyModal: 添加 Gemini 平台的 Gemini CLI 教程
- UseKeyModal: Antigravity 平台统一使用 /antigravity 后缀
- KeysView: CCS 导入支持 Antigravity (询问客户端) / Gemini / OpenAI
- i18n: 添加相关中英文翻译
|
2026-01-02 15:53:05 +08:00 |
|
shaw
|
b1528e9dec
|
Merge PR #126: feat(antigravity): 添加 models 端点支持
|
2026-01-02 14:28:21 +08:00 |
|
shaw
|
106e59b753
|
Merge PR #122: feat: 用户自定义属性系统 + Wechat 字段迁移
|
2026-01-01 20:25:50 +08:00 |
|
shaw
|
2c71c8b968
|
Merge PR #119: 支持自定义模型和优化模型选择
|
2026-01-01 17:02:54 +08:00 |
|
shaw
|
901b03b870
|
Merge PR #118: feat(gemini): 添加 Google One 存储空间推断 Tier 功能
|
2026-01-01 16:54:30 +08:00 |
|
shaw
|
4f13c8de0d
|
Merge PR #110: refactor(antigravity): 简化模型映射逻辑,支持前缀匹配
- 删除 GeminiQuotaService 及相关代码
- 删除负载感知调度(SelectAccountWithLoadAwareness)
- 简化并发控制,删除账号级等待队列
- 模型映射改用前缀匹配,覆盖版本变化
Closes #110
|
2026-01-01 11:21:09 +08:00 |
|
shaw
|
2a395d12a6
|
Merge branch 'feature/atomic-scheduling'
|
2026-01-01 11:05:22 +08:00 |
|
shaw
|
9d698d9306
|
Merge branch 'feature/gemini-quota' (PR #113)
feat: Gemini 配额模拟和限流功能
主要变更:
- 新增 GeminiQuotaService 实现基于 Tier 的配额管理
- RateLimitService 增加 PreCheckUsage 预检查功能
- gemini_oauth_service 改进 tier_id 处理逻辑(向后兼容)
- 前端新增配额可视化组件 (AccountQuotaInfo.vue)
- 数据库迁移: 为现有 Code Assist 账号添加默认 tier_id
技术细节:
- 支持 LEGACY/PRO/ULTRA 三种配额等级
- 配额策略可通过配置文件或数据库设置覆盖
- fetchProjectID 返回值保留 tierID(即使 projectID 获取失败)
- 删除冗余类型别名 ClaudeCustomToolSpec
|
2026-01-01 10:58:11 +08:00 |
|
 Wesley LiddickandGitHub
|
c5c12d4c8b
|
Revert "feat(gateway): 实现负载感知的账号调度优化 (#114)" (#117)
This reverts commit 8d252303fc.
|
2026-01-01 10:45:42 +08:00 |
|
shaw
|
312cc00d21
|
Merge branch 'IanShaw027/main'
|
2025-12-31 23:50:26 +08:00 |
|
shaw
|
8e55ee0e2c
|
style: fix gofmt formatting in claude_types.go
|
2025-12-31 23:50:15 +08:00 |
|
shaw
|
bb7ade265d
|
chore(token-refresh): 添加 Antigravity Token 刷新调试日志
- NeedsRefresh 判断为 true 时输出 expires_at、time_until_expiry、window
- 修正注释中的刷新窗口描述(10分钟 → 15分钟)
|
2025-12-31 23:37:51 +08:00 |
|
shaw
|
c5b792add5
|
fix(billing): 修复限额为0时消费记录失败的问题
- 添加 normalizeLimit 函数,将 0 或负数限额规范化为 nil(无限制)
- 简化 IncrementUsage,移除冗余的配额检查逻辑
- 配额检查已在请求前由中间件和网关完成
- 消费记录应无条件执行,确保数据完整性
- 删除测试限额超出行为的无效集成测试
|
2025-12-31 22:48:35 +08:00 |
|
shaw
|
0b6371174e
|
fix(settings): 保存 Turnstile 设置时验证参数有效性
|
2025-12-31 21:11:10 +08:00 |
|
shaw
|
2c35f0276f
|
fix(frontend): 修复无限制订阅的显示问题
|
2025-12-31 20:46:54 +08:00 |
|
shaw
|
3fd9bd4a80
|
fix(ci): 使用预处理的小写 owner 替代 lower 函数
GoReleaser 不支持 lower 模板函数,改为:
- 在 GitHub Actions 中预处理小写 owner
- 传递 GITHUB_REPO_OWNER_LOWER 环境变量给 GoReleaser
|
2025-12-31 17:25:43 +08:00 |
|
shaw
|
9aeef15d1b
|
fix(ci): GHCR 镜像名转为小写
|
2025-12-31 17:12:09 +08:00 |
|
shaw
|
8df662d0d2
|
Merge PR #105: fix(数据层): 修复软删除与唯一约束冲突问题 和 添加 model 参数必填验证
|
2025-12-31 16:44:33 +08:00 |
|
shaw
|
81213f2324
|
refactor(service): 统一时间戳解析,支持多种格式
新增 Account.GetCredentialAsTime 方法,统一处理凭证中的时间戳字段,
兼容 RFC3339 字符串、Unix 时间戳字符串和数字类型。
- 重构 Claude/Gemini/Antigravity TokenRefresher.NeedsRefresh
- 移除重复的 parseExpiresAt/parseAntigravityExpiresAt 函数
- 简化 GetOpenAITokenExpiresAt 实现
- 新增 RFC3339 格式单元测试用例
|
2025-12-31 16:25:45 +08:00 |
|
shaw
|
aac7dd6b08
|
style: fix gofmt formatting in test file
Remove redundant alignment whitespace before comments.
|
2025-12-31 15:52:02 +08:00 |
|
shaw
|
0f4dd9726c
|
Merge branch 'tyqy12/main'
|
2025-12-31 14:25:49 +08:00 |
|
shaw
|
b18f5f8c14
|
chore: 删除冗余的 Modal.vue
项目已有 BaseDialog.vue 组件提供相同功能,此组件属于误提交。
|
2025-12-31 14:25:28 +08:00 |
|
shaw
|
db876ba75f
|
feat(ci): 添加 GitHub Container Registry (GHCR) 支持
|
2025-12-31 14:21:40 +08:00 |
|
shaw
|
b7c6d040dd
|
fix: 修复Antigravity token刷新间隔问题
|
2025-12-31 10:33:00 +08:00 |
|
shaw
|
4319cf7f31
|
fix(仓储): 修复 BatchUpdateLastUsed 时间戳类型不匹配
在原生 SQL 的 CASE WHEN 语句中,PostgreSQL 无法自动推断占位符参数类型,
导致 time.Time 被当作 text 类型处理,与 last_used_at 列的 timestamptz 类型不匹配。
添加显式类型转换 ::timestamptz 解决此问题。
|
2025-12-30 23:11:49 +08:00 |
|
shaw
|
1ecef269f7
|
fix: 去除openai-apkey账户请求路径多余的v1
|
2025-12-30 23:07:25 +08:00 |
|
shaw
|
ec87f39da5
|
feat: 从 gorm 迁移到 ent (#92)
## 主要变更
- 将 ORM 从 GORM 迁移到 Ent
- 使用 SQL 文件迁移替代 GORM AutoMigrate
- 新增迁移运行器支持分布式锁和校验和验证
- 优化 Repository 层查询,新增轻量级存在性检查方法
- 新增完整的单元测试覆盖删除操作
## 迁移优势
- 类型安全与编译期校验
- 关系建模更清晰(Edge/Through)
- 查询一致性更好
- 迁移可控(SQL 文件作为唯一事实来源)
- 可维护性提升
## 新增迁移文件
- 005_schema_parity.sql: 字段对齐
- 006_fix_invalid_subscription_expires_at.sql: 修复过期时间
- 007_add_user_allowed_groups.sql: 用户允许分组表
- 008_seed_default_group.sql: 默认分组种子
- 009_fix_usage_logs_cache_columns.sql: 缓存列修复
|
2025-12-30 17:09:15 +08:00 |
|
shaw
|
3d296d8898
|
style: 修复 gofmt 格式化问题
格式化以下测试文件以符合 Go 代码风格规范:
- fixtures_integration_test.go
- user_repo_integration_test.go
- api_key_service_delete_test.go
|
2025-12-30 17:08:36 +08:00 |
|
shaw
|
fb883f0092
|
fix: 修复默认分组初始化导致启动失败的问题
- 标准版不再创建默认分组,简易模式保持创建
- 简易模式下删除默认分组后重启自动恢复(而非报唯一键冲突)
- AutoMigrate 函数增加 runMode 参数以区分运行模式
|
2025-12-30 14:30:16 +08:00 |
|
shaw
|
64b8219245
|
fix: 分配订阅的用户搜索改为后端搜索
|
2025-12-30 11:43:26 +08:00 |
|
shaw
|
2004230b66
|
Merge branch 'fix/token-invalidation-on-password-change'
|
2025-12-30 11:19:58 +08:00 |
|
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 |
|
shaw
|
6e21a52271
|
chore(frontend): 更新依赖锁文件
|
2025-12-29 19:39:18 +08:00 |
|
shaw
|
4bbf71b7da
|
fix(frontend): 修复新手引导中Select下拉框无法点击的问题
- 使用 Teleport 将 Select 下拉菜单渲染到 body,避免 driver.js 遮罩层阻挡
- 添加 pointer-events 和 @click.stop 确保下拉选项可点击
- 移除 useOnboardingTour 中无效的 Select 组件处理代码
- 清理未使用的 CSS 样式和 console 调试语句
- 简化 Select 组件在引导期间的交互逻辑
|
2025-12-29 19:38:33 +08:00 |
|
shaw
|
ef22d6f628
|
chore(frontend): 移除未使用的新手引导组件残留代码
删除开发过程中遗留的未使用文件:
- TourDescription.vue: 未被使用的结构化描述组件
- useTourStepDescription.ts: 步骤key映射,引用的组件从未创建
- TourStepDescriptions/: 空的组件目录
当前实现通过 i18n + HTML 字符串直接提供描述内容,无需这些文件。
|
2025-12-29 17:12:19 +08:00 |
|
shaw
|
c01db6b180
|
fix: 修复快捷添加代理IP弹窗关闭的bug
|
2025-12-29 09:30:32 +08:00 |
|
shaw
|
32b4b139a4
|
fix: 修复因移除 SimpleMode 导致的测试编译错误
- 移除 api_contract_test.go 中的 SettingKeySimpleMode 引用
- 移除期望响应中的 simple_mode 字段
- 修复 NewSettingHandler 调用参数数量
|
2025-12-29 09:24:21 +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 |
|
shaw
|
1f5ced7069
|
fix(frontend): resolve TypeScript errors in simple mode implementation
- Remove unused simpleMode variable in AppSidebar.vue
- Add run_mode to AuthResponse.user type definition
|
2025-12-29 08:51:57 +08:00 |
|
shaw
|
e247be6ead
|
fix(frontend): 修复账号管理页面 API Key 类型的提示文案错误
- 添加 OpenAI/Gemini 平台的 baseUrlHint 和 apiKeyHint 国际化文案
- 修改 CreateAccountModal 和 EditAccountModal 根据平台显示正确提示
- 将重复的平台判断逻辑抽取为 computed 属性,优化代码结构
|
2025-12-28 23:24:46 +08:00 |
|
shaw
|
30b95cf5ce
|
fix(usage): 分离 API 响应和窗口统计缓存,修复 5h 窗口未激活时的显示 bug
问题:
1. WindowStats 与 API 响应一起缓存 10 分钟,导致费用数据更新延迟
2. 当 5h 窗口未激活(ResetsAt 为空)时,FiveHour 为 nil,导致所有窗口的 WindowStats 都无法显示
修复:
- 分离缓存:API 响应缓存 10 分钟,窗口统计独立缓存 1 分钟
- RemainingSeconds 每次请求时实时计算
- FiveHour 对象始终创建(即使 ResetsAt 为空)
- addWindowStats 增强防护,支持 FiveHour 为 nil 时仍处理其他窗口
|
2025-12-28 23:12:44 +08:00 |
|
shaw
|
25b8a22648
|
fix(test): 测试用例添加 simple_mode 字段
API 响应新增 simple_mode 字段,同步更新测试期望值
|
2025-12-28 22:51:22 +08:00 |
|
shaw
|
0084da9ca5
|
fix: 修复 NewSettingHandler 参数不足导致的编译错误
- 测试文件添加第三个参数 userService(nil)
- Handler 添加 userService 空指针检查,防止测试环境 panic
|
2025-12-28 22:45:13 +08:00 |
|
shaw
|
31d4c1d2fe
|
fix(frontend): 修复 Select 下拉菜单选项文本被截断的问题
- 修改下拉框宽度策略为 min-w-full w-max max-w-[300px],允许自动扩展
- 添加 left-0 确保下拉框左对齐
- 为选项标签添加 flex-1 min-w-0 text-left 确保正确布局
|
2025-12-28 22:34:42 +08:00 |
|
shaw
|
7d4b7deea9
|
feat: 添加简单模式功能
新增简单模式设置,适合个人使用场景:
- 隐藏多用户管理相关菜单(用户管理、兑换码等)
- 自动关闭用户注册功能
- 管理员并发数自动设为无限制(99999)
- 侧边栏根据模式动态调整菜单项
同时优化分组页面的"专属分组"功能,添加帮助提示说明使用场景
|
2025-12-28 22:19:18 +08:00 |
|
shaw
|
fb9d087838
|
Merge PR #62: refactor(frontend): 前端界面优化与订阅状态管理增强
|
2025-12-28 16:26:13 +08:00 |
|
 Wesley LiddickandGitHub
|
18c6686fed
|
Merge branch 'main' into feature/ui-improvements-clean
|
2025-12-28 03:22:11 -05:00 |
|
shaw
|
9bbe468c91
|
fix: 修复安装脚本通过 pipe 执行时 root 权限检查失效的问题
使用 `id -u` 替代 `$EUID` 进行 root 权限检查。
`$EUID` 是 bash 内置变量,在通过 pipe 执行脚本时可能不可靠。
|
2025-12-28 12:25:55 +08:00 |
|
shaw
|
fbdff4f34f
|
fix: 防止订阅过期时间超出 JSON 序列化范围
问题:当分配订阅天数过大时,expires_at 年份可能超过 9999,
导致 time.Time JSON 序列化失败(RFC 3339 要求年份 <= 9999),
使后台无法显示和删除异常数据。
修复:
- handler 层添加 validity_days 最大值验证(max=36500,即100年)
- service 层添加 MaxValidityDays 和 MaxExpiresAt 双重保护
- 启动时自动修复已存在的异常数据(expires_at > 2099年)
|
2025-12-28 11:45:41 +08:00 |
|
shaw
|
0aa480283f
|
Merge branch 'feat/deferred-batch-update'
|
2025-12-28 11:28:06 +08:00 |
|
shaw
|
cd9d31f5f2
|
fix: 修复NeedsRefresh bug导致刷新失败的问题
|
2025-12-28 11:23:52 +08:00 |
|
shaw
|
b5ca6a654c
|
Merge branch 'main' of github.com:Wei-Shaw/sub2api
# Conflicts:
|
2025-12-27 21:16:29 +08:00 |
|
shaw
|
94749b12ac
|
chore: 调整deploy说明以及取消postgres端口暴露
|
2025-12-27 21:14:08 +08:00 |
|
shaw
|
54636781ea
|
Merge branch 'feature/datatable-enhancements'
|
2025-12-27 21:00:37 +08:00 |
|
shaw
|
5187db5ee5
|
fix(frontend): 修复DataTable无限循环和i18n邮箱解析错误
- 修复DataTable组件watch监听actionsExpanded导致的无限循环卡死问题
- 为AccountsView和UsersView添加actionsCount属性启用操作列展开功能
- 修复i18n翻译中邮箱地址的@符号未转义导致的编译错误
|
2025-12-27 21:00:26 +08:00 |
|
shaw
|
0b9c4ae69e
|
fix: 修复claude setup token授权效期短的问题
|
2025-12-27 20:42:00 +08:00 |
|
shaw
|
0d5a8a95c8
|
fix: 修复claude token刷新失效的问题
|
2025-12-27 20:13:39 +08:00 |
|
shaw
|
80cce858cb
|
fix(frontend): 修复添加账号弹窗宽度和tooltip被截断问题
- 将弹窗尺寸从 lg 改为 xl,增加内容显示空间
- 修复 AI Studio tooltip 被弹窗边界截断的问题
- 调整定位从 left-0 改为 right-0
- 减小宽度从 w-[28rem] 改为 w-80
- 提高 z-index 确保正确显示
|
2025-12-27 17:04:38 +08:00 |
|
shaw
|
0743652d92
|
Merge branch 'feature/ui-and-backend-improvements'
|
2025-12-27 16:33:57 +08:00 |
|
shaw
|
f133b051dc
|
fix: 修复TG通知workflow语法错误
- 移除if条件中对secrets的直接引用(GitHub Actions不支持)
- 改用shell脚本内部检查环境变量是否存在
|
2025-12-27 16:03:13 +08:00 |
|
shaw
|
7af1bdbf4c
|
chore: workflow增加TG频道更新通知
|
2025-12-27 15:55:09 +08:00 |
|
shaw
|
016d7ef645
|
feat: 增强前端clipboard功能
|
2025-12-27 15:16:52 +08:00 |
|
shaw
|
f1e47291cd
|
fix: 修复账号更新时分组绑定操作顺序导致的数据不一致问题
原逻辑先执行 Update 再验证 GroupIDs,如果验证失败会导致账号已更新但返回错误。
现改为先验证分组是否存在,再执行 Update 和 BindGroups。
|
2025-12-27 14:57:43 +08:00 |
|
shaw
|
d7e9ae38e4
|
Merge PR #49: feat: cc/codex/gemini 增加账号重试功能
|
2025-12-27 13:59:00 +08:00 |
|
shaw
|
2101f1d1c8
|
fix: 修复claude OAuth账户刷新token失败的bug
|
2025-12-27 13:50:35 +08:00 |
|
shaw
|
2b79c4e8b7
|
chore: home页面更新gemini为已支持
|
2025-12-26 23:13:00 +08:00 |
|
shaw
|
429f38d0c9
|
Merge PR #37: Add Gemini OAuth and Messages Compat Support
|
2025-12-26 22:42:34 +08:00 |
|
shaw
|
2d89f36687
|
Merge PR #42: fix(sse): 修复非标准 SSE 格式解析问题
|
2025-12-26 21:31:34 +08:00 |
|
shaw
|
3d608c2625
|
Merge branch 'refactor/redis-key-helpers'
|
2025-12-26 21:26:18 +08:00 |
|
shaw
|
739d0ee61e
|
fix: admin handlers 添加 DTO 转换修复 JSON 序列化
修复 PR #36 合并后部分 admin handler 直接返回 service 层对象导致
JSON 字段名为 PascalCase 而非期望的 snake_case 问题。
修复内容:
- account_handler: Refresh 接口添加 dto.AccountFromService
- openai_oauth_handler: RefreshAccountToken/CreateAccountFromOAuth 添加 dto 转换
- subscription_handler: BulkAssign 添加 dto.BulkAssignResultFromService
- usage_handler: List 接口添加 dto.UsageLogFromService 转换
- 新增 dto.BulkAssignResult 类型和对应的 mapper 函数
|
2025-12-26 21:22:48 +08:00 |
|
shaw
|
22f07a7bb6
|
Merge PR #36: refactor: 调整项目结构为单向依赖
|
2025-12-26 20:08:26 +08:00 |
|
shaw
|
ecb2c5353c
|
fix: 修复docker-compose.yml redis密码传递问题
|
2025-12-26 17:25:12 +08:00 |
|
shaw
|
b3463769dc
|
chore: 调整403重试次数跟间隔
|
2025-12-26 14:19:57 +08:00 |
|
shaw
|
d9e6cfc44d
|
feat: apikey使用弹出适配codex分组
|
2025-12-26 13:46:40 +08:00 |
|
shaw
|
b31698b9f2
|
fix: 修复账户代理ip编辑保存不生效的bug
|
2025-12-25 21:58:09 +08:00 |
|
shaw
|
5fca2d10b9
|
fix: 修复image地址
|
2025-12-25 16:57:29 +08:00 |
|
shaw
|
8fbe1ad70d
|
chore: 调整403重试次数跟间隔
|
2025-12-25 16:23:31 +08:00 |
|
shaw
|
4a2f7d4a99
|
chore: CRS迁移功能增加版本提示
|
2025-12-25 10:57:04 +08:00 |
|
shaw
|
c19a393be9
|
Merge PR #24: feat: 添加账户同步与批量编辑功能
- 添加从 CRS 同步账户功能 (Claude OAuth/API Key, OpenAI OAuth/Responses)
- 添加批量编辑账户功能,支持 JSONB 字段智能合并
- 新增 CRSSyncService、BulkUpdate 仓储方法
- 前端新增 SyncFromCrsModal 和 BulkEditAccountModal 组件
|
2025-12-25 10:44:40 +08:00 |
|
shaw
|
876e85e7ad
|
Merge branch 'feat/rename-go-module'
|
2025-12-24 21:34:37 +08:00 |
|
shaw
|
2e7818d688
|
feat(settings): 添加文档链接配置功能
- 后台系统设置新增文档链接(doc_url)配置项
- 首页顶部导航栏显示文档链接图标(条件渲染)
- Footer区域添加文档链接和GitHub链接
- 支持中英文国际化
|
2025-12-24 21:30:19 +08:00 |
|
shaw
|
e65e9587b4
|
fix(concurrency): 重构并发管理使用独立Key+原生TTL
问题:旧方案使用计数器模式,每次acquire都刷新TTL,导致僵尸数据永不过期
解决方案:
- 每个槽位使用独立Redis Key: concurrency:account:{id}:{requestID}
- 利用Redis原生TTL,每个槽位独立5分钟过期
- 服务崩溃后僵尸数据自动清理,无需手动干预
- 兼容多实例K8s部署
技术改动:
- 新增SCAN脚本统计活跃槽位数量
- 移除冗余的releaseScript,直接使用DEL命令
- Wait队列TTL只在首次创建时设置,避免刷新
|
2025-12-24 21:00:29 +08:00 |
|
shaw
|
aaadd6ed04
|
fix(dashboard): 修复性能指标 RPM/TPM 显示为0的问题
- 修复 Admin Dashboard Handler 遗漏返回 rpm/tpm 字段
- 将性能统计时间窗口从1分钟改为5分钟平均值,数据更稳定
|
2025-12-24 19:58:33 +08:00 |
|
shaw
|
870b21916c
|
feat(install): 添加安装指定版本和回退功能
- 新增 rollback 命令支持回退到指定版本
- 新增 list-versions 命令列出可用版本
- 新增 -v/--version 参数指定安装版本
- upgrade 命令支持升级到指定版本
- 添加安装状态检查,未安装时给出明确提示
- 版本切换仅替换二进制文件,保留配置和数据
- 自动备份当前版本(带版本号或时间戳后缀)
- 改进网络错误处理,添加超时和友好提示
- 修复 grep -oP 兼容性问题,改用 grep -oE
|
2025-12-24 17:44:13 +08:00 |
|
shaw
|
fb119f9a67
|
fix(version): 优化服务重启后页面刷新时机
- 将重启后等待时间从 3 秒增加到 8 秒
- 添加倒计时显示,提升用户体验
- 倒计时结束后先检测服务健康状态再刷新页面
- 避免刷新过早导致 502 错误
|
2025-12-24 17:21:17 +08:00 |
|
shaw
|
ad54795a24
|
feat(gateway): 添加上游错误重试机制
- OAuth/Setup Token 账号遇到 403 错误时,等待 2 秒后重试,最多 3 次
- Console 账号遇到未配置的错误码时,同样进行重试
- 重试耗尽后:OAuth 403 标记账号异常,Console 未配置错误码不标记账号
- 移除 handleErrorResponse 中已被重试逻辑覆盖的死代码
|
2025-12-24 16:55:46 +08:00 |
|
shaw
|
0abe322cca
|
feat(accounts): 账户列表显示实时并发数
- 在账户列表 API 返回中添加 current_concurrency 字段
- 合并平台和类型列为 PlatformTypeBadge 组件,节省表格空间
- 新增并发状态列,显示 当前/最大 并发数,支持颜色编码
|
2025-12-24 15:44:45 +08:00 |
|