Wesley Liddick
5602d02b1b
Merge pull request #343 from mt21625457/main
...
fix(调度): 完善粘性会话清理与账号调度刷新 和 启用 OpenAI OAuth HTTP/2 并修复清理任务 lint
2026-01-20 16:05:53 +08:00
shaw
192efb84a0
feat(promo-code): complete promo code feature implementation
...
- Add promo_code_enabled field to SystemSettings and PublicSettings DTOs
- Add promo code validation in registration flow
- Add admin settings UI for promo code configuration
- Add i18n translations for promo code feature
2026-01-20 15:56:26 +08:00
yangjianbo
2a16735495
fix(测试): 修复 SelectAccountWithLoadAwareness 调用缺少参数
...
为 gateway_multiplatform_test.go 中的 SelectAccountWithLoadAwareness
调用添加缺少的第6个参数 metadataUserID,修复 CI 测试编译错误。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-20 14:16:46 +08:00
yangjianbo
292f25f9ca
Merge branch 'main' of https://github.com/mt21625457/aicodex2api
2026-01-20 14:02:08 +08:00
yangjianbo
f6ed3d1456
Merge branch 'test' into dev
2026-01-20 11:59:13 +08:00
yangjianbo
91f01309da
fix(调度): 完善粘性会话清理与账号调度刷新
...
- Update/BulkUpdate 按不可调度字段触发缓存刷新
- GatewayCache 支持多前缀会话键清理
- 模型路由与混合调度优化粘性会话处理
- 补充调度与缓存相关测试覆盖
2026-01-20 11:40:55 +08:00
Gemini Wen
cc07a0e295
feat(subscription): 支持调整订阅时长(延长/缩短)
...
- 将"延长订阅"功能改为"调整订阅",支持正数延长、负数缩短
- 后端验证:调整天数范围 -36500 到 36500,缩短后剩余天数必须 > 0
- 前端同步更新界面文案和验证逻辑
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-20 00:11:30 +08:00
yangjianbo
73e6b160f8
feat(认证): 启用 OpenAI OAuth HTTP/2 并修复清理任务 lint
...
为共享 req 客户端增加 HTTP/2 选项与缓存隔离
OpenAI OAuth 超时提升到 120s,并按协议控制强制
新增客户端池与 OAuth 客户端单测覆盖
修复 usage cleanup 相关 errcheck/ineffassign/staticcheck 并统一格式
测试: make test
2026-01-19 19:50:57 +08:00
shaw
b1a980f344
feat: 添加隐藏CCS导入按钮的设置选项
...
在管理后台设置页面新增开关,允许管理员隐藏API Keys页面的"导入CCS"按钮
2026-01-19 19:25:16 +08:00
shaw
3dab71729d
feat: usage接口支持TLS指纹和缓存User-Agent
2026-01-19 17:06:16 +08:00
shaw
090c8981dd
fix: 更新Claude OAuth授权配置以匹配最新规范
...
- 更新TokenURL和RedirectURI为platform.claude.com
- 更新scope定义,区分浏览器URL和内部API调用
- 修正state/code_verifier生成算法使用base64url编码
- 修正授权URL参数顺序并添加code=true
- 更新token交换请求头匹配官方实现
- 清理未使用的类型和函数
2026-01-19 16:40:06 +08:00
shaw
fbb572948d
fix: 修复会话数量查询使用错误的超时配置
2026-01-19 11:45:04 +08:00
shaw
a652b513d3
fix: handle 400 error for disabled organization
2026-01-19 10:54:40 +08:00
shaw
ccfeaeb22d
feat: 新增会话ID伪装功能,优化日志系统
...
- 新增 session_id_masking_enabled 配置,启用后将在15分钟内固定
metadata.user_id 中的 session ID
- TLS fingerprint 模块日志从自定义 debugLog 迁移到 slog
- main.go 添加 slog 初始化,根据 gin mode 设置日志级别
- 前端创建/编辑账号模态框添加会话ID伪装开关
- 多语言支持(中英文)
2026-01-19 10:22:13 +08:00
shaw
4c12799a95
fix: 补充测试桩缺失的接口方法
2026-01-19 09:28:11 +08:00
Wesley Liddick
0f8d42c577
Merge pull request #327 from mt21625457/main
...
feat(usage): 添加清理任务与统计过滤
2026-01-19 09:18:00 +08:00
Wesley Liddick
03c7578713
Merge pull request #325 from slovx2/main
...
fix(antigravity): 修复Antigravity 频繁429的问题,以及一系列优化,配置增强
2026-01-19 09:17:15 +08:00
shaw
de6797c560
fix: 修复5小时窗口费用不重置的问题
...
- 新增 GetCurrentWindowStartTime() 方法,当窗口过期时自动使用新的预测窗口开始时间
- UpdateSessionWindow 更新窗口时间后触发 outbox 事件同步调度器缓存
- 统一所有窗口费用查询入口使用新方法
2026-01-19 09:13:15 +08:00
shaw
46ae08ecb7
fix: 补充测试桩缺失的接口方法
2026-01-18 22:23:03 +08:00
shaw
2028cc29b7
fix: 修复多个管理后台问题
...
- 分页接口 page_size 最大限制从 100 改为 1000
- 通过 Redis Pub/Sub 实现跨实例认证缓存失效
- 允许订阅类型分组编辑计费倍率
- 账号计费倍率支持 3 位小数
2026-01-18 22:13:47 +08:00
shaw
f6360e0bf3
fix: 移除未使用的 extractSessionUUID 函数
...
修复 golangci-lint unused 检查报错
2026-01-18 20:15:02 +08:00
shaw
9abda1bc59
feat(tls): 新增 TLS 指纹模拟功能
2026-01-18 20:08:40 +08:00
shaw
a07174c191
fix: 修复会话限制功能并在创建账号时支持配额控制
2026-01-18 16:41:15 +08:00
yangjianbo
bdc426a774
Merge branch 'main' into dev
2026-01-18 15:55:58 +08:00
Wesley Liddick
a82029b0cf
Merge pull request #318 from IanShaw027/main
...
fix(openai): OpenCode 兼容性增强 - 工具过滤和粘性会话修复
2026-01-18 14:30:53 +08:00
Wesley Liddick
0c2a901af4
Merge pull request #317 from IanShaw027/fix/gemini-issue
...
fix(gemini,group): 更新 Gemini 模型配置并补齐 SIMPLE 默认分组
2026-01-18 14:30:42 +08:00
yangjianbo
bd18f4b8ef
feat(清理任务): 引入Ent存储并补充日志与测试
...
新增 usage_cleanup_task Ent schema 与仓储实现,支持清理任务排序分页
补充清理任务全链路日志、仪表盘重算触发及 UI 过滤调整
完善 repository/service 单测并引入 sqlite 测试依赖
2026-01-18 14:18:28 +08:00
yangjianbo
ef5a41057f
feat(usage): 添加清理任务与统计过滤
2026-01-18 10:52:18 +08:00
song
8b071cc665
fix(antigravity): restore signature retry and base order
2026-01-17 22:50:50 +08:00
song
959f6c538a
fix(antigravity): remove thinking sanitation
2026-01-17 22:21:48 +08:00
song
217b3b59c0
fix(antigravity): drop MarkUnavailable
2026-01-17 21:59:32 +08:00
song
ec916a3197
fix(antigravity): remove signature retry
2026-01-17 21:56:57 +08:00
song
22eb72e0f9
fix(antigravity): restore url fallback behavior
2026-01-17 21:50:09 +08:00
song
07ba64c666
fix(antigravity): handle url-level 429 without failover
2026-01-17 21:37:32 +08:00
song
f22bc59fe3
fix(antigravity): route signature retry through url fallback
2026-01-17 21:15:33 +08:00
song
5e9f5efbe3
chore: log antigravity signature retry 429
2026-01-17 18:22:53 +08:00
song
a7a0017aa8
chore: gofmt antigravity gateway service
2026-01-17 18:22:43 +08:00
song
9078b17a41
test: add antigravity rate limit coverage
2026-01-17 18:15:45 +08:00
song
b9b4db3df5
Merge upstream/main
2026-01-17 18:00:07 +08:00
song
5a6f60a954
fix(antigravity): 区分 URL 级别和账户配额级别的 429 限流
...
- "Resource has been exhausted" → URL 级别限流,立即切换 URL
- "exhausted your capacity on this model" → 账户配额限流,重试 3 次(指数退避)后标记限流
2026-01-17 11:11:18 +08:00
IanShaw027
a61cc2cb24
fix(openai): 增强 Codex 工具过滤和参数标准化
...
- codex_transform: 过滤无效工具,支持 Responses-style 和 ChatCompletions-style 格式
- tool_corrector: 添加 fetch 工具映射,修正 bash/edit 参数命名规范
2026-01-17 11:00:07 +08:00
song
31933c8a60
fix: 删除未使用的字段修复 lint 错误
2026-01-17 10:40:28 +08:00
song
78bccd032d
refactor(antigravity): 提取公共重试循环函数减少重复代码
...
- 新增 antigravityRetryLoop 函数统一处理 Forward 和 ForwardGemini 的重试逻辑
- 429 日志增加 base_url 字段便于调试
- 删除重复的 shouldRetryUpstreamError 方法
2026-01-17 10:28:31 +08:00
IanShaw027
ae21db77ec
fix(openai): 使用 prompt_cache_key 兜底粘性会话
...
opencode 请求不带 session_id/conversation_id,导致粘性会话失效。现在按 header 优先、prompt_cache_key 兜底生成 session hash,并补充单测验证优先级。
2026-01-17 02:31:16 +08:00
song
ac7503d95f
fix(antigravity): 429 时也切换 URL 重试
...
- 429 优先切换到下一个 URL 重试
- 只有所有 URL 都返回 429 时才限流账户并返回错误
- 与 client.go 中的逻辑保持一致
2026-01-17 02:14:57 +08:00
song
69c4b17a9b
feat(antigravity): 动态 URL 排序,最近成功的优先使用
...
- URLAvailability 新增 lastSuccess 字段追踪最近成功的 URL
- GetAvailableURLs 返回列表时优先放置 lastSuccess
- 所有 Antigravity API 调用成功后调用 MarkSuccess 更新优先级
2026-01-17 01:54:14 +08:00
IanShaw027
28e46e0e7c
fix(gemini): 更新 Gemini 模型列表配置
...
- 移除已弃用的 1.5 系列模型
- 调整模型优先级顺序(2.0 Flash > 2.5 Flash > 2.5 Pro > 3.0 Preview)
- 同步前后端模型配置
- 更新相关测试用例和默认模型选择逻辑
2026-01-16 23:47:42 +08:00
shaw
7379423325
feat: 添加5h窗口费用控制和会话数量限制
...
- 支持Anthropic OAuth/SetupToken账号的5h窗口费用阈值控制
- 支持账号级别的并发会话数量限制
- 使用Redis缓存窗口费用(30秒TTL)减少数据库压力
- 费用计算基于标准费用(不含账号倍率)
2026-01-16 23:36:52 +08:00
song
1be3eacad5
feat(scheduling): 兜底层账户选择策略可配置
...
- gateway.scheduling.fallback_selection_mode: "last_used"(默认) 或 "random"
- last_used: 按最后使用时间排序(轮询效果)
- random: 同优先级内随机选择
2026-01-16 20:47:07 +08:00
song
34d6b0a601
feat(gateway): 账户切换次数和 Antigravity 限流时间可配置
...
- gateway.max_account_switches: 账户切换最大次数,默认 10
- gateway.max_account_switches_gemini: Gemini 账户切换次数,默认 3
- gateway.antigravity_fallback_cooldown_minutes: Antigravity 429 fallback 限流时间,默认 5 分钟
- Antigravity 429 不再重试,直接标记账户限流
2026-01-16 20:18:30 +08:00