Wesley Liddick
07bb2a5f3f
Merge pull request #952 from xvhuan/feat/billing-ledger-decouple-usage-log-20260312
...
feat: 解耦计费正确性与 usage_logs 批量写压
2026-03-13 22:46:09 +08:00
Wesley Liddick
417861a48e
Merge pull request #956 from share-wey/main
...
chore: codex transform fixes and feature compatibility
2026-03-13 22:36:29 +08:00
erio
05edb5514b
feat(redeem): support subscription type in create-and-redeem API
...
Add group_id and validity_days fields to CreateAndRedeemCodeRequest,
enabling subscription-type redemption codes to be created and redeemed
in a single API call.
- Type defaults to "balance" when omitted for backward compatibility
- Subscription type requires group_id (non-nil) and validity_days (>0)
- Existing balance/concurrency callers are unaffected
2026-03-13 21:26:46 +08:00
Connie Borer
7e288acc90
Merge branch 'Wei-Shaw:main' into main
2026-03-13 17:28:14 +08:00
Wesley Liddick
1ee984478f
Merge pull request #957 from touwaeriol/feat/group-rate-multipliers-modal
...
feat(groups): add rate multipliers management modal
2026-03-13 11:11:13 +08:00
haruka
e73531ce9b
fix: 管理员重置配额补全 monthly 字段并修复 ristretto 缓存异步问题
...
- 后端 handler:ResetSubscriptionQuotaRequest 新增 Monthly 字段,
验证逻辑扩展为 daily/weekly/monthly 至少一项为 true
- 后端 service:AdminResetQuota 新增 resetMonthly 参数,
调用 ResetMonthlyUsage;重置后追加 subCacheL1.Wait(),
保证 ristretto Del() 的异步删除立即生效,消除重置后
/v1/usage 返回旧用量数据的竞态窗口
- 后端测试:更新存量测试用例匹配新签名,补充
TestAdminResetQuota_ResetMonthlyOnly /
TestAdminResetQuota_ResetMonthlyUsageError 两个新用例
- 前端 API:resetQuota options 类型新增 monthly: boolean
- 前端视图:confirmResetQuota 改为同时重置 daily/weekly/monthly
- i18n:中英文确认提示文案更新,提及每月配额
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-13 10:39:35 +08:00
erio
d648811233
feat(groups): add rate multipliers management modal
...
Add a dedicated modal in group management for viewing, adding, editing,
and deleting per-user rate multipliers within a group.
Backend:
- GET /admin/groups/:id/rate-multipliers - list entries with user details
- PUT /admin/groups/:id/rate-multipliers - batch sync (full replace)
- DELETE /admin/groups/:id/rate-multipliers - clear all entries
- Repository: GetByGroupID, SyncGroupRateMultipliers methods on
user_group_rate_multipliers table (same table as user-side rates)
Frontend:
- New GroupRateMultipliersModal component with:
- User search and add with email autocomplete
- Editable rate column with local edit mode (cancel/save)
- Batch adjust: multiply all rates by a factor
- Clear all (local operation, requires save to persist)
- Pagination (10/20/50 per page)
- Platform icon with brand colors in group info bar
- Unsaved changes indicator with revert option
- Unit tests for all three backend endpoints
2026-03-12 23:37:36 +08:00
QTom
34695acb85
fix: 移除账号导入时同步调用 disableOpenAITraining,避免网络超时导致导入失败
...
privacy_mode 改为由 TokenRefreshService 在 token 刷新后异步补设。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 22:36:25 +08:00
QTom
a63de12182
feat: GPT 隐私模式 + no-train 前端展示优化
2026-03-12 21:24:01 +08:00
yexueduxing
f16910d616
chore: codex transform fixes and feature compatibility
2026-03-12 20:52:35 +08:00
ius
64b3f3cec1
test: relocate best-effort usage log stub
2026-03-12 18:43:37 +08:00
ius
6a685727d0
fix: harden usage billing idempotency and backpressure
2026-03-12 18:38:09 +08:00
ius
32d25f76fc
fix: respect preconfigured usage log batch channels
2026-03-12 17:44:57 +08:00
ius
18ba8d9166
fix: stabilize repository integration paths
2026-03-12 17:42:41 +08:00
ius
e97fd7e81c
test: align oauth passthrough stream expectations
2026-03-12 17:22:01 +08:00
ius
8d4d3b03bb
fix: remove unused gateway usage helpers
2026-03-12 17:08:57 +08:00
ius
b764d3b8f6
Merge remote-tracking branch 'origin/main' into feat/billing-ledger-decouple-usage-log-20260312
2026-03-12 16:53:28 +08:00
ius
611fd884bd
feat: decouple billing correctness from usage log batching
2026-03-12 16:53:18 +08:00
Wesley Liddick
826090e099
Merge pull request #946 from StarryKira/antigravity-gemini-thought-signature-fix
...
fix Antigravity gemini thought signature fix
2026-03-12 13:51:46 +08:00
haruka
25cb5e7505
fix 第一次 400,第二次触发切账号信号
2026-03-12 11:30:53 +08:00
ius
5c13ec3121
Fix lint after rebasing PR #938 branch
2026-03-12 11:20:59 +08:00
ius
d8aff3a7e3
Merge origin/main into fix/account-extra-scheduler-pressure-20260311
2026-03-12 11:12:01 +08:00
haruka
f44927b9f8
add test for fix #935
2026-03-12 11:04:14 +08:00
Wesley Liddick
c0110cb5af
Merge pull request #941 from CoolCoolTomato/main
...
fix: 修复gpt-5.2以上模型映射到gpt-5.2以下时verbosity参数引发的报错
2026-03-12 09:35:09 +08:00
Wesley Liddick
1e51de88d6
Merge pull request #937 from lxohi/fix/anthropic-stream-keepalive
...
fix: 为 Anthropic Messages API 流式转发添加下游 keepalive ping
2026-03-12 09:30:18 +08:00
Wesley Liddick
30995b5397
Merge pull request #936 from xvhuan/fix/ops-write-pressure-20260311
...
降低 ops_error_logs 与 scheduler_outbox 的数据库写放大
2026-03-12 09:28:34 +08:00
Wesley Liddick
eb60f67054
Merge pull request #933 from xvhuan/fix/dashboard-read-pressure-20260311
...
降低 admin/dashboard 读路径压力,避免 snapshot-v2 并发击穿
2026-03-12 09:28:14 +08:00
Wesley Liddick
78193ceec1
Merge pull request #931 from xvhuan/fix/db-write-amplification-20260311
...
降低 quota 与 Codex 快照热路径的数据库写放大
2026-03-12 09:27:34 +08:00
Wesley Liddick
f0e08e7687
Merge pull request #930 from GuangYiDing/feat/gemini-25-flash-image-support
...
feat: 修复 Gemini 生图接口并新增前端生图测试能力
2026-03-12 09:27:19 +08:00
Wesley Liddick
10b8259259
Merge pull request #909 from StarryKira/feature/admin-reset-subscription-quota
...
Feature/管理员可以重置账号额度
2026-03-12 09:26:47 +08:00
CoolCoolTomato
eb0b77bf4d
fix: 修复流水线golangci-lint 的 errcheck
2026-03-11 22:56:20 +08:00
shaw
9d81467937
refactor: 重构 Chat Completions 端点,采用类型安全的 Responses API 转换
...
将 /v1/chat/completions 端点从 ResponseWriter 劫持模式重构为独立的
类型安全转换路径,与 Anthropic Messages 端点架构对齐:
- 在 apicompat 包新增 Chat Completions 完整类型定义和双向转换器
- 新增 ForwardAsChatCompletions service 方法,走 Responses API 上游
- Handler 改为独立的账号选择/failover 循环,不再劫持 Responses handler
- 提取 handleCompatErrorResponse 为 Chat Completions 和 Messages 共用
- 删除旧的 forwardChatCompletions 直传路径及相关死代码
2026-03-11 22:15:32 +08:00
CoolCoolTomato
fd8ccaf01a
fix: 修复gpt-5.2以上模型映射到gpt-5.2以下时verbosity参数引发的报错
2026-03-11 21:12:07 +08:00
ius
c9debc50b1
Batch usage log writes in repository
2026-03-11 20:29:48 +08:00
ius
2b30e3b6d7
Reduce scheduler rebuilds on neutral extra updates
2026-03-11 19:16:19 +08:00
amberwarden
6e90ec6111
fix: 为 Anthropic Messages API 流式转发添加下游 keepalive ping
...
Anthropic Messages API 的流式转发路径(gateway_service.go)在上游长时间
无数据时(如 Opus extended thinking 阶段)不会向下游发送任何内容,导致
Cloudflare Tunnel 等代理因连接空闲而断开。
复用已有的 StreamKeepaliveInterval 配置(默认 10 秒),在 select 循环中
添加 keepalive 分支,定时发送 Anthropic 原生格式的 ping 事件保活,与
OpenAI 兼容路径的实现模式保持一致。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 18:43:03 +08:00
Wesley Liddick
8dd38f4775
Merge pull request #926 from 7976723/feat/chat-completions-compat-v2
...
feat: 添加 OpenAI Chat Completions 兼容端点(基于 #648,修复编译错误和运行时 panic)
2026-03-11 17:42:03 +08:00
ius
fbd73f248f
Fix ops write pressure integration fixture
2026-03-11 17:40:28 +08:00
ius
f740d2c291
Reduce ops and scheduler write amplification
2026-03-11 17:32:00 +08:00
Rose Ding
bf6585a40f
feat: add gemini image test preview
2026-03-11 17:12:57 +08:00
ius
8c2dd7b3f0
Fix dashboard snapshot lint errors
2026-03-11 16:57:18 +08:00
ius
4167c437a8
Reduce admin dashboard read amplification
2026-03-11 16:46:58 +08:00
ius
2fc6aaf936
Fix Codex exhausted snapshot propagation
2026-03-11 15:47:39 +08:00
Rose Ding
1c0519f1c7
feat: add gemini 2.5 flash image support
2026-03-11 15:21:52 +08:00
Wesley Liddick
6bbe7800be
Merge pull request #908 from wucm667/fix/ops-alert-group-account-metrics
...
fix: 补充缺失的组级和账户级运维告警指标
2026-03-11 15:04:07 +08:00
ius
2694149489
Reduce DB write amplification on quota and account extra updates
2026-03-11 13:53:19 +08:00
7976723
a17ac50118
fix: 修复 Chat Completions 编译错误和运行时 panic
...
1. 修复 WriteFilteredHeaders API 不兼容(2处):
将 s.cfg.Security.ResponseHeaders 改为 s.responseHeaderFilter,
因为 main 分支已将函数签名改为接受 *responseheaders.CompiledHeaderFilter
2. 修复 writer 生命周期导致的 nil pointer panic:
ChatCompletions handler 替换了 c.Writer 但未恢复,导致
OpsErrorLogger 中间件的 defer 释放 opsCaptureWriter 后,
Logger 中间件调用 c.Writer.Status() 触发空指针解引用。
通过保存并恢复 originalWriter 修复。
3. 为 chatCompletionsResponseWriter 添加防御性 Status() 和
Written() 方法,包含 nil 安全检查
4. 恢复 gateway.go 中被误删的 net/http import
2026-03-11 13:49:13 +08:00
7976723
656a77d585
feat: 添加 OpenAI Chat Completions 兼容端点
...
基于 @yulate 在 PR #648 (commit 0bb6a392 ) 的工作,解决了与最新
main 分支的合并冲突。
原始功能(@yulate):
- 添加 /v1/chat/completions 和 /chat/completions 兼容端点
- 将 Chat Completions 请求转换为 Responses API 格式并转换回来
- 添加 API Key 直连转发支持
- 包含单元测试
Co-authored-by: yulate <yulate@users.noreply.github.com >
2026-03-11 13:47:37 +08:00
Elysia
36cda57c81
fix copilot review issue
2026-03-10 23:59:39 +08:00
rickylin047
9f1f203b84
fix(openai): convert string input to array for Codex OAuth responses endpoint
...
The ChatGPT backend-api codex/responses endpoint requires `input` to be
an array, but the OpenAI Responses API spec allows it to be a plain string.
When a client sends a string input, sub2api now converts it to the expected
message array format. Empty/whitespace-only strings become an empty array
to avoid triggering a 400 "Input must be a list" error.
2026-03-10 23:43:52 +08:00