Ylarod
11f7b83522
sub2api: add bedrock support
2026-03-13 17:00:16 +08:00
Rose Ding
f7177be3b6
fix: golangci-lint 修复(gofmt 格式化 + errcheck 返回值检查)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:01:05 +08:00
Rose Ding
875b417fde
fix: 补充 wire_gen_test.go 中 provideCleanup 缺少的 backupSvc 参数
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:53:46 +08:00
wucm667
2573107b32
refactor: 将 ComputeQuotaResetAt 和 ValidateQuotaResetConfig 函数中的 map 类型从 map[string]interface{} 修改为 map[string]any
2026-03-13 11:44:49 +08:00
wucm667
5b85005945
feat: 账号配额支持固定时间重置模式
...
- 后端新增 rolling/fixed 两种配额重置模式,支持日配额和周配额
- fixed 模式下可配置重置时刻(小时)、重置星期几(周配额)及时区(IANA)
- 在 account_repo.go 中使用 SQL 表达式适配两种模式的过期判断与重置时间推进
- 新增 ComputeQuotaResetAt / ValidateQuotaResetConfig 等辅助函数
- DTO 层新增相关字段并在 mappers 中完整映射
- 前端 QuotaLimitCard 新增 rolling/fixed 切换 UI、时区选择器
- CreateAccountModal / EditAccountModal 透传新配置字段
- i18n(zh/en)同步新增相关翻译词条
2026-03-13 11:12:37 +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
Wesley Liddick
fd693dc526
Merge pull request #967 from StarryKira/fix/admin-reset-quota-monthly
...
fix: 管理员重置配额补全 monthly 字段并修复 ristretto 缓存异步问题 fix issue #964
2026-03-13 11:10:47 +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
Rose Ding
53ad1645cf
feat: 数据库定时备份与恢复(S3 兼容存储,支持 Cloudflare R2)
...
新增管理员专属的数据库备份与恢复功能:
- 全量 PostgreSQL 备份(pg_dump),gzip 压缩后上传到 S3 兼容存储
- 支持手动备份和 cron 定时备份
- 支持从备份恢复(psql --single-transaction)
- 备份文件自动过期清理(默认 14 天)
- 前端完整管理页面(S3 配置、定时配置、备份列表、恢复/下载/删除)
- 内置 Cloudflare R2 配置教程弹窗
- Dockerfile 从 postgres 镜像多阶段复制 pg_dump/psql,确保版本一致
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 10:38:19 +08:00
Wesley Liddick
ecea13757b
Merge pull request #955 from DaydreamCoding/feat/gpt-training-off
...
feat: GPT Private设置数据不用于训练
2026-03-13 09:12:33 +08:00
Peter
af9c4a7dd0
feat(ops): make openai token stats optional
2026-03-13 04:11:58 +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
addefe79e1
fix: align docker health checks with runtime image
2026-03-12 17:03:21 +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
v0.1.96
2026-03-12 13:51:46 +08:00
Wesley Liddick
7399de6ecc
Merge pull request #938 from xvhuan/fix/account-extra-scheduler-pressure-20260311
...
精准收紧 accounts.extra 观测字段触发的调度重建
2026-03-12 13:51:00 +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
1f8e1142a0
Merge pull request #932 from 0xObjc/codex/usage-view-charts
...
feat(admin): add metric toggle to usage charts
2026-03-12 09:32:40 +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
John Doe
6826149a8f
feat: add Backend Mode toggle to disable user self-service
...
Add a system-wide "Backend Mode" that disables user self-registration
and self-service while keeping admin panel and API gateway fully
functional. When enabled, only admin can log in; all user-facing
routes return 403.
Backend:
- New setting key `backend_mode_enabled` with atomic cached reads (60s TTL)
- BackendModeUserGuard middleware blocks non-admin authenticated routes
- BackendModeAuthGuard middleware blocks registration/password-reset auth routes
- Login/Login2FA/RefreshToken handlers reject non-admin when enabled
- TokenPairWithUser struct for role-aware token refresh
- 20 unit tests (middleware + service layer)
Frontend:
- Router guards redirect unauthenticated users to /login
- Admin toggle in Settings page
- Login page hides register link and footer in backend mode
- 9 unit tests for router guard logic
- i18n support (en/zh)
27 files changed, 833 insertions(+), 17 deletions(-)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 02:42:57 +03: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