Ethan0x0000
e3f1fd9b63
fix: handle strings.Builder write errors in assistant parsing
2026-03-14 13:12:17 +08:00
Ethan0x0000
ece0606fed
fix: consolidate chat-completions compatibility fixes
...
- apply default mapped model only when scheduling fallback is actually used
- preserve reasoning in OpenAI-compatible output via reasoning_content and avoid invalid input function_call ids
2026-03-14 12:12:08 +08:00
Wesley Liddick
4588258d80
Merge pull request #960 from 0xObjc/codex/user-spending-ranking
...
feat(admin): add user spending ranking dashboard view
2026-03-13 23:06:30 +08:00
Wesley Liddick
c12e48f966
Merge pull request #949 from kunish/fix/remove-done-stop-sequence
...
fix: remove SSE termination marker from DefaultStopSequences
2026-03-13 22:56:29 +08:00
Wesley Liddick
ec8f50a658
Merge pull request #951 from wanXcode/fix/dashboard-user-trend-label
...
fix(dashboard): prefer username over email prefix in recent usage chart
2026-03-13 22:56:13 +08:00
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
Peter
80d8d6c3bc
feat(admin): add user spending ranking dashboard view
2026-03-13 03:43:03 +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
wanXcode
69cafe8674
fix(dashboard): prefer username in user usage trend
2026-03-12 17:42:41 +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
kunish
cdb64b0d33
fix: remove SSE termination marker from DefaultStopSequences
...
The SSE stream termination marker string was incorrectly included in
DefaultStopSequences, causing Gemini to prematurely stop generating
output whenever the model produced text containing that marker.
The SSE-level protocol filtering in stream_transformer.go already
handles this marker correctly; it should not be a stop sequence for
the model's text generation.
2026-03-12 17:10: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