程序猿MT
|
7b2185eb5f
|
Delete backend/Makefile
|
2025-12-30 10:13:42 +08:00 |
|
程序猿MT
|
23ef3da0f4
|
Remove redundant entry in Makefile
|
2025-12-30 10:09:29 +08:00 |
|
yangjianbo
|
e83f0ee307
|
Merge branch 'main' into test-dev
|
2025-12-30 09:07:55 +08:00 |
|
yangjianbo
|
bff3c66d69
|
feat: 增加测试用docker compose配置文件
|
2025-12-30 09:00:42 +08:00 |
|
yangjianbo
|
2ea4dafa08
|
feat: 删除openspec
|
2025-12-30 08:42:51 +08:00 |
|
yangjianbo
|
b63b338e95
|
Merge branch 'main' into test-dev
|
2025-12-30 08:41:49 +08:00 |
|
song
|
942c3e1529
|
Merge branch 'main' into feature/antigravity_auth_image
|
2025-12-29 21:29:38 +08:00 |
|
song
|
caa8c47b68
|
fix(antigravity): 修复 429 限流处理逻辑
- 只有 5 次重试全部失败后才标记账户限流
- 使用 Gemini 格式解析 429 响应中的重试时间
- Claude 模型无重试时间时默认 1 分钟,Gemini 默认 5 分钟
- 添加生图模型映射 gemini-3-pro-image-preview
|
2025-12-29 21:28:28 +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 |
|
yangjianbo
|
57db688d7c
|
feat:增加一个快捷的build docker镜像的脚本,用于本地测试
|
2025-12-29 20:26:18 +08:00 |
|
yangjianbo
|
9d1d608f4f
|
feat: 增加makefile编译脚本
|
2025-12-29 20:23:19 +08:00 |
|
yangjianbo
|
042d82359c
|
fix(仓储): 修复 ApiKey 更新并发语义
ApiKey 更新时显式设置 updated_at 并回填,避免二次查询竞态
补充软删除范围注释以统一审计语义
|
2025-12-29 19:59:36 +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 |
|
yangjianbo
|
74db0c15ae
|
chore(生成代码): 更新 ent 客户端与事务代码
同步生成文件以匹配最新的 schema 与运行时变更
|
2025-12-29 19:24:29 +08:00 |
|
yangjianbo
|
ae191f72a4
|
fix(仓储): 修复软删除过滤与事务测试
修复软删除拦截器使用错误,确保默认查询过滤已删记录
仓储层改用 ent.Tx 与扫描辅助,避免 sql.Tx 断言问题
同步更新集成测试以覆盖事务与统计变动
|
2025-12-29 19:23:49 +08:00 |
|
song
|
42e2c5061d
|
fix: gofmt
|
2025-12-29 18:15:13 +08:00 |
|
song
|
380c43cb03
|
ci: 排除 antigravity 类型文件的 gofmt 检查
|
2025-12-29 18:11:51 +08:00 |
|
song
|
bc75edd800
|
style: interface{} → any (gofmt rewrite rule)
|
2025-12-29 18:05:05 +08:00 |
|
song
|
9774339fef
|
fix: 删除 AntigravityQuotaRefresher 未使用的 oauthSvc 字段
|
2025-12-29 17:57:14 +08:00 |
|
song
|
026740b5e5
|
fix: 删除未使用的代码并修复格式
- 删除 client.go 中未使用的 proxyURL 字段
- 删除 AntigravityGatewayService 中未使用的字段和方法
- 修复 gofmt 格式问题
|
2025-12-29 17:54:38 +08:00 |
|
song
|
21a04332ec
|
fix: 修复 golangci-lint 检查错误
- SA1029: 创建 ctxkey 包定义类型安全的 context key
- ST1005: 错误字符串首字母改小写
- errcheck: 显式忽略 bytes.Buffer.Write 返回值
- 修复单元测试中 GatewayService 缺少 cfg 字段的问题
|
2025-12-29 17:46:52 +08:00 |
|
song
|
eec8b4c91e
|
docs: 添加 Antigravity 使用说明
|
2025-12-29 17:19:47 +08:00 |
|
shaw
|
ef22d6f628
|
chore(frontend): 移除未使用的新手引导组件残留代码
删除开发过程中遗留的未使用文件:
- TourDescription.vue: 未被使用的结构化描述组件
- useTourStepDescription.ts: 步骤key映射,引用的组件从未创建
- TourStepDescriptions/: 空的组件目录
当前实现通过 i18n + HTML 字符串直接提供描述内容,无需这些文件。
|
2025-12-29 17:12:19 +08:00 |
|
song
|
58545efbd7
|
feat(antigravity): 首页添加 Antigravity 服务商标识
|
2025-12-29 17:09:48 +08:00 |
|
song
|
2bd288a677
|
Merge branch 'main' into feature/antigravity_auth
|
2025-12-29 17:04:40 +08:00 |
|
yangjianbo
|
b436da7249
|
fix(界面): 显示用户操作失败详情
创建/删除用户失败时优先展示后端 message\n保留原有兜底提示
|
2025-12-29 17:00:03 +08:00 |
|
yangjianbo
|
a792f32d5b
|
feat: 优化dockerfile文件
|
2025-12-29 16:59:07 +08:00 |
|
yangjianbo
|
777e1c8f1c
|
feat: 删除没有必要的脚本
|
2025-12-29 16:58:54 +08:00 |
|
yangjianbo
|
4dab18a94f
|
fix(用户): 修复删除用户软删除钩子
避免软删除钩子类型断言失败导致 500\n删除无记录时返回未找到错误并记录日志
|
2025-12-29 16:57:50 +08:00 |
|
song
|
234e98f1b3
|
feat(antigravity): 保存 ineligibleTiers 原因信息
|
2025-12-29 16:55:17 +08:00 |
|
song
|
b31bfd53ab
|
feat(antigravity): 添加专用路由,支持仅使用 antigravity 账户
添加 /antigravity/v1/* 和 /antigravity/v1beta/* 路由:
- 通过 ForcePlatform 中间件强制使用 antigravity 平台
- 跳过混合调度逻辑,仅调度 antigravity 账户
- 支持按分组优先查找,找不到时回退查询全部 antigravity 账户
修复 context key 类型不匹配问题:
- middleware 和 service 统一使用字符串常量 "ctx_force_platform"
- 解决 Go context.Value() 类型+值匹配导致的读取失败
其他改动:
- 嵌入式前端中间件白名单添加 /antigravity/ 路径
- e2e 测试 Gemini 端点 URL 添加 endpointPrefix 支持
|
2025-12-29 16:52:55 +08:00 |
|
IanShaw027
|
23412965f8
|
feat(frontend): 优化弹窗组件架构和用户体验
- 使用 BaseDialog 替代旧版 Modal 组件
- 添加平滑过渡动画和更好的可访问性支持
- 新增 ExportProgressDialog 导出进度弹窗
- 优化所有账号管理和使用记录相关弹窗
- 更新国际化文案,改进用户交互体验
- 精简依赖,减少 package.json 体积
|
2025-12-29 16:13:09 +08:00 |
|
IanShaw027
|
6a55b153fc
|
fix(frontend): 移除未使用的常量声明
|
2025-12-29 16:06:38 +08:00 |
|
IanShaw027
|
e847cfc8a0
|
fix(frontend): 优化新手引导交互体验
1. 移除重复的"不再提示"按钮
- 只保留右上角的关闭按钮(X)
- 简化用户操作,避免混淆
2. 移除退出确认框
- 点击关闭按钮直接退出并标记为已看过
- ESC 键也直接退出,不再弹出确认框
- 提升用户体验,减少打扰
3. 修复 Select 下拉菜单被遮挡问题
- 增加被高亮元素的下拉菜单 z-index
- 确保下拉菜单在引导 popover 之上显示
- 解决步骤 5/21 (平台选择) 无法操作的问题
|
2025-12-29 16:04:17 +08:00 |
|
yangjianbo
|
5584709ac9
|
fix(仓储层): 修复事务 ent client 调用 Close() 导致的 panic
问题:创建用户时发生 panic,错误信息为
"interface conversion: sql.ExecQuerier is *sql.Tx, not *sql.DB"
原因:基于事务创建的 ent client 在调用 Close() 时,ent 的 sql driver
会尝试将 ExecQuerier 断言为 *sql.DB 来关闭连接,但实际类型是 *sql.Tx
修复:移除对 txClient.Close() 的调用,事务的清理通过
sqlTx.Rollback() 和 sqlTx.Commit() 完成即可
影响范围:
- user_repo.go: Create 和 Update 方法
- group_repo.go: Delete 方法
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-29 15:49:20 +08:00 |
|
IanShaw027
|
337d9ad755
|
fix(frontend): 简易模式下禁用新手引导并优化显示逻辑
修复 Gemini 审查发现的潜在问题,并增强新手引导功能:
1. 简易模式下完全禁用新手引导
- useOnboardingTour: 添加 isSimpleMode 判断,简易模式下不自动启动
- 只在标准模式的管理员第一次加载时自动弹出
2. 动态过滤简易模式相关步骤
- steps.ts: getAdminSteps 添加 isSimpleMode 参数
- 简易模式下自动过滤分组管理和账号分组选择步骤
- 避免引导找不到被隐藏的元素
3. 优化引导按钮显示条件
- AppHeader: 添加 showOnboardingButton computed
- 只在标准模式的管理员下显示"重新开始引导"按钮
- 非管理员或简易模式下不显示按钮
4. 确保引导只在首次自动弹出
- 关闭后不再自动出现
- 只能从右上角手动重新打开
|
2025-12-29 15:43:37 +08:00 |
|
IanShaw027
|
dd247e55e9
|
feat(frontend): 实现新手引导功能
- 添加 Guide 组件和引导步骤配置
- 实现 useOnboardingTour 和 useTourStepDescription composables
- 添加 onboarding store 管理引导状态
- 更新多个视图和组件以支持引导功能
- 添加国际化支持(中英文)
- 删除旧的实现指南文档
|
2025-12-29 15:43:24 +08:00 |
|
yangjianbo
|
305eaabb53
|
test(用户): 补齐创建用户与注册单测
覆盖管理员创建用户与注册流程的关键失败分支\n完善创建成功路径的断言
|
2025-12-29 15:22:50 +08:00 |
|
yangjianbo
|
f6de36cb04
|
test(删除): 添加删除单测并修复中间件测试
新增 AdminService 删除路径单元测试与规范场景更新\n同步调整 Google API Key 中间件测试桩与签名
|
2025-12-29 15:01:19 +08:00 |
|
yangjianbo
|
100d9d2034
|
test(服务层): 添加删除方法的单元测试
- 新增 AccountService.Delete 方法的 4 个测试用例
- 新增 ApiKeyService.Delete 方法的 4 个测试用例
- 使用 stub 模式隔离数据库依赖,验证权限检查和缓存清理逻辑
- 添加详细的中文注释说明测试设计和预期行为
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-29 14:29:51 +08:00 |
|
yangjianbo
|
e9c755f428
|
perf(后端): 优化删除操作的数据库查询性能
- 新增 ExistsByID 方法用于账号存在性检查,避免加载完整对象
- 新增 GetOwnerID 方法用于 API Key 所有权验证,仅查询 user_id 字段
- 优化 AccountService.Delete 使用轻量级存在性检查
- 优化 ApiKeyService.Delete 使用轻量级权限验证
- 改进前端删除错误提示,显示后端返回的具体错误消息
- 添加详细的中文注释说明优化原因
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-29 14:06:38 +08:00 |
|
yangjianbo
|
89b1b744f2
|
fix(构建): 支持配置基础镜像仓库
允许通过构建参数/脚本选项切换基础镜像来源,避免镜像源 403 影响构建
|
2025-12-29 12:00:33 +08:00 |
|
yangjianbo
|
bbd6236385
|
fix(数据库): 补充默认分组种子迁移
确保安装时至少存在一个默认分组
|
2025-12-29 11:48:19 +08:00 |
|
yangjianbo
|
cc4da2ae82
|
fix(数据库): 修复使用记录缓存列命名不一致
新增迁移补齐 cache_creation_5m_tokens/cache_creation_1h_tokens 列,并从旧列回填数据
|
2025-12-29 11:45:07 +08:00 |
|
yangjianbo
|
b415a62bf9
|
feat(部署): 添加 Docker 镜像构建脚本
新增 build_docker.sh 脚本,支持以下功能:
- -t, --tag: 指定镜像标签 (默认: latest)
- -r, --registry: 指定镜像仓库地址
- -p, --push: 构建后推送镜像到仓库
- --no-cache: 不使用 Docker 构建缓存
自动获取 Git 版本信息并注入到构建参数中。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-29 11:18:12 +08:00 |
|
yangjianbo
|
8ab924ad9b
|
fix(构建): 删除遗留的 GORM auto_migrate.go 文件
该文件是 GORM 迁移到 Ent ORM 过程中遗留的,仍然导入了
gorm.io/gorm,导致 Docker 构建失败。
文件中的功能已被迁移到 SQL 迁移文件中:
- fixInvalidExpiresAt → 006_fix_invalid_subscription_expires_at.sql
- ensureDefaultGroups → 001_init.sql
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-29 11:18:00 +08:00 |
|
yangjianbo
|
3c3419475d
|
Merge branch 'main' into test-dev
|
2025-12-29 10:50:46 +08:00 |
|
yangjianbo
|
3a7d3387e0
|
fix(数据库): 修复默认分组缺失与迁移锁阻塞
通过迁移补种默认 groups 记录,避免新装空分组
迁移锁改为 try lock + 重试并加入超时
写入 usage_logs 时保留 rate_multiplier=0 语义
测试: go test ./...
|
2025-12-29 10:43:46 +08:00 |
|