shaw
aac7dd6b08
style: fix gofmt formatting in test file
...
Remove redundant alignment whitespace before comments.
2025-12-31 15:52:02 +08:00
yangjianbo
0ffb3201b7
Merge branch 'main' of https://github.com/mt21625457/aicodex2api
2025-12-31 15:33:08 +08:00
yangjianbo
6f6dc3032c
fix(设置): 修复站点设置保存失败的问题
...
问题:
1. Setting.value 字段设置了 NotEmpty() 约束,导致保存空字符串值时验证失败
2. 数据库 settings 表缺少 key 字段的唯一约束,导致 ON CONFLICT 语句执行失败
修复:
- 移除 ent/schema/setting.go 中 value 字段的 NotEmpty() 约束
- 新增迁移 015_fix_settings_unique_constraint.sql 添加缺失的唯一约束
- 添加3个回归测试确保空值保存功能正常
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-31 15:31:26 +08:00
yangjianbo
d77d0544d0
fix(仓储): 修复并发缓存前缀与软删除更新
...
补齐 Redis ZSET 前缀处理,确保并发释放计数正确
删除时改用 Client().Mutate 走更新逻辑,保留软删除记录
测试: make test-integration
2025-12-31 15:20:58 +08:00
yangjianbo
682f546c0e
fix(lint): 修复 golangci-lint 报告的代码问题
...
- errcheck: 修复类型断言未检查返回值的问题
- pool.go: 添加 sync.Map 类型断言安全检查
- req_client_pool.go: 添加 sync.Map 类型断言安全检查
- concurrency_cache_benchmark_test.go: 显式忽略断言返回值
- gateway_service.go: 显式忽略 WriteString 返回值
- gofmt: 修复代码格式问题
- redis.go: 注释对齐
- api_key_repo.go: 结构体字段对齐
- concurrency_cache.go: 字段对齐
- http_upstream.go: 注释对齐
- unused: 删除未使用的代码
- user_repo.go: 删除未使用的 sql 字段
- usage_service.go: 删除未使用的 calculateStats 函数
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-31 14:51:58 +08:00
程序猿MT
4368966e09
Merge branch 'Wei-Shaw:main' into main
2025-12-31 14:40:52 +08:00
yangjianbo
dbc0cf33a1
Merge branch 'main' of https://github.com/mt21625457/aicodex2api
2025-12-31 14:26:20 +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
yangjianbo
679b21a86c
Merge branch 'main' into test
...
冲突解决:
- wire_gen.go: 合并 antigravityGatewayService 和 ProvideConcurrencyCache
- user_repo_integration_test.go: 保留 NotFound 测试
- antigravity_gateway_service.go: 适配 httpUpstream.Do 新签名
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-31 14:17:18 +08:00
yangjianbo
5906f9ab98
fix(数据层): 修复数据完整性与仓储一致性问题
...
## 数据完整性修复 (fix-critical-data-integrity)
- 添加 error_translate.go 统一错误转换层
- 修复 nil 输入和 NotFound 错误处理
- 增强仓储层错误一致性
## 仓储一致性修复 (fix-high-repository-consistency)
- Group schema 添加 default_validity_days 字段
- Account schema 添加 proxy edge 关联
- 新增 UsageLog ent schema 定义
- 修复 UpdateBalance/UpdateConcurrency 受影响行数校验
## 数据卫生修复 (fix-medium-data-hygiene)
- UserSubscription 添加软删除支持 (SoftDeleteMixin)
- RedeemCode/Setting 添加硬删除策略文档
- account_groups/user_allowed_groups 的 created_at 声明 timestamptz
- 停止写入 legacy users.allowed_groups 列
- 新增迁移: 011-014 (索引优化、软删除、孤立数据审计、列清理)
## 测试补充
- 添加 UserSubscription 软删除测试
- 添加迁移回归测试
- 添加 NotFound 错误测试
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-31 14:11:57 +08:00
yangjianbo
820bb16ca7
fix(网关): 防止连接池缓存失控
...
超限且无可淘汰条目时拒绝新建
规范化代理地址并更新失败时的访问时间
补充连接池上限与代理规范化测试
2025-12-31 12:01:31 +08:00
Wei Shaw
a1540e27c2
feat: 修复 OpenAI 402 报错自动切换问题
2025-12-31 11:46:53 +08:00
yangjianbo
d1c9889609
perf(网关): 实现上游账号连接池隔离
...
新增隔离策略与连接池缓存回收
连接池大小跟随账号并发并处理代理切换
同步配置默认值与示例并补充测试
2025-12-31 11:43:58 +08:00
shaw
b7c6d040dd
fix: 修复Antigravity token刷新间隔问题
2025-12-31 10:33:00 +08:00
yangjianbo
3d7f8e4b3a
fix(服务): 修复system判定、统计时区与缓存日志
...
- system 字段存在即视为显式提供,避免 null 触发默认注入
- 日统计分组显式使用应用时区,缺失时从 TZ 回退到 UTC
- 缓存写入队列丢弃日志节流汇总,关键任务同步回退
测试: go test ./internal/service -run TestBillingCacheServiceQueueHighLoad
2025-12-31 10:17:38 +08:00
yangjianbo
7efa8b54c4
perf(后端): 完成性能优化与连接池配置
...
新增 DB/Redis 连接池配置与校验,并补充单测
网关请求体大小限制与 413 处理
HTTP/req 客户端池化并调整上游连接池默认值
并发槽位改为 ZSET+Lua 与指数退避
用量统计改 SQL 聚合并新增索引迁移
计费缓存写入改工作池并补测试/基准
测试: 在 backend/ 下运行 go test ./...
2025-12-31 08:50:12 +08:00
song
aa4631640a
Merge branch 'main' into fix/antigravity_auth_3
2025-12-31 00:36:43 +08:00
song
4a0008df47
feat(Antigravity): 为不合格账户显示警告图标
2025-12-31 00:34:24 +08:00
song
f284ea72fc
refactor(Antigravity): 保存完整 API 响应到 extra 字段
...
- LoadCodeAssist/FetchAvailableModels 返回原始 JSON
- extra 新增 load_code_assist 和 available_models 保存原始响应
- 前端 tier 从 load_code_assist.paidTier.id 提取
- 删除冗余的 updateAccountTier 函数
2025-12-31 00:15:25 +08:00
song
0a4e0edc85
fix(Antigravity): 配额刷新时自动补充缺失的 project_id
...
旧账户可能没有 project_id,在刷新配额时自动生成并保存。
2025-12-30 23:58:03 +08:00
song
fa48cf27eb
feat(Antigravity): 为无 project_id 的账户生成随机 project_id
...
部分账户类型(如 g1-pro-tier)API 不返回 cloudaicompanionProject,
但实际接受任意格式的 project_id,故添加随机生成逻辑作为兜底。
2025-12-30 23:54:33 +08:00
song
1c42403e6d
fix(Antigravity): 支持无 project_id 的账户类型
...
- 移除 project_id 强制检查,部分账户类型 API 不返回此字段
- 重构:提取 antigravity.NewAPIRequest() 统一创建 API 请求
- quota_refresher: 无 project_id 时仍可更新 tier 信息
2025-12-30 23:42:50 +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
song
5844ea7e6e
fix(Antigravity): 修复账号测试连接认证错误
...
- 新增 AntigravityGatewayService.TestConnection 方法,支持 Claude/Gemini 双协议测试
- AccountTestService 改用 AntigravityGatewayService 进行测试连接
- GetAvailableModels 为 Antigravity 账号返回 Claude + Gemini 模型列表
2025-12-30 22:42:00 +08:00
yangjianbo
5376786694
chore(配置): 提升容器文件描述符上限到10万
...
调整原因:
- 防止高并发下出现 "too many open files" 错误
- 统一测试与生产环境的 ulimits 配置
改动内容:
- 为 sub2api、postgres、redis 设置 nofile
- 软硬限制均为 100000
测试: 未运行
2025-12-30 20:28:41 +08:00
程序猿MT
5cad90fb4d
Merge branch 'Wei-Shaw:main' into main
2025-12-30 17:14:39 +08:00
yangjianbo
8cb2d3b352
fix(仓储): 规范 rows.Close 错误回传
...
统一 usage_log_repo 查询的 Close 错误处理,避免\n成功路径吞掉关闭失败
scanSingleRow 使用 errors.Join 合并 Close 错误,\n保留 ErrNoRows 可判定
测试: make -C backend test-unit
2025-12-30 17:13:32 +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
yangjianbo
7e758b24c4
chore(依赖): 同步 Go 模块依赖
...
更新 go.mod/go.sum 的间接依赖记录
包含 gorm/mysql 相关依赖项
2025-12-30 16:43:18 +08:00
yangjianbo
aacbc98aec
fix(仓储): 修复查询关闭错误并迁移集成测试
...
修复 rows.Close 失败时的错误返回逻辑
迁移网关路由集成测试到 ent 事务基建
补齐仓储接口变更对应的测试桩方法
新增 backend/Makefile 统一测试命令
测试: GOTOOLCHAIN=go1.24.11 go test ./...
测试: golangci-lint run ./... --timeout=5m
测试: make test-integration
2025-12-30 16:41:45 +08:00
yangjianbo
b6fec590a7
Merge branch 'main' of https://github.com/mt21625457/aicodex2api
2025-12-30 14:46:46 +08:00
yangjianbo
e5a79fedac
Merge branch 'test-dev'
2025-12-30 14:36:52 +08:00
yangjianbo
148048b035
feat: update agents.md
2025-12-30 14:36:37 +08:00
yangjianbo
b9a753cd04
fix(仓库): 使用 ent 实现账号调度查询
...
替换 gorm 查询并复用分组过滤逻辑,避免编译错误
2025-12-30 14:35:29 +08:00
shaw
fb883f0092
fix: 修复默认分组初始化导致启动失败的问题
...
- 标准版不再创建默认分组,简易模式保持创建
- 简易模式下删除默认分组后重启自动恢复(而非报唯一键冲突)
- AutoMigrate 函数增加 runMode 参数以区分运行模式
2025-12-30 14:30:16 +08:00
yangjianbo
daf0e883ae
feat: 增加对应的忽略文件
2025-12-30 14:29:43 +08:00
yangjianbo
a641d4a14a
Merge branch 'main' into test-dev
2025-12-30 14:17:12 +08:00
yangjianbo
809ea23587
Merge branch 'main' of https://github.com/mt21625457/aicodex2api
2025-12-30 14:15:52 +08:00
yangjianbo
e5c314092d
feat: 增加忽略目录
2025-12-30 14:08:48 +08:00
yangjianbo
0ea373d9d5
feat: 增加git 忽略目录
2025-12-30 14:04:53 +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
刀刀
0026e871f0
CC Stream 响应流中出现 error 时, 增加返回重试 ( #86 )
...
* 响应流中出现 error, 返回重试
* 响应流中出现 error, 返回重试
2025-12-30 10:48:55 +08:00
yangjianbo
52e3e44008
feat: 还原误删的makefile
2025-12-30 10:29:26 +08:00
yangjianbo
84c009da63
Merge branch 'main' into test
2025-12-30 10:22:12 +08:00
yangjianbo
b9760abe36
feat: 忽略openspec
2025-12-30 10:16:34 +08:00