shaw
|
ff0875868e
|
Merge PR #229: perf(网关): 粘性会话命中复用候选账号
|
2026-01-10 15:21:59 +08:00 |
|
shaw
|
d1a6d6b1cf
|
Merge branch 'mt21625457/main'
|
2026-01-10 14:44:58 +08:00 |
|
shaw
|
15884f368d
|
Merge branch 'longgexx/main'
|
2026-01-10 14:16:13 +08:00 |
|
shaw
|
b03fb9c2f6
|
fix: remove accidentally committed test binary and restore .gitignore
- Remove backend/repository.test (62MB macOS arm64 test binary)
- Restore *.test pattern in .gitignore to prevent future accidents
|
2026-01-10 14:16:06 +08:00 |
|
shaw
|
3d4984133e
|
chore: 删除误提交的 Go 测试二进制并更新 .gitignore
|
2026-01-10 14:03:41 +08:00 |
|
shaw
|
62dc0b953b
|
Merge branch 'fix/table-pagination-and-features'
|
2026-01-09 20:42:05 +08:00 |
|
shaw
|
f060db0b30
|
fix: 加固 LinuxDo OAuth 登录安全与配置校验
|
2026-01-09 19:32:06 +08:00 |
|
 shawandadmin
|
1a1e23fc76
|
fix(auth): 注册接口安全加固 - 默认关闭注册
|
2026-01-09 18:26:32 +08:00 |
|
shaw
|
27291f2e5f
|
fix(docker): 修改 Redis 配置以支持可选的密码设置
|
2026-01-09 17:28:55 +08:00 |
|
shaw
|
43f104bdf7
|
fix(auth): 注册接口安全加固 - 默认关闭注册
|
2026-01-09 14:49:20 +08:00 |
|
shaw
|
0a9c17b9d1
|
Merge PR #213: feat(openai): 支持 OpenAI Responses API 标准内容格式
|
2026-01-09 10:40:47 +08:00 |
|
shaw
|
2d83941aaa
|
feat(antigravity): 添加 URL fallback 机制 (sandbox → daily → prod)
|
2026-01-09 10:36:56 +08:00 |
|
shaw
|
b015a3bd8a
|
fix(antigravity): 修复频繁出现429错误的问题
|
2026-01-08 20:06:32 +08:00 |
|
shaw
|
3fb43b91bf
|
fix(security): 强化 usage 端点信息暴露控制
|
2026-01-08 17:45:31 +08:00 |
|
shaw
|
6e8188ed64
|
fix(antigravity): 修复请求频繁429的问题
|
2026-01-08 17:27:35 +08:00 |
|
shaw
|
db6f53e2c9
|
fix(billing): 修复客户端取消请求时计费丢失问题
检测 context.Canceled 作为客户端断开信号,返回已收集的 usage 而非错误
|
2026-01-08 11:25:17 +08:00 |
|
shaw
|
acabdc2f99
|
fix(i18n): correct priority description - lower value means higher priority
|
2026-01-08 09:56:26 +08:00 |
|
shaw
|
169aa4716e
|
Merge branch 'feature/account-expires-at' into main: feat: add account expires-at field and auto-pause expired accounts
|
2026-01-08 09:27:57 +08:00 |
|
shaw
|
c0753320a0
|
Merge branch 'feat/usage-log-user-agent'
|
2026-01-08 09:16:48 +08:00 |
|
shaw
|
d99a3ef14b
|
fix(gateway): 修复账号跨分组调度问题
问题:账号可能被调度到未分配的分组(如 simon 账号被调度到 claude_default)
根因:
- 强制平台模式下分组查询失败时回退到全平台查询
- listSchedulableAccounts 中分组为空时回退到无分组查询
- 粘性会话只检查平台匹配,未校验账号分组归属
修复:
- 移除强制平台模式的回退逻辑,分组内无账号时返回错误
- 移除 listSchedulableAccounts 的回退逻辑
- 新增 isAccountInGroup 方法用于分组校验
- 在三处粘性会话检查中增加分组归属验证
|
2026-01-07 10:56:52 +08:00 |
|
shaw
|
fc8fa83fcc
|
fix(keys): 修复代码框第一行多余空格问题
pre 标签会原样保留内部空白字符,导致 code 标签前的模板缩进
被渲染为实际空格。将 pre/code 标签写在同一行消除此问题。
|
2026-01-07 10:26:24 +08:00 |
|
shaw
|
6dcd99468b
|
fix(gateway): 修复 cache_control 块超限问题并优化 Claude Code 检测
问题:
- OAuth/SetupToken 账号注入 system prompt 后可能导致 cache_control
块超过 Anthropic API 的 4 个限制
- Claude Code 检测使用精确匹配,无法识别 Agent SDK 等变体
修复:
- 新增 enforceCacheControlLimit 函数,强制执行 4 个块限制
- 优先从 messages 移除,再从 system 尾部移除(保护注入的 prompt)
- 改用前缀匹配检测 Claude Code 系统提示词,支持多种变体:
- 标准版、Agent SDK 版、Explore Agent 版、Compact 版
|
2026-01-07 10:17:09 +08:00 |
|
shaw
|
d5ba7b80d3
|
fix(admin/usage): 恢复成本 Tooltip 明细并优化账号筛选
问题修复:
- 恢复 Cost Tooltip 的成本分项明细 (input_cost, output_cost, cache 成本)
- 修复 Token Tooltip 双分隔线显示问题
- 修复 Tooltip 翻译键缺失问题,新增 costDetails/tokenDetails
- 恢复 Excel 导出格式化 (aoa_to_sheet + 翻译列头)
功能优化:
- 账号筛选从前端搜索改为后端搜索,避免一次加载 1000 条数据
- 行为与用户/API Key 筛选保持一致 (debounce + 后端分页)
|
2026-01-07 09:35:21 +08:00 |
|
shaw
|
a3b81ef7bc
|
fix(test): 补充 stubUsageLogRepo 缺失的 GetStatsWithFilters 方法
|
2026-01-06 22:35:22 +08:00 |
|
shaw
|
015974a27e
|
feat(admin/usage): 优化管理员用量页面功能和体验
后端改进:
- 新增 GetStatsWithFilters 方法支持完整筛选条件
- Stats 端点支持 account_id, group_id, model, stream, billing_type 参数
- 统一使用 filters 结构体,移除冗余的分支逻辑
前端改进:
- 统计卡片添加"所选范围内"文字提示
- 优化总消费显示格式,清晰展示实际费用和标准计费
- Token 和费用列添加问号图标 tooltip 显示详细信息
- API Key 搜索框体验优化:点击即显示下拉选项
- 选择用户后自动加载该用户的所有 API Key
|
2026-01-06 22:19:07 +08:00 |
|
shaw
|
216321aa9e
|
Merge PR #183: 修复账号管理页面过滤器和错误提示问题
|
2026-01-06 19:49:18 +08:00 |
|
shaw
|
cb72262ad8
|
Merge PR #166: feat: 图片生成计费功能
|
2026-01-06 11:29:35 +08:00 |
|
shaw
|
752882a022
|
fix: Token 统计支持 M 单位并修复 lint 错误
- 用户仪表盘 Token 统计卡片支持 K/M 单位自动切换
- 更新 formatTokensK 工具函数支持百万级显示
- 修复 setup.go 中未检查返回值的 errcheck 错误
|
2026-01-06 10:13:12 +08:00 |
|
shaw
|
9731b961d0
|
fix: redeem 页面类型的字段翻译
|
2026-01-06 09:46:46 +08:00 |
|
shaw
|
2920409404
|
docs: 更新 Docker 部署文档强调 JWT_SECRET 配置重要性
- docker-compose.yml: 添加注释说明设置固定 JWT_SECRET 可防止容器重启后登录失效
- .env.example: 添加 openssl rand -hex 32 生成安全密钥的命令
|
2026-01-06 09:44:54 +08:00 |
|
shaw
|
7dbbfc22b6
|
fix: 移除 release 模式 JWT Secret 必填限制并支持 Docker 数据目录
- 移除 Install() 和 AutoSetupFromEnv() 中 release 模式下 JWT Secret 必填检查
- 移除 config.Validate() 中 release 模式下的 JWT 验证
- 新增 GetDataDir() 函数,自动检测数据目录:DATA_DIR 环境变量 > /app/data > 当前目录
- config.yaml 和 .installed 文件现在写入正确的数据目录
- config.Load() 添加 /app/data 到配置搜索路径
这修复了两个问题:
1. Web Setup Wizard 在 release 模式下无法完成安装
2. Docker 部署时 config.yaml 未被持久化导致每次重启重新初始化
|
2026-01-06 09:43:56 +08:00 |
|
shaw
|
aaaa68ea7f
|
fix: 修复 CSP 策略阻止 Cloudflare Turnstile 加载的问题
在 script-src 和 frame-src 中添加 challenges.cloudflare.com 域名,
允许 Turnstile 脚本加载和 iframe 渲染。
|
2026-01-06 09:15:03 +08:00 |
|
shaw
|
af753de481
|
fix: 修复账号修改代理更新无效的bug
|
2026-01-06 09:04:01 +08:00 |
|
shaw
|
3956819c78
|
fix: 数据迁移时长增加到10分钟
|
2026-01-05 22:24:24 +08:00 |
|
shaw
|
168aa57810
|
fix(ci): 修复前端构建使用 pnpm 而非 npm
|
2026-01-05 21:29:27 +08:00 |
|
shaw
|
706af2920f
|
Merge branch 'fix/account-filters-menu-missing-features'
## Summary
- 修复账号管理页面组件拆分时遗漏的功能
- 统一所有内联 SVG 为 Icon 组件
- 修复 ProxySelector 选择"无代理"时发送错误值的问题
## Changes
- AccountTableFilters: 添加 Antigravity 平台选项、类型筛选器、inactive 状态
- AccountActionMenu: 恢复重置状态和清除限速按钮
- AccountsView: 修正 handleClearRateLimit 调用正确的 API
- ProxySelector: 修复选择"无代理"时发送 null 而不是 0
## Conflict Resolution
- ProxySelector.vue: 采用 PR 分支的正确逻辑(发送 null 而不是 0)
这是正确的修复,因为后端使用 *int64 类型,nil 会触发 ClearProxyID()
|
2026-01-05 21:16:05 +08:00 |
|
shaw
|
4d078a8854
|
fix(admin): 修复零值字段无法保存的问题
- 用户允许分组:前端发送空数组而非 null 表示"允许全部"
- 账户代理:前端发送 0 而非 null 表示"无代理"
- 后端 UpdateAccount/BulkUpdate 正确处理 ProxyID=0 为清除代理
|
2026-01-05 20:53:38 +08:00 |
|
shaw
|
7c419dfc50
|
Merge PR #163: feat(前端): 用户管理页面添加 ID 列
|
2026-01-05 15:47:47 +08:00 |
|
shaw
|
d20697beb3
|
Merge branch 'feat/account-notes'
|
2026-01-05 14:42:31 +08:00 |
|
shaw
|
91f9d4c7a9
|
Merge branch 'mike/deployment'
|
2026-01-05 14:37:31 +08:00 |
|
shaw
|
a60dbb5533
|
Merge branch 'fix/turnstile-secret-key-preserve'
|
2026-01-05 14:31:50 +08:00 |
|
shaw
|
7cc7e15174
|
Merge branch 'IanShaw027/main'
|
2026-01-05 11:20:28 +08:00 |
|
shaw
|
090c9e665b
|
fix(frontend): 启用 vue-i18n JIT 编译修复消息插值不工作问题
问题:使用 vue-i18n 运行时版本后,带变量的翻译(如 '{days} 天')
无法正确显示,直接显示原始字符串。
原因:运行时版本不含消息编译器,无法在运行时编译消息插值。
解决:启用 JIT 编译(__INTLIFY_JIT_COMPILATION__: true)
- JIT 编译器将消息编译为 AST 对象而非 JavaScript 代码
- 通过解释执行 AST 实现插值,无需 eval 或 new Function
- 符合 CSP script-src 'self' 策略,不降低安全性
同时将 vite.config.js.timestamp-* 临时文件添加到 .gitignore
|
2026-01-05 09:32:26 +08:00 |
|
shaw
|
fd29fe11b4
|
Merge PR #149: Fix/multi platform - 安全稳定性修复和前端架构优化
|
2026-01-05 08:44:44 +08:00 |
|
shaw
|
07d80f76d0
|
chore: 忽略 TypeScript composite 模式生成的 vite.config.js
|
2026-01-05 08:39:49 +08:00 |
|
shaw
|
ad2ff90851
|
fix(前端): 修复 CSP 策略阻止 vue-i18n 运行时编译
使用 vue-i18n 纯运行时版本替代默认版本,避免运行时消息编译
需要 `new Function` 而被 CSP `script-src 'self'` 策略阻止。
|
2026-01-04 23:51:48 +08:00 |
|
shaw
|
46dda58355
|
Merge PR #146: feat: 提升流式网关稳定性与安全策略强化
|
2026-01-04 22:45:01 +08:00 |
|
shaw
|
e78c864650
|
Merge PR #142: feat: 多平台网关优化与用户系统增强
主要功能:
- Gemini OAuth 配额系统优化:Google One tier 自动推断
- Antigravity 网关增强:Thinking Block 重试、Claude 模型 signature 透传
- 账号调度改进:临时不可调度功能、负载感知调度优化
- 前端用户体验:账号管理界面优化、使用教程改进
冲突解决:保留 handleUpstreamError 的 prefix 参数和日志记录能力,
同时合并 PR 的 thinking block 重试和 model fallback 功能。
|
2026-01-04 20:30:19 +08:00 |
|
shaw
|
4df712624e
|
Merge branch 'slovx2/main'
|
2026-01-04 19:51:17 +08:00 |
|
shaw
|
a527559526
|
fix(test): 修复claude、openai oauth账号test刷新token的bug
|
2026-01-04 17:29:34 +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 |
|
shaw
|
a11c71cea9
|
fix: 修复创建账号schedulable值默认为false的bug
|
2026-01-04 10:45:18 +08:00 |
|
shaw
|
d9b1587982
|
feat(gateway): 实现 Claude Code 系统提示词智能注入
|
2026-01-04 10:38:13 +08:00 |
|
shaw
|
631ba25e04
|
Merge branch 'feature/atomic-scheduling-v2'
|
2026-01-03 13:35:19 +08:00 |
|
shaw
|
9d3ec9e627
|
feat(keys): 适配 Antigravity 和 Gemini 平台的使用教程与 CCS 导入
- UseKeyModal: 添加 Antigravity 两级 Tab (Claude Code / Gemini CLI)
- UseKeyModal: 添加 Gemini 平台的 Gemini CLI 教程
- UseKeyModal: Antigravity 平台统一使用 /antigravity 后缀
- KeysView: CCS 导入支持 Antigravity (询问客户端) / Gemini / OpenAI
- i18n: 添加相关中英文翻译
|
2026-01-02 15:53:05 +08:00 |
|
shaw
|
b1528e9dec
|
Merge PR #126: feat(antigravity): 添加 models 端点支持
|
2026-01-02 14:28:21 +08:00 |
|
shaw
|
106e59b753
|
Merge PR #122: feat: 用户自定义属性系统 + Wechat 字段迁移
|
2026-01-01 20:25:50 +08:00 |
|
shaw
|
2c71c8b968
|
Merge PR #119: 支持自定义模型和优化模型选择
|
2026-01-01 17:02:54 +08:00 |
|
shaw
|
901b03b870
|
Merge PR #118: feat(gemini): 添加 Google One 存储空间推断 Tier 功能
|
2026-01-01 16:54:30 +08:00 |
|
shaw
|
4f13c8de0d
|
Merge PR #110: refactor(antigravity): 简化模型映射逻辑,支持前缀匹配
- 删除 GeminiQuotaService 及相关代码
- 删除负载感知调度(SelectAccountWithLoadAwareness)
- 简化并发控制,删除账号级等待队列
- 模型映射改用前缀匹配,覆盖版本变化
Closes #110
|
2026-01-01 11:21:09 +08:00 |
|
shaw
|
2a395d12a6
|
Merge branch 'feature/atomic-scheduling'
|
2026-01-01 11:05:22 +08:00 |
|
shaw
|
9d698d9306
|
Merge branch 'feature/gemini-quota' (PR #113)
feat: Gemini 配额模拟和限流功能
主要变更:
- 新增 GeminiQuotaService 实现基于 Tier 的配额管理
- RateLimitService 增加 PreCheckUsage 预检查功能
- gemini_oauth_service 改进 tier_id 处理逻辑(向后兼容)
- 前端新增配额可视化组件 (AccountQuotaInfo.vue)
- 数据库迁移: 为现有 Code Assist 账号添加默认 tier_id
技术细节:
- 支持 LEGACY/PRO/ULTRA 三种配额等级
- 配额策略可通过配置文件或数据库设置覆盖
- fetchProjectID 返回值保留 tierID(即使 projectID 获取失败)
- 删除冗余类型别名 ClaudeCustomToolSpec
|
2026-01-01 10:58:11 +08:00 |
|
 Wesley LiddickandGitHub
|
c5c12d4c8b
|
Revert "feat(gateway): 实现负载感知的账号调度优化 (#114)" (#117)
This reverts commit 8d252303fc.
|
2026-01-01 10:45:42 +08:00 |
|
shaw
|
312cc00d21
|
Merge branch 'IanShaw027/main'
|
2025-12-31 23:50:26 +08:00 |
|
shaw
|
8e55ee0e2c
|
style: fix gofmt formatting in claude_types.go
|
2025-12-31 23:50:15 +08:00 |
|
shaw
|
bb7ade265d
|
chore(token-refresh): 添加 Antigravity Token 刷新调试日志
- NeedsRefresh 判断为 true 时输出 expires_at、time_until_expiry、window
- 修正注释中的刷新窗口描述(10分钟 → 15分钟)
|
2025-12-31 23:37:51 +08:00 |
|
shaw
|
c5b792add5
|
fix(billing): 修复限额为0时消费记录失败的问题
- 添加 normalizeLimit 函数,将 0 或负数限额规范化为 nil(无限制)
- 简化 IncrementUsage,移除冗余的配额检查逻辑
- 配额检查已在请求前由中间件和网关完成
- 消费记录应无条件执行,确保数据完整性
- 删除测试限额超出行为的无效集成测试
|
2025-12-31 22:48:35 +08:00 |
|
shaw
|
0b6371174e
|
fix(settings): 保存 Turnstile 设置时验证参数有效性
|
2025-12-31 21:11:10 +08:00 |
|
shaw
|
2c35f0276f
|
fix(frontend): 修复无限制订阅的显示问题
|
2025-12-31 20:46:54 +08:00 |
|
shaw
|
3fd9bd4a80
|
fix(ci): 使用预处理的小写 owner 替代 lower 函数
GoReleaser 不支持 lower 模板函数,改为:
- 在 GitHub Actions 中预处理小写 owner
- 传递 GITHUB_REPO_OWNER_LOWER 环境变量给 GoReleaser
|
2025-12-31 17:25:43 +08:00 |
|
shaw
|
9aeef15d1b
|
fix(ci): GHCR 镜像名转为小写
|
2025-12-31 17:12:09 +08:00 |
|
shaw
|
8df662d0d2
|
Merge PR #105: fix(数据层): 修复软删除与唯一约束冲突问题 和 添加 model 参数必填验证
|
2025-12-31 16:44:33 +08:00 |
|
shaw
|
81213f2324
|
refactor(service): 统一时间戳解析,支持多种格式
新增 Account.GetCredentialAsTime 方法,统一处理凭证中的时间戳字段,
兼容 RFC3339 字符串、Unix 时间戳字符串和数字类型。
- 重构 Claude/Gemini/Antigravity TokenRefresher.NeedsRefresh
- 移除重复的 parseExpiresAt/parseAntigravityExpiresAt 函数
- 简化 GetOpenAITokenExpiresAt 实现
- 新增 RFC3339 格式单元测试用例
|
2025-12-31 16:25:45 +08:00 |
|
shaw
|
aac7dd6b08
|
style: fix gofmt formatting in test file
Remove redundant alignment whitespace before comments.
|
2025-12-31 15:52:02 +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 |
|
shaw
|
b7c6d040dd
|
fix: 修复Antigravity token刷新间隔问题
|
2025-12-31 10:33:00 +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 |
|
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 |
|
shaw
|
fb883f0092
|
fix: 修复默认分组初始化导致启动失败的问题
- 标准版不再创建默认分组,简易模式保持创建
- 简易模式下删除默认分组后重启自动恢复(而非报唯一键冲突)
- AutoMigrate 函数增加 runMode 参数以区分运行模式
|
2025-12-30 14:30:16 +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 |
|
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 |
|
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 |
|
shaw
|
ef22d6f628
|
chore(frontend): 移除未使用的新手引导组件残留代码
删除开发过程中遗留的未使用文件:
- TourDescription.vue: 未被使用的结构化描述组件
- useTourStepDescription.ts: 步骤key映射,引用的组件从未创建
- TourStepDescriptions/: 空的组件目录
当前实现通过 i18n + HTML 字符串直接提供描述内容,无需这些文件。
|
2025-12-29 17:12:19 +08:00 |
|
shaw
|
c01db6b180
|
fix: 修复快捷添加代理IP弹窗关闭的bug
|
2025-12-29 09:30:32 +08:00 |
|
shaw
|
32b4b139a4
|
fix: 修复因移除 SimpleMode 导致的测试编译错误
- 移除 api_contract_test.go 中的 SettingKeySimpleMode 引用
- 移除期望响应中的 simple_mode 字段
- 修复 NewSettingHandler 调用参数数量
|
2025-12-29 09:24:21 +08:00 |
|
shaw
|
31fef105c7
|
refactor: 移除旧版数据库配置的简易模式实现
移除与 PR #66 冲突的旧版简易模式实现(commit 7d4b7de)。
新版简易模式通过 run_mode 配置文件/环境变量控制,无需数据库设置。
后端变更:
- 移除 SettingKeySimpleMode 常量
- 移除 SystemSettings/PublicSettings 中的 SimpleMode 字段
- 移除 setting_handler 中的简易模式切换逻辑
- 移除 userService 依赖(不再需要自动设置管理员并发数)
前端变更:
- 移除 appStore.simpleMode 状态
- 移除设置页面的"使用模式"设置区块
- 移除 GroupsView 中的简易模式相关逻辑
- 移除相关国际化文案
|
2025-12-29 09:17:00 +08:00 |
|
shaw
|
1f5ced7069
|
fix(frontend): resolve TypeScript errors in simple mode implementation
- Remove unused simpleMode variable in AppSidebar.vue
- Add run_mode to AuthResponse.user type definition
|
2025-12-29 08:51:57 +08:00 |
|
shaw
|
e247be6ead
|
fix(frontend): 修复账号管理页面 API Key 类型的提示文案错误
- 添加 OpenAI/Gemini 平台的 baseUrlHint 和 apiKeyHint 国际化文案
- 修改 CreateAccountModal 和 EditAccountModal 根据平台显示正确提示
- 将重复的平台判断逻辑抽取为 computed 属性,优化代码结构
|
2025-12-28 23:24:46 +08:00 |
|
shaw
|
30b95cf5ce
|
fix(usage): 分离 API 响应和窗口统计缓存,修复 5h 窗口未激活时的显示 bug
问题:
1. WindowStats 与 API 响应一起缓存 10 分钟,导致费用数据更新延迟
2. 当 5h 窗口未激活(ResetsAt 为空)时,FiveHour 为 nil,导致所有窗口的 WindowStats 都无法显示
修复:
- 分离缓存:API 响应缓存 10 分钟,窗口统计独立缓存 1 分钟
- RemainingSeconds 每次请求时实时计算
- FiveHour 对象始终创建(即使 ResetsAt 为空)
- addWindowStats 增强防护,支持 FiveHour 为 nil 时仍处理其他窗口
|
2025-12-28 23:12:44 +08:00 |
|
shaw
|
25b8a22648
|
fix(test): 测试用例添加 simple_mode 字段
API 响应新增 simple_mode 字段,同步更新测试期望值
|
2025-12-28 22:51:22 +08:00 |
|
shaw
|
0084da9ca5
|
fix: 修复 NewSettingHandler 参数不足导致的编译错误
- 测试文件添加第三个参数 userService(nil)
- Handler 添加 userService 空指针检查,防止测试环境 panic
|
2025-12-28 22:45:13 +08:00 |
|