- 18 Mar, 2026 1 commit
-
-
jimmy-coder authored
-
- 14 Mar, 2026 35 commits
-
-
shaw authored
后端默认 alert.enabled=true 但 recipients 为空,前端验证将其视为 错误并阻断保存按钮。移除该阻断性验证,改为保存时自动禁用无收件人 的邮件通知配置。
-
shaw authored
将独立的 /admin/backup 和 /admin/data-management 页面整合到设置页, 作为「备份」和「Sora 存储」标签页,减少侧边栏条目,集中管理配置。 - 移除 BackupView 和 DataManagementView 的 AppLayout 包装 - 在 SettingsView 中以子组件形式嵌入,使用 v-show 切换标签 - 删除独立路由和侧边栏菜单入口 - 备份/数据标签页下隐藏主保存按钮(各自有独立保存) - 优化标签栏样式适配7个标签,PC端支持细滚动条 - 清理未使用的图标组件和 i18n 键
-
Wesley Liddick authored
fix: handle invalid encrypted content error and retry logic.
-
Wesley Liddick authored
fix(ops): tune aggregation constants to prevent PG overload
-
shaw authored
-
Wesley Liddick authored
feat: 数据库定时备份与恢复(S3 兼容存储,支持 Cloudflare R2)
-
erio authored
Increase MAX(bucket_start) query timeout from 3s to 5s to reduce timeout-induced fallbacks. Shrink backfill window from 30 days to 1 hour so that fallback recomputation stays lightweight instead of scanning the entire retention range.
-
InCerry authored
-
Wesley Liddick authored
feat: add Backend Mode toggle to disable user self-service
-
Wesley Liddick authored
feat: 账号配额支持固定时间重置模式
-
Rose Ding authored
1. S3 凭证加密存储:使用 SecretEncryptor (AES-256-GCM) 加密 SecretAccessKey, 防止备份文件中泄露 S3 凭证,兼容旧的未加密数据 2. 修复 saveRecord 竞态条件:添加 recordsMu 互斥锁保护 records 的 load/save 3. 恢复操作增加服务端验证:handler 层要求重新输入管理员密码,通过 bcrypt 校验,前端弹出密码输入框 4. pg_dump/psql/S3 操作抽象为接口:定义 DBDumper 和 BackupObjectStore 接口, 实现放入 repository 层,遵循项目依赖注入架构规范 5. 改为流式处理避免大数据库 OOM:备份时 pg_dump stdout -> gzip -> io.Pipe -> S3 upload;恢复时 S3 download -> gzip reader -> psql stdin,不再全量加载 6. loadRecords 区分"无数据"和"数据损坏"场景:JSON 解析失败返回明确错误 7. 添加 18 个核心逻辑单元测试:覆盖加密、并发、流式备份/恢复、错误处理等 Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Wesley Liddick authored
refactor: merge bedrock-apikey into unified bedrock channel with auth_mode
-
wucm667 authored
-
SsageParuders authored
-
Wesley Liddick authored
feat(antigravity): add 403 forbidden status detection and display
-
Wesley Liddick authored
feat(ops): make OpenAI token stats optional
-
SsageParuders authored
Consolidate two separate channel types (bedrock + bedrock-apikey) into a single "AWS Bedrock" channel. Authentication mode is now distinguished by credentials.auth_mode ("sigv4" | "apikey") instead of separate types. Backend: - Remove AccountTypeBedrockAPIKey constant - IsBedrock() simplified; IsBedrockAPIKey() checks auth_mode - Add IsAPIKeyOrBedrock() helper to eliminate repeated type checks - Extend pool mode, quota scheduling, and billing to bedrock - Add RetryableOnSameAccount to handleBedrockUpstreamErrors - Add "bedrock" scope to Beta Policy for independent control Frontend: - Merge two buttons into one "AWS Bedrock" with auth mode radio - Badge displays "Anthropic | AWS" - Pool mode and quota limit UI available for bedrock - Quota display in account list (usage bars, capacity badges, reset) - Remove all bedrock-apikey type references -
Wesley Liddick authored
fix: 止血 Codex/Responses 原生 input id 被误改成 fc_*
-
ius authored
-
Wesley Liddick authored
fix: chat compatibility model fallback and reasoning_content output
-
Wesley Liddick authored
fix: respect OpenAI OAuth model mapping in admin available models
-
Wesley Liddick authored
fix: honor account model mapping before group fallback
-
Ethan0x0000 authored
-
InCerry authored
# Conflicts: # backend/internal/service/openai_gateway_service.go
-
Wang Lvyuan authored
-
Wang Lvyuan authored
-
Wesley Liddick authored
fix: sync scheduler snapshot on account updates
-
shaw authored
-
Wesley Liddick authored
docs: add iframe integration feature and ecosystem projects section
-
Wang Lvyuan authored
-
Wang Lvyuan authored
-
Ethan0x0000 authored
- 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
-
InCerry authored
-
Wesley Liddick authored
sub2api: add bedrock support
-
Wang Lvyuan authored
-
- 13 Mar, 2026 4 commits
-
-
erio authored
-
erio authored
The 403 detection PR changed the 401 handler condition from `account.Type == AccountTypeOAuth` to `account.Type == AccountTypeOAuth && account.Platform == PlatformOpenAI`, which accidentally excluded Gemini OAuth from the temp-unschedulable path. Fix: use `!= PlatformAntigravity` instead, preserving Gemini behavior while correctly excluding Antigravity (whose 401 is handled by applyErrorPolicy's temp_unschedulable_rules). Update tests to reflect Antigravity's new 401 semantics: - HandleUpstreamError: Antigravity OAuth 401 now uses SetError - CheckErrorPolicy: Antigravity 401 second hit stays TempUnscheduled - DB fallback: split into Gemini (escalates) and Antigravity (stays temp)
-
Wesley Liddick authored
feat(admin): add user spending ranking dashboard view
-
Wesley Liddick authored
fix: remove SSE termination marker from DefaultStopSequences
-