两个独立功能: 1. Relay Capture:对开启 capture_relay 的用户记录完整请求/响应到本地文件 - 单 writer goroutine + 128 槽 channel 架构,无 OOM 风险 - 支持流式 SSE 和非流式请求 - 30s 超时保护 2. User-Model RPM Rate Limiting:按 用户+模型 维度的 RPM 限流 - Redis 令牌桶 + 内存滑动窗口双路径,Redis 故障自动降级 - 请求失败时退还令牌/配额(Redis Refund Lua 脚本 + 内存 Refund) - Redis pipeline 错误处理:失败时清理缓存 key - 前端用户编辑弹窗新增模型限流配置面板 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
同步用户(synced)的实际余额存储在 synced_quota 字段, 但用户列表/详情接口返回的是 quota 字段(值为 0)。 新增 ApplySyncedQuota 方法,在 API 返回前将 synced_quota 赋值给 quota,使前端能正确显示余额。 同时优化 GetUserModels:map 去重替代 O(n) 线性扫描, 禁用模型查询移至 model 层,新增 StringsSubtract 工具函数。 Co-Authored-By: Claude <noreply@anthropic.com>
实现 Master-Slave 架构的跨区域用户和配额同步功能,支持国内主节点与 海外从节点之间的用户创建推送、余额同步、预扣费批量回传。 主要变更: - 新增 region_sync 服务层(SyncManager/SyncClient/推送逻辑) - User 模型扩展 Source/RemoteUserId/SyncedQuota/LastSyncAt 字段 - BillingSession 支持 SyncedUserFunding 资金来源 - 新增 SyncAuth 中间件(X-Sync-API-Key + 常量时间比较) - 新增 PendingSyncRecord/QuotaSyncLog 数据模型 - 前端新增区域同步配置面板 - 支持 SESSION_NAME 环境变量避免多节点 cookie 冲突 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>