shaw
54de3bf27a
fix(ci): gosec 跳过自动生成的代码文件避免扫描超时
...
为 gosec 添加 -exclude-generated 标志,跳过带有
"// Code generated" 注释的文件(如 wire_gen.go),
防止安全扫描因分析自动生成代码而超时。
2026-02-28 22:30:53 +08:00
Wesley Liddick
4587c3e53e
Merge pull request #670 from DaydreamCoding/feat/admin-apikey-group-update
...
feat(admin): 添加管理员直接修改用户 API Key 分组的功能
2026-02-28 22:20:29 +08:00
shaw
be18bc6fc3
chore: 恢复数据库迁移文件060和修正版本号
2026-02-28 22:02:01 +08:00
QTom
6f9e690345
test(sora): 补充测试 stub 中缺失的 AddGroupToAllowedGroups 方法
...
feat/admin-apikey-group-update 分支给 UserRepository 接口新增了
AddGroupToAllowedGroups 方法,需要在测试 stub 中补充实现以通过编译。
- sora_client_handler_test.go: stubUserRepoForHandler
- sora_generation_service_test.go: stubUserRepoForQuota
2026-02-28 20:55:31 +08:00
QTom
9a91815b94
feat(admin): 完整实现管理员修改用户 API Key 分组的功能
...
## 核心功能
- 添加 AdminUpdateAPIKeyGroupID 服务方法,支持绑定/解绑/保持不变三态语义
- 实现 UserRepository.AddGroupToAllowedGroups 接口,自动同步专属分组权限
- 添加 HTTP PUT /api-keys/:id handler 端点,支持管理员直接修改 API Key 分组
## 事务一致性
- 使用 ent Tx 保证专属分组绑定时「添加权限」和「更新 Key」的原子性
- Repository 方法支持 clientFromContext,兼容事务内调用
- 事务失败时自动回滚,避免权限孤立
## 业务逻辑
- 订阅类型分组阻断,需通过订阅管理流程
- 非活跃分组拒绝绑定
- 负 ID 和非法 ID 验证
- 自动授权响应,告知管理员成功授权的分组
## 代码质量
- 16 个单元测试覆盖所有业务路径和边界用例
- 7 个 handler 集成测试覆盖 HTTP 层
- GroupRepo stub 返回克隆副本,防止测试间数据泄漏
- API 类型安全修复(PaginatedResponse<ApiKey>)
- 前端 ref 回调类型对齐 Vue 规范
## 国际化支持
- 中英文提示信息完整
- 自动授权成功/失败提示
2026-02-28 20:18:14 +08:00
QTom
000e621eb6
feat(admin): 添加管理员直接修改用户 API Key 分组的功能
...
- 新增 PUT /api/v1/admin/api-keys/:id 端点,允许管理员修改任意用户 API Key 的分组绑定
- 跳过用户级权限校验但保留分组有效性验证,修改后触发认证缓存失效
- Service 层支持三态语义:nil=不修改,0=解绑,>0=绑定,<0=拒绝
- 指针值拷贝保证安全隔离,负数 groupID 返回 400 INVALID_GROUP_ID
- 前端 UserApiKeysModal 新增可点击的分组选择下拉框,支持多 Key 并发更新
- 下拉支持视口翻转和滚动关闭,按钮有 disabled 和加载状态
- 覆盖:后端 20 个单元测试 (Service 11 + Handler 9) + 前端 16 个 E2E 测试
- golangci-lint 0 issues, make test-unit 全部通过
2026-02-28 20:18:14 +08:00
Wesley Liddick
9d795061af
Merge pull request #682 from mt21625457/pr/all-code-sync-20260228
...
feat(openai-ws): support websocket mode v2, optimize relay performance, enhance sora
2026-02-28 19:11:40 +08:00
yangjianbo
1d1fc019dc
fix(lint): resolve data management staticcheck warnings
2026-02-28 15:05:54 +08:00
yangjianbo
bb664d9bbf
feat(sync): full code sync from release
2026-02-28 15:01:20 +08:00
Wesley Liddick
bfc7b339f7
Merge pull request #675 from wucm667/fix/gosec-timeout-exclude-ent-dir
...
fix(ci): 修复 gosec 扫描因 ent 生成代码导致超时的问题
2026-02-28 10:59:19 +08:00
wucm667
f30f8905ec
fix(ci): 修复 gosec 扫描因 ent 生成代码导致超时的问题
...
【问题描述】
backend-security CI job 持续运行约 6 小时后被 GitHub Actions 强制取消,
表现为 'Run gosec' 步骤挂起,最终以 cancelled 状态结束。
【根本原因】
gosec 对 ./... 执行 AST 静态分析时,包含了 ent/ 目录下的
自动生成文件(如 mutation.go 共 24800 行),导致分析时间
超出 GitHub Actions 默认的 6 小时上限。
【修复方案】
1. gosec 命令增加 -exclude-dir=ent 跳过自动生成代码目录
2. backend-security job 增加 timeout-minutes: 15,避免未来
类似问题再次长时间卡死后才被发现
ent/ 目录内容全部由 Ent ORM 框架自动生成,开发者不直接编写,
不需要纳入人工安全审计范围,排除后不影响扫描有效性。
2026-02-28 10:20:57 +08:00
Wesley Liddick
3bae525026
Merge pull request #650 from wucm667/feat/sync-page-title-on-locale-change
...
feat(i18n): 切换语言时同步更新页面标题
2026-02-27 19:48:36 +08:00
shaw
df00805a2a
feat(frontend): 为管理端用量页面添加列显示设置
2026-02-27 19:41:26 +08:00
Wesley Liddick
a88ee96518
Merge pull request #665 from touwaeriol/fix/2k-image-default-pricing
...
fix: add 2K image default pricing at 1.5x base price
2026-02-27 19:20:44 +08:00
Wesley Liddick
3cc2f9bd57
Merge pull request #664 from wucm667/fix/account-priority-hint
...
fix(frontend): add priority hint in edit account modal
2026-02-27 19:19:36 +08:00
erio
d1b684b782
fix: add 2K image default pricing at 1.5x base price
...
Previously 2K images used the same base price as 1K ($0.134).
Now 2K uses 1.5x multiplier ($0.201), consistent with 4K using 2x ($0.268).
- Backend: add 2K size branch in getDefaultImagePrice
- Frontend: update 2K placeholder from 0.134 to 0.201
- Tests: update assertions for new 2K default price
2026-02-27 17:37:30 +08:00
wucm667
6460d4ad3a
fix(frontend): add priority hint in edit account modal
2026-02-27 16:00:11 +08:00
Wesley Liddick
19ea392d5d
Merge pull request #663 from touwaeriol/fix/update-antigravity-useragent-version
...
fix: update antigravity user-agent version to 1.19.6
2026-02-27 15:28:45 +08:00
Wesley Liddick
fb4d016176
Merge pull request #659 from touwaeriol/feature/gemini-3.1-flash-image
...
feat: 新增 gemini-3.1-flash-image 支持,替代 gemini-3-pro-image
2026-02-27 15:28:33 +08:00
erio
afec747d9e
fix: update antigravity user-agent version to 1.19.6
...
Update the default user-agent version from 1.18.4 to 1.19.6
to match the latest official antigravity client.
2026-02-27 12:31:51 +08:00
erio
7388fcce41
fix: gofmt alignment in constants.go
2026-02-27 09:52:50 +08:00
erio
a6f9f9f968
feat: replace gemini-3-pro-image with gemini-3.1-flash-image
...
- Add migration 060 to update model_mapping for all antigravity accounts
- Remove gemini-3-pro-image and gemini-3-pro-image-preview mappings
- Add gemini-3.1-flash-image and gemini-3.1-flash-image-preview mappings
- Update frontend usage window to show GImage for new model
- Update isImageGenerationModel to support new model
2026-02-27 09:52:50 +08:00
Wesley Liddick
29759721e0
Merge pull request #651 from cagedbird043/pr/bulk-edit-platform-filter
...
fix(frontend): 批量编辑添加跨平台模型映射警告与智能过滤
2026-02-27 09:03:00 +08:00
Wesley Liddick
1941b20521
Merge pull request #657 from alfadb/fix/count-tokens-404-passthrough
...
fix(gateway): count_tokens 不支持时返回 404 而非伪造的 200
2026-02-27 08:42:46 +08:00
alfadb
e6969acb50
fix: address review - fix log wording and add response body assertion in test
2026-02-26 23:49:30 +08:00
alfadb
9489531431
fix(gateway): return 404 instead of fake 200 for unsupported count_tokens endpoint
...
PR #635 returned HTTP 200 with {"input_tokens": 0} when upstream doesn't
support count_tokens (404). This caused Claude Code CLI to trust the zero
value, believing context uses 0 tokens, so auto-compression never triggers.
Fix: return 404 with proper error body so CLI falls back to its local
tokenizer for accurate estimation. Return nil (not error) to avoid
polluting ops error metrics with expected 404s.
Affected paths:
- Passthrough APIKey accounts: upstream 404 now passed through as 404
- Antigravity accounts: same fix (was also returning fake 200)
2026-02-26 23:34:53 +08:00
cagedbird043
32b7c0ca9b
feat(frontend): 补齐 GPT-5.3 系列模型到白名单、批量编辑列表与预设映射
...
- useModelWhitelist.ts 添加 gpt-5.3-codex、gpt-5.3-codex-spark
- BulkEditAccountModal.vue 添加 5.3 模型选项与预设按钮(含 5.2→5.3 升级映射)
2026-02-26 16:04:15 +08:00
shaw
4ac57b4edf
fix: 临时移除fast-mode-2026-02-01避免429问题
2026-02-26 15:44:28 +08:00
cagedbird043
685a1e0ba3
feat(i18n): 添加批量编辑跨平台警告的中英文翻译
2026-02-26 15:24:50 +08:00
cagedbird043
e350aab1bd
fix(frontend): 批量编辑添加跨平台模型映射警告与过滤
...
- 新增 selectedPlatforms prop,从父组件传入选中账号的平台集合
- 根据选中平台过滤模型列表与预设映射按钮,避免误操作
- 混选多平台时显示 amber 警告横幅,提醒用户注意映射适用性
- 仅警告不阻断,保持加法兼容
2026-02-26 15:24:50 +08:00
Wesley Liddick
0dd6986e28
Merge pull request #639 from cagedbird043/pr/refactor-antigravity-model-source
...
refactor(admin): 消除测试连接 Gemini 模型硬编码,统一由 DefaultModels 提供
2026-02-26 14:57:13 +08:00
Wesley Liddick
6d0102a70c
Merge pull request #638 from cagedbird043/pr/antigravity-claude-model-cleanup
...
feat(antigravity): 更新 opencode.json 模板至 Claude 4.6 并补齐模型支持
2026-02-26 14:55:32 +08:00
cagedbird043
f96a2a18c1
feat(opencode): 更新 opencode.json 模板至 Claude 4.6(默认启用 thinking)
2026-02-26 14:27:51 +08:00
cagedbird043
f955b04a6f
feat(frontend): 补齐 Antigravity Claude 4.6 前端预设映射与显示
2026-02-26 14:27:51 +08:00
cagedbird043
2fd6ac319b
feat(antigravity): 添加 Claude Opus/Sonnet 4.6 后端模型定义
2026-02-26 14:27:51 +08:00
wucm667
82fbf452a8
feat(i18n): 切换语言时同步更新页面标题
...
- resolveDocumentTitle() 新增 titleKey 参数,优先通过 i18n 翻译
- router beforeEach 中将路由 meta.titleKey 传入标题解析函数
- setLocale() 切换语言后同步刷新 document.title
2026-02-26 14:04:13 +08:00
cagedbird043
ba69736f55
refactor(admin): 测试连接模型列表改为复用 antigravity.DefaultModels,消除硬编码重复
2026-02-26 13:34:10 +08:00
shaw
c75c6b6858
fix: 将 DriveClient 注入 GeminiOAuthService,消除单元测试中的真实 HTTP 调用
...
FetchGoogleOneTier 原先在方法内部直接创建 DriveClient 实例,
导致单元测试中对 googleapis.com 发起真实 HTTP 请求,在 CI 环境
产生 401 错误。
将 DriveClient 作为依赖注入到 GeminiOAuthService,遵循项目
端口与适配器架构规范:
- 新增 repository/gemini_drive_client.go 作为 Provider
- 注册到 repository Wire ProviderSet
- 测试中使用 mockDriveClient 替代真实调用
2026-02-26 10:53:04 +08:00
Wesley Liddick
de61745bb2
Merge pull request #635 from alfadb/fix/count-tokens-fallback-for-proxy
...
fix: count_tokens 端点不支持时降级返回空值
2026-02-26 10:07:30 +08:00
Wesley Liddick
3fab0fcd4c
Merge pull request #644 from LemonZuo/fix/remove-pgdata-env-var
...
移除 PostgreSQL 容器多余重复的 PGDATA 环境变量
2026-02-26 09:40:50 +08:00
alfadb
03bcd94ae5
fix: count_tokens 端点不支持时降级返回空值 (404 only)
...
第三方 Anthropic 中转站通常不支持 /v1/messages/count_tokens 端点,
上游返回 404 时降级返回 {input_tokens: 0},客户端 fallback 到本地估算。
- 仅匹配 404 状态码,语义明确:端点不存在
- 其他错误 (400/429/500) 保留原始处理链和 ops 遥测
- 无需解析错误消息内容,不依赖字符串匹配
- 新增 table-driven 测试覆盖 fallback 和 non-fallback 路径
2026-02-26 09:28:45 +08:00
Lemon
0343bc7777
fix: 移除 PostgreSQL 容器多余重複的 PGDATA 环境变量
2026-02-26 09:01:03 +08:00
Wesley Liddick
565d19acfd
Merge pull request #636 from cagedbird043/pr/antigravity-gemini-3.1-models
...
fix(antigravity): 补全测试连接 Gemini 模型列表并新增 3.1 Pro High/Low 支持
2026-02-26 08:52:19 +08:00
Wesley Liddick
960acf1982
Merge pull request #632 from cagedbird043/pr/gemini-v1beta-template-align
...
feat: 对齐 Gemini v1beta 模型模板与映射顺序
2026-02-26 08:45:56 +08:00
cagedbird043
ece911521e
fix(antigravity): 修正 Gemini 3.1 Pro High/Low 发布日期为 2026-02-19
2026-02-25 20:18:19 +08:00
cagedbird043
5d95e59742
fix(admin): 补全 antigravity 测试连接下拉框的 Gemini 模型列表
2026-02-25 18:51:47 +08:00
cagedbird043
01d084bbfd
feat(antigravity): 新增 Gemini 3.1 Pro High 和 Gemini 3.1 Pro Low 模型支持
2026-02-25 18:51:47 +08:00
cagedbird043
7918fc2844
feat: 对齐 Gemini v1beta 模板模型与顺序
2026-02-25 15:19:23 +08:00
Wesley Liddick
31b30a6df2
Merge pull request #631 from cagedbird043/pr/opencode-template-openai-antigravity
...
feat: 补齐 OpenCode 模板中的 OpenAI 与 Antigravity 模型配置
2026-02-25 14:23:43 +08:00
cagedbird043
d217b59e0b
feat: 补齐 Antigravity OpenCode 模板模型配置
2026-02-25 14:17:31 +08:00