shaw
|
a527559526
|
fix(test): 修复claude、openai oauth账号test刷新token的bug
|
2026-01-04 17:29:34 +08:00 |
|
IanShaw027
|
7e6a197ddb
|
fix(test): 修复集成测试中 Create 方法的返回值处理
|
2026-01-04 17:27:32 +08:00 |
|
IanShaw027
|
603b361fb9
|
fix(test): 修复 api_contract_test 的接口签名和参数问题
|
2026-01-04 17:21:13 +08:00 |
|
IanShaw027
|
2632a7102d
|
refactor(settings): 规范化缩写词命名并优化前端帮助界面
- 后端:将 Smtp/Api/Doc 字段改为 SMTP/API/Doc(遵循 Go 命名规范)
- 前端:添加 Gemini 帮助按钮,简化配额说明展示
|
2026-01-04 17:02:38 +08:00 |
|
song
|
63453fbfa0
|
style: gofmt
|
2026-01-04 16:58:51 +08:00 |
|
song
|
50f9272850
|
feat(antigravity): gemini-2.5-flash-image 转发到 gemini-3-pro-image
|
2026-01-04 16:53:35 +08:00 |
|
song
|
3932bf0353
|
fix: 转发失败日志添加账户ID信息
|
2026-01-04 16:45:11 +08:00 |
|
song
|
ce2422324c
|
fix(antigravity): 增加流式读取错误日志的账户信息
|
2026-01-04 15:59:21 +08:00 |
|
song
|
0aa216915b
|
fix(antigravity): 减少 API 转发最大重试次数至 3
|
2026-01-04 15:59:21 +08:00 |
|
song
|
60afc7f3ed
|
fix: 恢复 thinking block 处理逻辑
- 修复合并冲突导致的逻辑错误
- Gemini 模型使用 dummy signature
- Claude 模型跳过无 signature 的 thinking block
- 删除未使用的 isValidThoughtSignature 函数
|
2026-01-04 15:59:21 +08:00 |
|
song
|
1dd3521190
|
fix(antigravity): 优化 token 刷新错误处理
- 不可重试错误(invalid_grant等)直接标记 error,不重试
- 其他错误仅记录日志,不标记 error(可能是临时网络问题)
- 仅影响 Antigravity 账户,其他平台保持原有逻辑
|
2026-01-04 15:59:21 +08:00 |
|
song
|
44785a9a8c
|
feat(ci): 支持通过 repository variable 控制 SIMPLE_RELEASE
|
2026-01-04 15:59:21 +08:00 |
|
song
|
e91fba82a8
|
fix(ci): simple release 也构建前端
|
2026-01-04 15:59:21 +08:00 |
|
song
|
84d6480b4e
|
fix(ci): simple release 不嵌入前端
|
2026-01-04 15:59:21 +08:00 |
|
song
|
c0e296f4a9
|
feat(ci): 增加 SIMPLE_RELEASE 参数支持简化发布
|
2026-01-04 15:59:21 +08:00 |
|
song
|
0dc4b113d8
|
fix(antigravity): 统一转发日志格式,添加 session_id 追踪
|
2026-01-04 15:59:21 +08:00 |
|
song
|
c8e55ab2ac
|
fix: 移除 antigravity 模块中的 [Debug] 日志
这些调试日志不应在生产环境中输出。
|
2026-01-04 15:59:21 +08:00 |
|
song
|
fb9930004c
|
ci: DockerHub 配置可选,未配置时自动跳过
|
2026-01-04 15:59:21 +08:00 |
|
IanShaw027
|
a185ad1144
|
feat(gemini): 完善 Gemini OAuth 配额系统和用量显示
主要改动:
- 后端:重构 Gemini 配额服务,支持多层级配额策略(GCP Standard/Free, Google One, AI Studio, Code Assist)
- 后端:优化 OAuth 服务,增强 tier_id 识别和存储逻辑
- 后端:改进用量统计服务,支持不同平台的配额查询
- 后端:优化限流服务,增加临时解除调度状态管理
- 前端:统一四种授权方式的用量显示格式和徽标样式
- 前端:增强账户配额信息展示,支持多种配额类型
- 前端:改进创建和重新授权模态框的用户体验
- 国际化:完善中英文配额相关文案
- 移除 CHANGELOG.md 文件
测试:所有单元测试通过
|
2026-01-04 15:36:00 +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 |
|
Yuhao Jiang
|
600f9ce254
|
fix(frontend): 修复跨时区日期范围筛选问题
当管理员在比服务器时区更早的时区(如芝加哥 UTC-6)访问使用记录页面时,
由于服务器时区(如中国 UTC+8)已经是"明天",导致最新的记录无法显示。
修复方案:
- DateRangePicker: 将日期选择器的 max 限制从"今天"改为"明天"
- UsageView: 默认和重置时的 endDate 使用"明天"而非"今天"
这样可以确保跨时区场景下用户能看到所有最新记录。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-01-03 21:04:34 -06:00 |
|
shaw
|
a11c71cea9
|
fix: 修复创建账号schedulable值默认为false的bug
|
2026-01-04 10:45:18 +08:00 |
|
IanShaw027
|
cc4cc806ea
|
feat(backend): 增加 Google One tier 判断的详细调试日志
**目的:**
排查 Google One 账户 tier 判断不准确的问题(2TB 存储空间应显示 AI Premium,实际显示 Personal)
**新增日志:**
1. FetchGoogleOneTier:
- LoadCodeAssist API 调用结果(是否返回 tier)
- Drive API 调用结果(存储空间大小、TB 单位)
- 最终推断的 tier
2. inferGoogleOneTier:
- 输入的存储空间(bytes 和 TB)
- 匹配的存储层级和返回的 tier
- 每个判断分支的详细信息
**调试信息包含:**
- LoadCodeAssist vs Drive API 的使用情况
- 存储空间 bytes → TB 转换
- tier 推断的完整过程
- 每个存储层级的阈值检查
用户可以重新授权 Google One 账户,后端日志将显示详细的 tier 判断过程。
|
2026-01-04 10:44:07 +08:00 |
|
IanShaw027
|
7fe09c8342
|
fix(frontend): 统一徽标样式并修复 Google One 用量显示
**修复内容:**
1. **统一徽标样式**
- 所有徽标使用相同的 Tailwind 类
- Free: gray-100/600, Pro: blue-100/600, Ultra: purple-100/600
- 暗色模式统一使用 /40 透明度
- Client 和 AI Studio 都使用蓝色徽标
2. **修复 Google One 用量显示**
- 后端已为所有 Gemini OAuth (GCP/Google One/Client) 返回用量数据
- 前端只要有用量数据就显示进度条(移除 isGeminiCodeAssist 限制)
- Google One 现在也会显示 Pro/Flash 进度条 + 统计数据
- 只有自定义 Client OAuth 显示「无限流」(无追踪)
**最终显示规则:**
- AI Studio API Key: 「无限流」或「限流 XX」
- Client OAuth: 「无限流」(无追踪)
- GCP OAuth: Pro/Flash 进度条 + 统计
- Google One OAuth: Pro/Flash 进度条 + 统计
|
2026-01-04 10:42:37 +08:00 |
|
IanShaw027
|
43d9ef7f62
|
fix(frontend): 修正 AI Studio 和 Client 的标签显示
- API Key 账户:显示「AI Studio」
- 自定义 OAuth Client 账户:显示「Client」
之前错误地将两者都显示为同一标签,现在已修正。
|
2026-01-04 10:39:28 +08:00 |
|
IanShaw027
|
482bc289bf
|
fix(frontend): 完全统一 Gemini 四种授权方式的显示格式
**统一后的格式:**
- 第一行:授权方式简称 + 用户等级
- 后续行:有限额显示模型进度条+统计数据+窗口时间,无限额显示「无限流」
**四种授权方式:**
1. **AI Studio OAuth**
- 第一行:「AI Studio」
- 后续:「无限流」
2. **GCP Code Assist OAuth** (原 CLI)
- 第一行:「GCP Free/Pro/Ultra」
- 后续:Pro/Flash 进度条 + 统计数据(0 req 0 /bin/zsh.00)+ 窗口时间
3. **Google One OAuth** (原 G1)
- 第一行:「Google One Personal/Free/Pro/...」
- 后续:「无限流」
4. **API Key** (原 Gemini)
- 第一行:「Client」
- 后续:「无限流」或「限流 XX」
**修改内容:**
- AccountUsageCell.vue: 标签改名(CLI→GCP,G1→Google One),模型标签简化(Pro/Flash),保留统计数据
- AccountQuotaInfo.vue: 标签改名(Gemini→Client)
|
2026-01-04 10:38:57 +08:00 |
|
shaw
|
d9b1587982
|
feat(gateway): 实现 Claude Code 系统提示词智能注入
|
2026-01-04 10:38:13 +08:00 |
|
IanShaw027
|
552118eb7f
|
feat(frontend): 统一 Gemini 四种授权方式的用量窗口显示格式
**统一显示规则:**
- 第一行:授权方式简称 + 用户等级(如有)
- 后续内容:
- 有分模型限额:显示各模型的用量进度条和窗口时间
- 无限额/无分模型:显示「无限流」
**具体改动:**
1. AI Studio OAuth
- 第一行:「AI Studio」
- 后续:「无限流」
2. GCP Code Assist OAuth
- 第一行:「CLI Free/Pro/Ultra」
- 后续:Pro/Flash 模型进度条(保持现状)
3. Google One OAuth
- 第一行:「G1 Personal/Free/Pro/...」
- 后续:「无限流」(暂无配额追踪)
4. API Key
- 第一行:「Gemini」徽章
- 后续:「无限流」或「限流 XX」
**文件修改:**
- AccountUsageCell.vue: 区分 Code Assist 和其他类型的显示逻辑
- AccountQuotaInfo.vue: 改为两行布局,统一样式
- i18n: 添加 rateLimit.unlimited 翻译(中文「无限流」/英文「Unlimited」)
|
2026-01-04 10:22:02 +08:00 |
|
IanShaw027
|
537af60e33
|
fix(lint): 修复 golangci-lint 检查问题
- usage_service: 修复 tx.Rollback 未检查错误返回值 (errcheck)
- antigravity_gateway: 修复重试逻辑中的无效赋值 (ineffassign)
- antigravity_gateway: 完善重试成功/失败的分支逻辑
|
2026-01-04 10:14:47 +08:00 |
|
ianshaw
|
aad4163d22
|
fix(gateway): 优化 thinking block 重试逻辑
- 保留用户的 thinking.type=enabled 设置(不再禁用)
- 只移除历史消息中的 thinking/redacted_thinking blocks
- 处理过滤后空消息:跳过 assistant 消息,user 消息添加占位符
- 增强错误检测:覆盖 signature、Expected thinking、empty content 错误
- 添加重试成功/失败日志便于排查
|
2026-01-03 18:05:15 -08:00 |
|
ianshaw
|
cc86f94474
|
fix(test): 优化账户测试逻辑和默认模型配置
- 更新默认模型列表顺序,gemini-2.0-flash 作为首选
- OpenAI API Key 账户优先使用 Chat Completions API,兼容第三方代理
- 重构 OAuth 和 API Key 测试逻辑为独立方法
- 修复 Gemini 流处理中 finishReason 检查顺序
|
2026-01-03 17:31:05 -08:00 |
|
ianshaw
|
d505c5b2f2
|
fix(frontend): 状态文本国际化和错误处理修复
- AccountStatusIndicator: 状态文本使用 i18n
- CreateAccountModal: TypeScript 类型修复
- TempUnschedStatusModal: 错误处理改进
|
2026-01-03 17:10:37 -08:00 |
|
ianshaw
|
71bf5b9e77
|
fix(usage): 使用日志事务和幂等性修复
- UsageLogRepository.Create 返回 inserted 标志
- UsageService 使用事务保证原子性
- 避免重复扣费(幂等重试场景)
- 更新依赖注入和测试
|
2026-01-03 17:10:32 -08:00 |
|
ianshaw
|
7eda43c99e
|
fix(gateway): 完善 thinking block 重试和 cache nil 检查
- 使用 FilterThinkingBlocksForRetry 替代 FilterThinkingBlocks
- count_tokens 增加 thinking block 签名错误重试
- cache nil 检查防止空指针
- shouldBill 逻辑修复避免重复扣费
- 移除 debug 日志
|
2026-01-03 17:10:25 -08:00 |
|
ianshaw
|
81b865b89d
|
fix(antigravity): Claude 模型透传 tool_use 的 signature
- Vertex/Google API 需要完整签名链路
- Claude 模型不再清空 tool_use 的 signature
|
2026-01-03 17:09:50 -08:00 |
|
ianshaw
|
b0d41823bd
|
fix(thinking): 优化 thinking block 签名错误重试逻辑
- FilterThinkingBlocksForRetry: 将 thinking block 转换为 text block 而非直接删除
- stripThinkingFromClaudeRequest: Antigravity 网关同步采用转换策略
- 统一处理 thinking/redacted_thinking/无 type 字段的 thinking block
- 保留 thinking 内容,避免上下文丢失
|
2026-01-03 17:07:54 -08:00 |
|
ianshaw
|
519b0b245a
|
fix(lint): 修复 golangci-lint 检查问题
- 格式化代码 (gofmt)
- 修复 rows.Close() 返回值未检查 (errcheck)
- 删除未使用的 usage_clamp.go 文件 (unused)
- 删除临时测试目录
|
2026-01-03 06:57:08 -08:00 |
|
ianshaw
|
75e7c3dd06
|
fix(test): 修复测试文件与函数签名不匹配问题
|
2026-01-03 06:52:50 -08:00 |
|
ianshaw
|
691e2767a4
|
fix(wire): 修复 NewAntigravityGatewayService 参数不匹配
|
2026-01-03 06:49:17 -08:00 |
|
ianshaw
|
1f2ced896a
|
merge: 合并 main 分支解决冲突
|
2026-01-03 06:44:23 -08:00 |
|
ianshaw
|
112a2d0866
|
chore: 更新依赖、配置和代码生成
主要更新:
- 更新 go.mod/go.sum 依赖
- 重新生成 Ent ORM 代码
- 更新 Wire 依赖注入配置
- 添加 docker-compose.override.yml 到 .gitignore
- 更新 README 文档(Simple Mode 说明和已知问题)
- 清理调试日志
- 其他代码优化和格式修复
|
2026-01-03 06:37:08 -08:00 |
|
ianshaw
|
b1702de522
|
fix(test): 修复测试和添加数据库迁移
测试修复:
- 修复集成测试中的重复键冲突问题
- 移除 JSON 中多余的尾随逗号
- 新增 inprocess_transport_test.go
- 更新 haiku 模型映射测试用例
数据库迁移:
- 026: 运营指标聚合表
- 027: 使用量与计费一致性约束
|
2026-01-03 06:36:35 -08:00 |
|
ianshaw
|
ff3f514f6b
|
feat(frontend): 增强用户界面和使用教程
主要改进:
- 扩展 UseKeyModal 支持 Antigravity/Gemini 平台教程
- 添加 CCS (Claude Code Settings) 导入说明
- 添加混合渠道风险警告提示
- 优化登录/注册页面样式
- 更新 Antigravity 混合调度选项文案
- 完善中英文国际化文案
|
2026-01-03 06:35:50 -08:00 |
|
ianshaw
|
09da6904f5
|
feat(admin): 添加临时不可调度功能
当账号触发特定错误码和关键词匹配时,自动临时禁用调度:
后端:
- 新增 TempUnschedCache Redis 缓存层
- RateLimitService 支持规则匹配和状态管理
- 添加 GET/DELETE /accounts/:id/temp-unschedulable API
- 数据库迁移添加 temp_unschedulable_until/reason 字段
前端:
- 账号状态指示器显示临时不可调度状态
- 新增 TempUnschedStatusModal 详情弹窗
- 创建/编辑账号时支持配置规则和预设模板
- 完整的中英文国际化支持
|
2026-01-03 06:34:00 -08:00 |
|
ianshaw
|
acb718d355
|
perf(gateway): 优化负载感知调度
主要改进:
- 优化负载感知调度的准确性和响应速度
- 将 AccountUsageService 的包级缓存改为依赖注入
- 修复 SSE/JSON 转义和 nil 安全问题
- 恢复 Google One 功能兼容性
|
2026-01-03 06:32:51 -08:00 |
|
ianshaw
|
26106eb0ac
|
feat(gemini): 优化 OAuth 和配额展示
主要改进:
- 修复 google_one OAuth scopes 配置问题
- 添加 Gemini 账号配额展示组件
- 优化 Code Assist 类型检测逻辑
- 添加 OAuth 测试用例
|
2026-01-03 06:32:04 -08:00 |
|
ianshaw
|
26438f7232
|
feat(antigravity): 增强网关功能和 thinking 块处理
主要改进:
- 优化 thinking blocks 过滤策略,支持 Auto 模式降级
- 将无效 thinking block 内容转为普通 text
- 保留单个空白 text block,不过滤
- 重构配额刷新机制,统一与 Claude 一致
- 支持 cachedContentTokenCount 映射到 cache_read_input_tokens
- Haiku 模型映射到 Sonnet
- 添加 /antigravity/v1/models 端点支持
- countTokens 端点直接返回空值
|
2026-01-03 06:29:02 -08:00 |
|
ianshaw
|
df1ef3deb6
|
refactor: 移除 Ops 监控模块
移除未完成的运维监控功能,简化系统架构:
- 删除 ops_handler, ops_service, ops_repo 等后端代码
- 删除 ops 相关数据库迁移文件
- 删除前端 OpsDashboard 页面和 API
|
2026-01-03 06:18:44 -08:00 |
|