| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724 |
- package service
- import (
- "fmt"
- "github.com/Wei-Shaw/sub2api/internal/domain"
- )
- // Status constants
- const (
- StatusActive = domain.StatusActive
- StatusDisabled = domain.StatusDisabled
- StatusError = domain.StatusError
- StatusUnused = domain.StatusUnused
- StatusUsed = domain.StatusUsed
- StatusExpired = domain.StatusExpired
- )
- // Role constants
- const (
- RoleAdmin = domain.RoleAdmin
- RoleSuperAdmin = domain.RoleSuperAdmin
- RoleUser = domain.RoleUser
- )
- // Affiliate rebate settings
- const (
- AffiliateRebateRateDefault = 20.0
- AffiliateRebateRateMin = 0.0
- AffiliateRebateRateMax = 100.0
- AffiliateEnabledDefault = false // 邀请返利总开关默认关闭
- AffiliateRebateFreezeHoursDefault = 0 // 0 = 不冻结(向后兼容)
- AffiliateRebateFreezeHoursMax = 720 // 最大 30 天
- AffiliateRebateDurationDaysDefault = 0 // 0 = 永久有效
- AffiliateRebateDurationDaysMax = 3650 // ~10 年
- AffiliateRebatePerInviteeCapDefault = 0.0 // 0 = 无上限
- AdminRechargeRebateEnabledDefault = false // 管理员充值默认不产生返利
- )
- // Platform constants
- const (
- PlatformAnthropic = domain.PlatformAnthropic
- PlatformOpenAI = domain.PlatformOpenAI
- PlatformGemini = domain.PlatformGemini
- PlatformAntigravity = domain.PlatformAntigravity
- PlatformGrok = domain.PlatformGrok
- // 国产 OpenAI 兼容供应商(与 grok 一样经 OpenAI 网关转发)。
- PlatformKimi = domain.PlatformKimi
- PlatformZhipu = domain.PlatformZhipu
- PlatformDeepseek = domain.PlatformDeepseek
- PlatformMiniMax = domain.PlatformMiniMax
- PlatformComposite = domain.PlatformComposite
- // PlatformKiro is retained for unsupported-platform threshold tests and legacy
- // account rows. Scheduling-threshold evaluation never pauses kiro accounts.
- PlatformKiro = "kiro"
- )
- // 账号接入模式(国产供应商):按量付费 vs Coding Plan。
- const (
- AccountModePayG = domain.AccountModePayG
- AccountModeCoding = domain.AccountModeCoding
- )
- // 上游 API 协议(国产供应商):决定转发端点与格式,与接入模式正交。
- const (
- APIProtocolChatCompletions = domain.APIProtocolChatCompletions
- APIProtocolAnthropic = domain.APIProtocolAnthropic
- APIProtocolResponses = domain.APIProtocolResponses
- APIProtocolAdaptive = domain.APIProtocolAdaptive
- )
- // 国产 OpenAI 兼容供应商各模式的默认 base_url。
- // 与前端 credentialsBuilder.ts 中的预设保持一致。
- const (
- DefaultKimiPayGBaseURL = "https://api.moonshot.cn/v1"
- DefaultKimiCodingBaseURL = "https://api.kimi.com/coding/v1"
- DefaultZhipuPayGBaseURL = "https://open.bigmodel.cn/api/paas/v4"
- DefaultZhipuCodingBaseURL = "https://open.bigmodel.cn/api/coding/paas/v4"
- DefaultDeepseekBaseURL = "https://api.deepseek.com"
- // MiniMax 按量付费与 Coding/Token Plan 共用推理域名,靠 API Key 区分套餐。
- DefaultMiniMaxBaseURL = "https://api.minimaxi.com/v1"
- )
- // 国产供应商 Anthropic 协议端点的默认 base_url(上游路径为 {base}/v1/messages)。
- // 与前端 credentialsBuilder.ts 中的预设保持一致。
- const (
- DefaultKimiPayGAnthropicBaseURL = "https://api.moonshot.cn/anthropic"
- DefaultKimiCodingAnthropicBaseURL = "https://api.kimi.com/coding"
- DefaultZhipuAnthropicBaseURL = "https://open.bigmodel.cn/api/anthropic"
- DefaultDeepseekAnthropicBaseURL = "https://api.deepseek.com/anthropic"
- DefaultMiniMaxAnthropicBaseURL = "https://api.minimaxi.com/anthropic"
- )
- // IsCNProvider 报告 platform 是否为国产 OpenAI 兼容供应商(kimi/zhipu/deepseek/minimax)。
- func IsCNProvider(platform string) bool {
- switch platform {
- case PlatformKimi, PlatformZhipu, PlatformDeepseek, PlatformMiniMax:
- return true
- default:
- return false
- }
- }
- // AllowedQuotaPlatforms 是允许设置 user × platform quota 的平台列表(单一权威来源)。
- // ent/schema/user_platform_quota.go 的 Validate 函数独立维护(构建期约束),
- // 若新增平台需同步修改该 schema。
- var AllowedQuotaPlatforms = []string{
- PlatformAnthropic,
- PlatformOpenAI,
- PlatformGemini,
- PlatformAntigravity,
- PlatformGrok,
- PlatformKimi,
- PlatformZhipu,
- PlatformDeepseek,
- PlatformMiniMax,
- }
- // AllowedSchedulingThresholdPlatforms 是允许设置账号自动停调阈值的平台列表。
- // openai/anthropic/grok 有原生用量窗口;kimi/zhipu/minimax 的 Coding Plan 同样暴露
- // 5h/weekly 滚动窗口,纳入阈值评估。deepseek 为余额型,走余额检测而非阈值。
- var AllowedSchedulingThresholdPlatforms = []string{
- PlatformOpenAI,
- PlatformAnthropic,
- PlatformGrok,
- PlatformKimi,
- PlatformZhipu,
- PlatformMiniMax,
- }
- // IsAllowedQuotaPlatform 报告 s 是否为合法的 quota platform 标识。
- func IsAllowedQuotaPlatform(s string) bool {
- for _, p := range AllowedQuotaPlatforms {
- if p == s {
- return true
- }
- }
- return false
- }
- // Account type constants
- const (
- AccountTypeOAuth = domain.AccountTypeOAuth // OAuth类型账号(full scope: profile + inference)
- AccountTypeSetupToken = domain.AccountTypeSetupToken // Setup Token类型账号(inference only scope)
- AccountTypeAPIKey = domain.AccountTypeAPIKey // API Key类型账号
- AccountTypeUpstream = domain.AccountTypeUpstream // 上游透传类型账号(通过 Base URL + API Key 连接上游)
- AccountTypeBedrock = domain.AccountTypeBedrock // AWS Bedrock 类型账号(通过 SigV4 签名或 API Key 连接 Bedrock,由 credentials.auth_mode 区分)
- AccountTypeServiceAccount = domain.AccountTypeServiceAccount // Google Service Account 类型账号(用于 Vertex AI)
- )
- // Redeem type constants
- const (
- RedeemTypeBalance = domain.RedeemTypeBalance
- RedeemTypeConcurrency = domain.RedeemTypeConcurrency
- RedeemTypeSubscription = domain.RedeemTypeSubscription
- RedeemTypeInvitation = domain.RedeemTypeInvitation
- RedeemTypeAffiliateBalance = "affiliate_balance"
- )
- // PromoCode status constants
- const (
- PromoCodeStatusActive = domain.PromoCodeStatusActive
- PromoCodeStatusDisabled = domain.PromoCodeStatusDisabled
- )
- // Admin adjustment type constants
- const (
- AdjustmentTypeAdminBalance = domain.AdjustmentTypeAdminBalance // 管理员调整余额
- AdjustmentTypeAdminConcurrency = domain.AdjustmentTypeAdminConcurrency // 管理员调整并发数
- )
- // Group subscription type constants
- const (
- SubscriptionTypeStandard = domain.SubscriptionTypeStandard // 标准计费模式(按余额扣费)
- SubscriptionTypeSubscription = domain.SubscriptionTypeSubscription // 订阅模式(按限额控制)
- )
- // Subscription status constants
- const (
- SubscriptionStatusActive = domain.SubscriptionStatusActive
- SubscriptionStatusExpired = domain.SubscriptionStatusExpired
- SubscriptionStatusSuspended = domain.SubscriptionStatusSuspended
- // SubscriptionStatusRevoked 是 soft-deleted 订阅的 API 展示态,不写入 status 字段。
- SubscriptionStatusRevoked = "revoked"
- )
- // LinuxDoConnectSyntheticEmailDomain 是 LinuxDo Connect 用户的合成邮箱后缀(RFC 保留域名)。
- const LinuxDoConnectSyntheticEmailDomain = "@linuxdo-connect.invalid"
- // OIDCConnectSyntheticEmailDomain 是 OIDC 用户的合成邮箱后缀(RFC 保留域名)。
- const OIDCConnectSyntheticEmailDomain = "@oidc-connect.invalid"
- // WeChatConnectSyntheticEmailDomain 是 WeChat Connect 用户的合成邮箱后缀(RFC 保留域名)。
- const WeChatConnectSyntheticEmailDomain = "@wechat-connect.invalid"
- // DingTalkConnectSyntheticEmailDomain 是 DingTalk Connect 用户的合成邮箱后缀(RFC 保留域名)。
- const DingTalkConnectSyntheticEmailDomain = "@dingtalk-connect.invalid"
- // Setting keys
- const (
- // 注册设置
- SettingKeyRegistrationEnabled = "registration_enabled" // 是否开放注册
- SettingKeyEmailVerifyEnabled = "email_verify_enabled" // 是否开启邮件验证
- SettingKeyRegistrationEmailSuffixWhitelist = "registration_email_suffix_whitelist" // 注册邮箱后缀白名单(JSON 数组)
- // 白名单非空时,是否放行非白名单域名按主域名限量注册(每域名 1 个账户)。
- // 默认 false:非白名单域名直接拒绝(白名单严格模式)。
- SettingKeyRegistrationEmailDomainQuotaEnabled = "registration_email_domain_quota_enabled"
- SettingKeyPromoCodeEnabled = "promo_code_enabled" // 是否启用优惠码功能
- SettingKeyPasswordResetEnabled = "password_reset_enabled" // 是否启用忘记密码功能(需要先开启邮件验证)
- SettingKeyFrontendURL = "frontend_url" // 前端基础URL,用于生成邮件中的重置密码链接
- SettingKeyInvitationCodeEnabled = "invitation_code_enabled" // 是否启用邀请码注册
- SettingKeyAffiliateEnabled = "affiliate_enabled" // 邀请返利功能总开关
- SettingKeyAffiliateRebateRate = "affiliate_rebate_rate" // 邀请返利比例(百分比,0-100)
- SettingKeyAffiliateRebateFreezeHours = "affiliate_rebate_freeze_hours" // 返利冻结期(小时,0=不冻结)
- SettingKeyAffiliateRebateDurationDays = "affiliate_rebate_duration_days" // 返利有效期(天,0=永久)
- SettingKeyAffiliateRebatePerInviteeCap = "affiliate_rebate_per_invitee_cap" // 单人返利上限(0=无上限)
- SettingKeyAffiliateAdminRechargeEnabled = "affiliate_admin_recharge_enabled" // 管理员充值是否产生返利
- SettingKeyRiskControlEnabled = "risk_control_enabled" // 是否启用风控中心入口与审计链路
- SettingKeyContentModerationConfig = "content_moderation_config" // 内容审计配置(JSON)
- SettingKeyCyberSessionBlockEnabled = "cyber_session_block_enabled" // cyber 命中后会话级自动屏蔽总开关(默认关)
- SettingKeyCyberSessionBlockTTLSeconds = "cyber_session_block_ttl_seconds" // 会话屏蔽 TTL 秒数(默认 3600)
- SettingKeyLoginAgreementEnabled = "login_agreement_enabled" // 登录前是否要求同意条款
- SettingKeyLoginAgreementMode = "login_agreement_mode" // 条款确认展示模式:modal / checkbox
- SettingKeyLoginAgreementUpdatedAt = "login_agreement_updated_at" // 条款更新日期(展示用)
- SettingKeyLoginAgreementDocuments = "login_agreement_documents" // 条款文档列表(JSON,Markdown 内容)
- // 邮件服务设置
- SettingKeySMTPHost = "smtp_host" // SMTP服务器地址
- SettingKeySMTPPort = "smtp_port" // SMTP端口
- SettingKeySMTPUsername = "smtp_username" // SMTP用户名
- SettingKeySMTPPassword = "smtp_password" // SMTP密码(加密存储)
- SettingKeySMTPFrom = "smtp_from" // 发件人地址
- SettingKeySMTPFromName = "smtp_from_name" // 发件人名称
- SettingKeySMTPUseTLS = "smtp_use_tls" // 是否使用TLS
- // Cloudflare Turnstile 设置
- SettingKeyTurnstileEnabled = "turnstile_enabled" // 是否启用 Turnstile 验证
- SettingKeyTurnstileSiteKey = "turnstile_site_key" // Turnstile Site Key
- SettingKeyTurnstileSecretKey = "turnstile_secret_key" // Turnstile Secret Key
- // 腾讯天御验证码设置
- SettingKeyTencentCaptchaEnabled = "tencent_captcha_enabled"
- SettingKeyTencentCaptchaAppID = "tencent_captcha_app_id"
- SettingKeyTencentCaptchaAppSecretKey = "tencent_captcha_app_secret_key"
- SettingKeyTencentCaptchaCloudSecretID = "tencent_captcha_cloud_secret_id"
- SettingKeyTencentCaptchaCloudSecretKey = "tencent_captcha_cloud_secret_key"
- SettingKeyTencentCaptchaRegion = "tencent_captcha_region" // 站点:"cn"|"intl",决定前端 SDK 脚本与服务端接入点
- // 阿里云验证码 2.0 设置(与 Turnstile、腾讯天御互斥,同一时间仅可启用一家)
- SettingKeyAliyunCaptchaEnabled = "aliyun_captcha_enabled" // 是否启用阿里云验证码
- SettingKeyAliyunCaptchaAccessKeyID = "aliyun_captcha_access_key_id" // 阿里云 AccessKey ID
- SettingKeyAliyunCaptchaAccessKeySecret = "aliyun_captcha_access_key_secret" // 阿里云 AccessKey Secret
- SettingKeyAliyunCaptchaSceneID = "aliyun_captcha_scene_id" // 验证场景 ID(所有认证流程共用)
- SettingKeyAliyunCaptchaPrefix = "aliyun_captcha_prefix" // 身份标,前端 SDK 初始化用
- SettingKeyAliyunCaptchaRegion = "aliyun_captcha_region" // 地域:"cn"|"sgp",决定前端脚本区域与服务端接入点
- // API Key IP 访问控制设置
- SettingKeyAPIKeyACLTrustForwardedIP = "api_key_acl_trust_forwarded_ip" // API Key IP 白/黑名单是否信任转发 IP
- SettingKeyForwardedClientIPHeaders = "forwarded_client_ip_headers" // 自定义 CDN 客户端 IP 请求头(JSON 数组)
- settingKeyForwardedClientIPModeV2 = "forwarded_client_ip_mode_v2_migrated"
- // TOTP 双因素认证设置
- SettingKeyTotpEnabled = "totp_enabled" // 是否启用 TOTP 2FA 功能
- SettingKeyPasskeyEnabled = "passkey_enabled" // 是否启用 Passkey 登录(仍要求有效的 WebAuthn 部署配置)
- // 会话安全设置
- SettingKeySessionBindingEnabled = "session_binding_enabled" // 会话 IP/UA 绑定(变更即失效),默认关闭
- // 敏感操作 step-up 2FA 设置
- SettingKeyStepUpEnabled = "step_up_enabled" // 敏感操作(导出/备份/S3配置/提升管理员等)要求 step-up 2FA,默认关闭
- // 面板 API 限流设置(JSON:PanelRateLimitSettings)
- SettingKeyPanelRateLimitSettings = "panel_rate_limit_settings"
- // 操作审计日志设置
- SettingKeyAuditLogRetentionDays = "audit_log_retention_days" // 审计日志保留天数(<=0 永久保留),默认 180
- // LinuxDo Connect OAuth 登录设置
- SettingKeyLinuxDoConnectEnabled = "linuxdo_connect_enabled"
- SettingKeyLinuxDoConnectClientID = "linuxdo_connect_client_id"
- SettingKeyLinuxDoConnectClientSecret = "linuxdo_connect_client_secret"
- SettingKeyLinuxDoConnectRedirectURL = "linuxdo_connect_redirect_url"
- // DingTalk Connect OAuth 登录设置
- SettingKeyDingTalkConnectEnabled = "dingtalk_connect_enabled"
- SettingKeyDingTalkConnectClientID = "dingtalk_connect_client_id"
- SettingKeyDingTalkConnectClientSecret = "dingtalk_connect_client_secret"
- SettingKeyDingTalkConnectRedirectURL = "dingtalk_connect_redirect_url"
- SettingKeyDingTalkConnectCorpRestrictionPolicy = "dingtalk_connect_corp_restriction_policy"
- SettingKeyDingTalkConnectInternalCorpID = "dingtalk_connect_internal_corp_id"
- SettingKeyDingTalkConnectBypassRegistration = "dingtalk_connect_bypass_registration"
- SettingKeyDingTalkConnectSyncCorpEmail = "dingtalk_connect_sync_corp_email"
- SettingKeyDingTalkConnectSyncDisplayName = "dingtalk_connect_sync_display_name"
- SettingKeyDingTalkConnectSyncDept = "dingtalk_connect_sync_dept"
- SettingKeyDingTalkConnectSyncCorpEmailAttrKey = "dingtalk_connect_sync_corp_email_attr_key"
- SettingKeyDingTalkConnectSyncDisplayNameAttrKey = "dingtalk_connect_sync_display_name_attr_key"
- SettingKeyDingTalkConnectSyncDeptAttrKey = "dingtalk_connect_sync_dept_attr_key"
- SettingKeyDingTalkConnectSyncCorpEmailAttrName = "dingtalk_connect_sync_corp_email_attr_name"
- SettingKeyDingTalkConnectSyncDisplayNameAttrName = "dingtalk_connect_sync_display_name_attr_name"
- SettingKeyDingTalkConnectSyncDeptAttrName = "dingtalk_connect_sync_dept_attr_name"
- // WeChat Connect OAuth 登录设置
- SettingKeyWeChatConnectEnabled = "wechat_connect_enabled"
- SettingKeyWeChatConnectAppID = "wechat_connect_app_id"
- SettingKeyWeChatConnectAppSecret = "wechat_connect_app_secret"
- SettingKeyWeChatConnectOpenAppID = "wechat_connect_open_app_id"
- SettingKeyWeChatConnectOpenAppSecret = "wechat_connect_open_app_secret"
- SettingKeyWeChatConnectMPAppID = "wechat_connect_mp_app_id"
- SettingKeyWeChatConnectMPAppSecret = "wechat_connect_mp_app_secret"
- SettingKeyWeChatConnectMobileAppID = "wechat_connect_mobile_app_id"
- SettingKeyWeChatConnectMobileAppSecret = "wechat_connect_mobile_app_secret"
- SettingKeyWeChatConnectOpenEnabled = "wechat_connect_open_enabled"
- SettingKeyWeChatConnectMPEnabled = "wechat_connect_mp_enabled"
- SettingKeyWeChatConnectMobileEnabled = "wechat_connect_mobile_enabled"
- SettingKeyWeChatConnectMode = "wechat_connect_mode"
- SettingKeyWeChatConnectScopes = "wechat_connect_scopes"
- SettingKeyWeChatConnectRedirectURL = "wechat_connect_redirect_url"
- SettingKeyWeChatConnectFrontendRedirectURL = "wechat_connect_frontend_redirect_url"
- // Generic OIDC OAuth 登录设置
- SettingKeyOIDCConnectEnabled = "oidc_connect_enabled"
- SettingKeyOIDCConnectProviderName = "oidc_connect_provider_name"
- SettingKeyOIDCConnectClientID = "oidc_connect_client_id"
- SettingKeyOIDCConnectClientSecret = "oidc_connect_client_secret"
- SettingKeyOIDCConnectIssuerURL = "oidc_connect_issuer_url"
- SettingKeyOIDCConnectDiscoveryURL = "oidc_connect_discovery_url"
- SettingKeyOIDCConnectAuthorizeURL = "oidc_connect_authorize_url"
- SettingKeyOIDCConnectTokenURL = "oidc_connect_token_url"
- SettingKeyOIDCConnectUserInfoURL = "oidc_connect_userinfo_url"
- SettingKeyOIDCConnectJWKSURL = "oidc_connect_jwks_url"
- SettingKeyOIDCConnectScopes = "oidc_connect_scopes"
- SettingKeyOIDCConnectRedirectURL = "oidc_connect_redirect_url"
- SettingKeyOIDCConnectFrontendRedirectURL = "oidc_connect_frontend_redirect_url"
- SettingKeyOIDCConnectTokenAuthMethod = "oidc_connect_token_auth_method"
- SettingKeyOIDCConnectUsePKCE = "oidc_connect_use_pkce"
- SettingKeyOIDCConnectValidateIDToken = "oidc_connect_validate_id_token"
- SettingKeyOIDCConnectAllowedSigningAlgs = "oidc_connect_allowed_signing_algs"
- SettingKeyOIDCConnectClockSkewSeconds = "oidc_connect_clock_skew_seconds"
- SettingKeyOIDCConnectRequireEmailVerified = "oidc_connect_require_email_verified"
- SettingKeyOIDCConnectUserInfoEmailPath = "oidc_connect_userinfo_email_path"
- SettingKeyOIDCConnectUserInfoIDPath = "oidc_connect_userinfo_id_path"
- SettingKeyOIDCConnectUserInfoUsernamePath = "oidc_connect_userinfo_username_path"
- // GitHub / Google 邮箱快捷登录设置
- SettingKeyGitHubOAuthEnabled = "github_oauth_enabled"
- SettingKeyGitHubOAuthClientID = "github_oauth_client_id"
- SettingKeyGitHubOAuthClientSecret = "github_oauth_client_secret"
- SettingKeyGitHubOAuthRedirectURL = "github_oauth_redirect_url"
- SettingKeyGitHubOAuthFrontendRedirectURL = "github_oauth_frontend_redirect_url"
- SettingKeyGoogleOAuthEnabled = "google_oauth_enabled"
- SettingKeyGoogleOAuthClientID = "google_oauth_client_id"
- SettingKeyGoogleOAuthClientSecret = "google_oauth_client_secret"
- SettingKeyGoogleOAuthRedirectURL = "google_oauth_redirect_url"
- SettingKeyGoogleOAuthFrontendRedirectURL = "google_oauth_frontend_redirect_url"
- // OEM设置
- SettingKeySiteName = "site_name" // 网站名称
- SettingKeySiteLogo = "site_logo" // 网站Logo (base64)
- SettingKeySiteSubtitle = "site_subtitle" // 网站副标题
- SettingKeyAPIBaseURL = "api_base_url" // API端点地址(用于客户端配置和导入)
- SettingKeyContactInfo = "contact_info" // 客服联系方式
- SettingKeyDocURL = "doc_url" // 文档链接
- SettingKeyHomeContent = "home_content" // 首页内容(支持 Markdown/HTML,或 URL 作为 iframe src)
- SettingKeyCompactHomeEnabled = "compact_home_enabled" // 是否启用内置简洁首页
- SettingKeyHideCcsImportButton = "hide_ccs_import_button" // 是否隐藏 API Keys 页面的导入 CCS 按钮
- SettingKeyPurchaseSubscriptionEnabled = "purchase_subscription_enabled" // 是否展示"购买订阅"页面入口
- SettingKeyPurchaseSubscriptionURL = "purchase_subscription_url" // "购买订阅"页面 URL(作为 iframe src)
- SettingKeyTableDefaultPageSize = "table_default_page_size" // 表格默认每页条数
- SettingKeyTablePageSizeOptions = "table_page_size_options" // 表格可选每页条数(JSON 数组)
- SettingKeyCustomMenuItems = "custom_menu_items" // 自定义菜单项(JSON 数组)
- SettingKeyCustomEndpoints = "custom_endpoints" // 自定义端点列表(JSON 数组)
- // 默认配置
- SettingKeyDefaultConcurrency = "default_concurrency" // 新用户默认并发量
- SettingKeyDefaultBalance = "default_balance" // 新用户默认余额
- SettingKeyDefaultSubscriptions = "default_subscriptions" // 新用户默认订阅列表(JSON)
- SettingKeyDefaultUserRPMLimit = "default_user_rpm_limit" // 新用户默认 RPM 限制(0 = 不限制)
- // 第三方认证来源默认授予配置
- SettingKeyAuthSourceDefaultEmailBalance = "auth_source_default_email_balance"
- SettingKeyAuthSourceDefaultEmailConcurrency = "auth_source_default_email_concurrency"
- SettingKeyAuthSourceDefaultEmailSubscriptions = "auth_source_default_email_subscriptions"
- SettingKeyAuthSourceDefaultEmailGrantOnSignup = "auth_source_default_email_grant_on_signup"
- SettingKeyAuthSourceDefaultEmailGrantOnFirstBind = "auth_source_default_email_grant_on_first_bind"
- SettingKeyAuthSourceDefaultLinuxDoBalance = "auth_source_default_linuxdo_balance"
- SettingKeyAuthSourceDefaultLinuxDoConcurrency = "auth_source_default_linuxdo_concurrency"
- SettingKeyAuthSourceDefaultLinuxDoSubscriptions = "auth_source_default_linuxdo_subscriptions"
- SettingKeyAuthSourceDefaultLinuxDoGrantOnSignup = "auth_source_default_linuxdo_grant_on_signup"
- SettingKeyAuthSourceDefaultLinuxDoGrantOnFirstBind = "auth_source_default_linuxdo_grant_on_first_bind"
- SettingKeyAuthSourceDefaultOIDCBalance = "auth_source_default_oidc_balance"
- SettingKeyAuthSourceDefaultOIDCConcurrency = "auth_source_default_oidc_concurrency"
- SettingKeyAuthSourceDefaultOIDCSubscriptions = "auth_source_default_oidc_subscriptions"
- SettingKeyAuthSourceDefaultOIDCGrantOnSignup = "auth_source_default_oidc_grant_on_signup"
- SettingKeyAuthSourceDefaultOIDCGrantOnFirstBind = "auth_source_default_oidc_grant_on_first_bind"
- SettingKeyAuthSourceDefaultWeChatBalance = "auth_source_default_wechat_balance"
- SettingKeyAuthSourceDefaultWeChatConcurrency = "auth_source_default_wechat_concurrency"
- SettingKeyAuthSourceDefaultWeChatSubscriptions = "auth_source_default_wechat_subscriptions"
- SettingKeyAuthSourceDefaultWeChatGrantOnSignup = "auth_source_default_wechat_grant_on_signup"
- SettingKeyAuthSourceDefaultWeChatGrantOnFirstBind = "auth_source_default_wechat_grant_on_first_bind"
- SettingKeyAuthSourceDefaultGitHubBalance = "auth_source_default_github_balance"
- SettingKeyAuthSourceDefaultGitHubConcurrency = "auth_source_default_github_concurrency"
- SettingKeyAuthSourceDefaultGitHubSubscriptions = "auth_source_default_github_subscriptions"
- SettingKeyAuthSourceDefaultGitHubGrantOnSignup = "auth_source_default_github_grant_on_signup"
- SettingKeyAuthSourceDefaultGitHubGrantOnFirstBind = "auth_source_default_github_grant_on_first_bind"
- SettingKeyAuthSourceDefaultGoogleBalance = "auth_source_default_google_balance"
- SettingKeyAuthSourceDefaultGoogleConcurrency = "auth_source_default_google_concurrency"
- SettingKeyAuthSourceDefaultGoogleSubscriptions = "auth_source_default_google_subscriptions"
- SettingKeyAuthSourceDefaultGoogleGrantOnSignup = "auth_source_default_google_grant_on_signup"
- SettingKeyAuthSourceDefaultGoogleGrantOnFirstBind = "auth_source_default_google_grant_on_first_bind"
- SettingKeyAuthSourceDefaultDingTalkBalance = "auth_source_default_dingtalk_balance"
- SettingKeyAuthSourceDefaultDingTalkConcurrency = "auth_source_default_dingtalk_concurrency"
- SettingKeyAuthSourceDefaultDingTalkSubscriptions = "auth_source_default_dingtalk_subscriptions"
- SettingKeyAuthSourceDefaultDingTalkGrantOnSignup = "auth_source_default_dingtalk_grant_on_signup"
- SettingKeyAuthSourceDefaultDingTalkGrantOnFirstBind = "auth_source_default_dingtalk_grant_on_first_bind"
- SettingKeyForceEmailOnThirdPartySignup = "force_email_on_third_party_signup"
- // 管理员 API Key
- SettingKeyAdminAPIKey = "admin_api_key" // 全局管理员 API Key(用于外部系统集成)
- // Gemini 配额策略(JSON)
- SettingKeyGeminiQuotaPolicy = "gemini_quota_policy"
- // Model fallback settings
- SettingKeyEnableModelFallback = "enable_model_fallback"
- SettingKeyFallbackModelAnthropic = "fallback_model_anthropic"
- SettingKeyFallbackModelOpenAI = "fallback_model_openai"
- SettingKeyFallbackModelGemini = "fallback_model_gemini"
- SettingKeyFallbackModelAntigravity = "fallback_model_antigravity"
- // Request identity patch (Claude -> Gemini systemInstruction injection)
- SettingKeyEnableIdentityPatch = "enable_identity_patch"
- SettingKeyIdentityPatchPrompt = "identity_patch_prompt"
- // =========================
- // Ops Monitoring (vNext)
- // =========================
- // SettingKeyOpsMonitoringEnabled is a DB-backed soft switch to enable/disable ops module at runtime.
- SettingKeyOpsMonitoringEnabled = "ops_monitoring_enabled"
- // SettingKeyOpsRealtimeMonitoringEnabled controls realtime features (e.g. WS/QPS push).
- SettingKeyOpsRealtimeMonitoringEnabled = "ops_realtime_monitoring_enabled"
- // SettingKeyOpsQueryModeDefault controls the default query mode for ops dashboard (auto/raw/preagg).
- SettingKeyOpsQueryModeDefault = "ops_query_mode_default"
- // SettingKeyOpsEmailNotificationConfig stores JSON config for ops email notifications.
- SettingKeyOpsEmailNotificationConfig = "ops_email_notification_config"
- // SettingKeyOpsAlertRuntimeSettings stores JSON config for ops alert evaluator runtime settings.
- SettingKeyOpsAlertRuntimeSettings = "ops_alert_runtime_settings"
- // SettingKeyOpsMetricsIntervalSeconds controls the ops metrics collector interval (>=60).
- SettingKeyOpsMetricsIntervalSeconds = "ops_metrics_interval_seconds"
- // SettingKeyOpsAdvancedSettings stores JSON config for ops advanced settings (data retention, aggregation).
- SettingKeyOpsAdvancedSettings = "ops_advanced_settings"
- // SettingKeyOpsRuntimeLogConfig stores JSON config for runtime log settings.
- SettingKeyOpsRuntimeLogConfig = "ops_runtime_log_config"
- // =========================
- // Channel Monitor (渠道监控)
- // =========================
- // SettingKeyChannelMonitorEnabled is a DB-backed soft switch for the channel monitor feature.
- // When false: runner skips scheduling and user-facing endpoints return an empty list.
- SettingKeyChannelMonitorEnabled = "channel_monitor_enabled"
- // SettingKeyChannelMonitorMode selects exclusive implementation:
- // "v1" active probes, "v2" passive aggregation. Default "v1" (opt-in to v2).
- SettingKeyChannelMonitorMode = "channel_monitor_mode"
- // ChannelMonitorModeV1/V2 are the only accepted mode values.
- ChannelMonitorModeV1 = "v1"
- ChannelMonitorModeV2 = "v2"
- // SettingKeyChannelMonitorDefaultIntervalSeconds controls the default interval (seconds)
- // pre-filled when creating a new channel monitor from the admin UI. Range: [15, 3600].
- SettingKeyChannelMonitorDefaultIntervalSeconds = "channel_monitor_default_interval_seconds"
- // SettingKeyChannelMonitorHideThroughput hides RPM/TPM (and similar absolute
- // throughput rates) from non-admin user-facing monitor APIs and UI, so users
- // cannot reverse-estimate fleet volume from rates × window length.
- // Default false (show rates). Admin endpoints always keep full metrics.
- SettingKeyChannelMonitorHideThroughput = "channel_monitor_hide_throughput"
- // SettingKeyChannelMonitorShowQuota controls whether quota/balance snapshots
- // attached to channel monitors (check_mode=quota/quota_probe) are exposed on
- // the user-facing monitor APIs and UI. Default false (hidden); parsed
- // fail-closed (only the literal "true" enables it). Admin endpoints always
- // keep the full snapshots regardless of this flag.
- SettingKeyChannelMonitorShowQuota = "channel_monitor_show_quota"
- // SettingKeyChannelMonitorHideUserRanking hides the user ranking tab and
- // /users payload from non-admin channel-monitor v2 viewers.
- // Default false (keep the current ranking tab). Admin endpoints always keep it.
- SettingKeyChannelMonitorHideUserRanking = "channel_monitor_hide_user_ranking"
- // SettingKeyGrokDefaultTextModel is the fallback Grok text model for empty
- // request models and built-in Grok aliases (e.g. "grok" → this id). Default grok-4.5.
- SettingKeyGrokDefaultTextModel = "grok_default_text_model"
- // SettingKeyGrokCrossClientModelMapEnabled, when true, includes gpt-*/codex-*/o*/claude-*
- // wildcards in the default Grok account model_mapping so foreign client model names
- // can reach Grok groups. Default false (no silent cross-vendor rewrite).
- SettingKeyGrokCrossClientModelMapEnabled = "grok_cross_client_model_map_enabled"
- // SettingKeyGrokDefaultBaseURLMode controls the default text upstream for
- // Grok accounts without an explicit credentials.base_url.
- SettingKeyGrokDefaultBaseURLMode = "grok_default_base_url_mode"
- // SettingKeyAvailableChannelsEnabled is a DB-backed soft switch for the "Available Channels"
- // user-facing aggregate view. When false: user endpoint returns an empty list and the
- // sidebar entry is hidden. Defaults to false (opt-in feature).
- SettingKeyAvailableChannelsEnabled = "available_channels_enabled"
- // SettingKeyModelPlazaEnabled is a DB-backed soft switch for the Model Plaza page
- // (public group/model pricing showcase). When false: the plaza endpoint returns 404
- // and the header entry is hidden. Defaults to false (opt-in feature).
- SettingKeyModelPlazaEnabled = "model_plaza_enabled"
- // SettingKeyModelPlazaRequireAuth controls whether the Model Plaza page requires a
- // logged-in user. When false the page is public and anonymous visitors see only
- // non-exclusive groups.
- SettingKeyModelPlazaRequireAuth = "model_plaza_require_auth"
- // SettingKeyModelPlazaDescription stores the Markdown blurb rendered at the top of
- // the Model Plaza page (global pricing notes, exchange rate, promotions, ...).
- SettingKeyModelPlazaDescription = "model_plaza_description"
- // SettingKeyPluginManagementEnabled controls sidebar visibility only; it does
- // not stop or otherwise change already loaded plugin runtimes.
- SettingKeyPluginManagementEnabled = "plugin_management_enabled"
- // SettingKeyUpstreamBillingProbeSettings stores the global enable switch and interval
- // for probing remote Sub2API API-key billing metadata.
- SettingKeyUpstreamBillingProbeSettings = "upstream_billing_probe_settings"
- // SettingKeyOllamaCloudUsageSettings stores the opt-in global runner switch and interval.
- SettingKeyOllamaCloudUsageSettings = "ollama_cloud_usage_settings"
- // =========================
- // Overload Cooldown (529)
- // =========================
- // SettingKeyOverloadCooldownSettings stores JSON config for 529 overload cooldown handling.
- SettingKeyOverloadCooldownSettings = "overload_cooldown_settings"
- // SettingKeyRateLimit429CooldownSettings stores JSON config for 429 fallback cooldown handling.
- SettingKeyRateLimit429CooldownSettings = "rate_limit_429_cooldown_settings"
- // SettingKeyOpenAIImagesOAuthUnavailableCooldownSettings stores the cooldown applied when the OAuth image tool is unavailable.
- SettingKeyOpenAIImagesOAuthUnavailableCooldownSettings = "openai_images_oauth_unavailable_cooldown_settings"
- // SettingKeyOpenAIAPIKeyHealthBreakerSettings stores the opt-in OpenAI pool API-key breaker config.
- SettingKeyOpenAIAPIKeyHealthBreakerSettings = "openai_apikey_health_breaker_settings"
- // =========================
- // Stream Timeout Handling
- // =========================
- // SettingKeyStreamTimeoutSettings stores JSON config for stream timeout handling.
- SettingKeyStreamTimeoutSettings = "stream_timeout_settings"
- // =========================
- // Request Rectifier (请求整流器)
- // =========================
- // SettingKeyRectifierSettings stores JSON config for rectifier settings (thinking signature + budget).
- SettingKeyRectifierSettings = "rectifier_settings"
- // =========================
- // Beta Policy Settings
- // =========================
- // SettingKeyBetaPolicySettings stores JSON config for beta policy rules.
- SettingKeyBetaPolicySettings = "beta_policy_settings"
- // SettingKeyOpenAIFastPolicySettings stores JSON config for OpenAI
- // service_tier (fast/flex) policy rules. Mirrors BetaPolicySettings but
- // targets OpenAI's body-level service_tier field instead of Claude's
- // anthropic-beta header.
- SettingKeyOpenAIFastPolicySettings = "openai_fast_policy_settings"
- // =========================
- // Claude Code Version Check
- // =========================
- // SettingKeyMinClaudeCodeVersion 最低 Claude Code 版本号要求 (semver, 如 "2.1.0",空值=不检查)
- SettingKeyMinClaudeCodeVersion = "min_claude_code_version"
- // SettingKeyMinCodexVersion 最低 Codex 引擎版本要求 (semver, 如 "0.141.0",空值=不检查)
- SettingKeyMinCodexVersion = "min_codex_version"
- // SettingKeyMaxCodexVersion 最高 Codex 引擎版本限制 (semver, 如 "0.200.0",空值=不检查)
- SettingKeyMaxCodexVersion = "max_codex_version"
- // SettingKeyCodexCLIOnlyBlacklist codex_cli_only 全局黑名单([]AllowedClientEntry JSON,OR deny)。
- SettingKeyCodexCLIOnlyBlacklist = "codex_cli_only_blacklist"
- // SettingKeyCodexCLIOnlyWhitelist codex_cli_only 全局白名单([]AllowedClientEntry JSON,双因子 AND allow)。
- SettingKeyCodexCLIOnlyWhitelist = "codex_cli_only_whitelist"
- // SettingKeyCodexCLIOnlyAllowAppServerClients App Server 开关:对未列名客户端开闸(默认 false;仅显式 "true" 开)。
- SettingKeyCodexCLIOnlyAllowAppServerClients = "codex_cli_only_allow_app_server_clients"
- // SettingKeyCodexCLIOnlyAllowBodyEngineFingerprint 引擎门 body 通道开关:接受 client_metadata 引擎指纹(默认 false;仅显式 "true" 开)。(已废弃,迁移并入信号列表)
- SettingKeyCodexCLIOnlyAllowBodyEngineFingerprint = "codex_cli_only_allow_body_engine_fingerprint"
- // SettingKeyCodexCLIOnlyEngineFingerprintSignals codex_cli_only 引擎指纹门信号列表([]EngineFingerprintSignal JSON)。
- // 勾选(required)信号之间 AND;每条 match 变体行内 OR;缺失/空/非法 → 默认种子(只勾 x-codex-)。
- SettingKeyCodexCLIOnlyEngineFingerprintSignals = "codex_cli_only_engine_fingerprint_signals"
- // SettingKeyMaxClaudeCodeVersion 最高 Claude Code 版本号限制 (semver, 如 "3.0.0",空值=不检查)
- SettingKeyMaxClaudeCodeVersion = "max_claude_code_version"
- // SettingKeyAllowUngroupedKeyScheduling 允许未分组 API Key 调度(默认 false:未分组 Key 返回 403)
- SettingKeyAllowUngroupedKeyScheduling = "allow_ungrouped_key_scheduling"
- // SettingKeyOpenAILowUpstreamRatePriorityEnabled 旧调度是否按上游 token 倍率优先。
- SettingKeyOpenAILowUpstreamRatePriorityEnabled = "openai_low_upstream_rate_priority_enabled"
- // SettingKeyOpenAIOAuthSchedulingRateMultiplier OAuth 账号参与成本调度时使用的参考倍率。
- SettingKeyOpenAIOAuthSchedulingRateMultiplier = "openai_oauth_scheduling_rate_multiplier"
- // SettingKeyOpenAIAdvancedSchedulerStickyWeightedEnabled OpenAI 高级调度下是否启用粘性加权。
- SettingKeyOpenAIAdvancedSchedulerStickyWeightedEnabled = "openai_advanced_scheduler_sticky_weighted_enabled"
- // SettingKeyOpenAIAdvancedSchedulerSubscriptionPriorityEnabled OpenAI 高级调度下是否优先使用订阅账号池。
- SettingKeyOpenAIAdvancedSchedulerSubscriptionPriorityEnabled = "openai_advanced_scheduler_subscription_priority_enabled"
- SettingKeyOpenAIAdvancedSchedulerLBTopK = "openai_advanced_scheduler_lb_top_k"
- SettingKeyOpenAIAdvancedSchedulerWeightPriority = "openai_advanced_scheduler_weight_priority"
- SettingKeyOpenAIAdvancedSchedulerWeightLoad = "openai_advanced_scheduler_weight_load"
- SettingKeyOpenAIAdvancedSchedulerWeightQueue = "openai_advanced_scheduler_weight_queue"
- SettingKeyOpenAIAdvancedSchedulerWeightErrorRate = "openai_advanced_scheduler_weight_error_rate"
- SettingKeyOpenAIAdvancedSchedulerWeightTTFT = "openai_advanced_scheduler_weight_ttft"
- SettingKeyOpenAIAdvancedSchedulerWeightReset = "openai_advanced_scheduler_weight_reset"
- SettingKeyOpenAIAdvancedSchedulerWeightQuotaHeadroom = "openai_advanced_scheduler_weight_quota_headroom"
- SettingKeyOpenAIAdvancedSchedulerWeightUpstreamCost = "openai_advanced_scheduler_weight_upstream_cost"
- SettingKeyOpenAIAdvancedSchedulerWeightPreviousResponse = "openai_advanced_scheduler_weight_previous_response"
- SettingKeyOpenAIAdvancedSchedulerWeightSessionSticky = "openai_advanced_scheduler_weight_session_sticky"
- // SettingKeyBackendModeEnabled Backend 模式:禁用用户注册和自助服务,仅管理员可登录
- SettingKeyBackendModeEnabled = "backend_mode_enabled"
- // Gateway Forwarding Behavior
- // SettingKeyOpenAITTFTMode 控制 first_token_ms 的统计口径。
- SettingKeyOpenAITTFTMode = "openai_ttft_mode"
- OpenAITTFTModeSemantic = "semantic"
- OpenAITTFTModeVisible = "visible"
- // SettingKeyEnableFingerprintUnification 是否统一 OAuth 账号的 X-Stainless-* 指纹头(默认 true)
- SettingKeyEnableFingerprintUnification = "enable_fingerprint_unification"
- // SettingKeyEnableMetadataPassthrough 是否透传客户端原始 metadata.user_id(默认 false)
- SettingKeyEnableMetadataPassthrough = "enable_metadata_passthrough"
- // SettingKeyEnableCCHSigning 已废弃(no-op):新版 Claude Code CLI 已取消 cch 签名字段,
- // 网关随之不再注入/签名 cch(见 buildBillingAttributionText)。保留该 key 仅为向后兼容,
- // 开关不再产生任何效果。
- SettingKeyEnableCCHSigning = "enable_cch_signing"
- // SettingKeyEnableClaudeOAuthSystemPromptInjection 是否对 Claude OAuth mimic 路径注入 Claude Code system blocks(默认 true)
- SettingKeyEnableClaudeOAuthSystemPromptInjection = "enable_claude_oauth_system_prompt_injection"
- // SettingKeyClaudeOAuthSystemPrompt Claude OAuth mimic 路径注入的通用扩展 system prompt(空值使用内置默认)
- SettingKeyClaudeOAuthSystemPrompt = "claude_oauth_system_prompt"
- // SettingKeyClaudeOAuthSystemPromptBlocks Claude OAuth mimic 路径注入的 system blocks JSON 配置(空值使用内置默认)
- SettingKeyClaudeOAuthSystemPromptBlocks = "claude_oauth_system_prompt_blocks"
- // SettingKeyEnableAnthropicCacheTTL1hInjection 是否对 Anthropic OAuth/SetupToken 请求体注入 1h cache_control ttl(默认 false)
- SettingKeyEnableAnthropicCacheTTL1hInjection = "enable_anthropic_cache_ttl_1h_injection"
- // SettingKeyEnableClientDatelineNormalization 是否对 Anthropic OAuth/SetupToken 账号
- // 的 /v1/messages 请求体做客户端 dateline 归一化(默认 true)。
- // 归一化把 system prompt / <system-reminder> 块中 "Today's date is …" 语句里的
- // 非 ASCII 撇号与 "/" 日期分隔符还原为 ASCII 撇号 + "-" 分隔符,抹除某些客户端
- // 在检测到非官方 base URL 时注入的 3 bit 隐写指纹。仅适用于 Anthropic OAuth/SetupToken
- // 账号;API Key 账号不受影响。
- SettingKeyEnableClientDatelineNormalization = "enable_client_dateline_normalization"
- // SettingKeyRewriteMessageCacheControl 是否改写 messages[*].content[*].cache_control(默认 false)
- SettingKeyRewriteMessageCacheControl = "rewrite_message_cache_control"
- // SettingKeyAntigravityUserAgentVersion Antigravity 上游 User-Agent 版本号(空值使用环境变量/默认值)
- SettingKeyAntigravityUserAgentVersion = "antigravity_user_agent_version"
- // SettingKeyOpenAICodexUserAgent OpenAI Codex 完整 User-Agent(空值使用内置默认)
- // 当客户端 UA 被识别为浏览器(Chrome/Firefox/Safari/Edge 等)时,转发给 OpenAI 上游前会替换为此值,
- // 用于避免 Cloudflare 对浏览器型 UA 的质询拦截。
- SettingKeyOpenAICodexUserAgent = "openai_codex_user_agent"
- // SettingKeyOpenAICodexClientVersion 网关对 ChatGPT 上游声明的 Codex 客户端版本号(管理员覆写)。
- // 空值表示跟随自动同步值;自动同步也没有结果时回退到内置常量。
- // 上游在容量紧张时按客户端身份分优先级降载,陈旧版本会被优先丢弃,故该值需保持跟随官方发布。
- SettingKeyOpenAICodexClientVersion = "openai_codex_client_version"
- // SettingKeyOpenAICodexClientVersionSynced 自动同步任务写入的官方 Codex 最新稳定版版本号。
- // 由 OpenAICodexVersionSyncService 独占写入,面板只读展示;管理员覆写请用
- // SettingKeyOpenAICodexClientVersion。
- SettingKeyOpenAICodexClientVersionSynced = "openai_codex_client_version_synced"
- // SettingKeyOpenAICodexVersionAutoSyncEnabled 是否启用 Codex 客户端版本号自动同步(默认 true)。
- SettingKeyOpenAICodexVersionAutoSyncEnabled = "openai_codex_version_auto_sync_enabled"
- // SettingKeyOpenAIAllowClaudeCodeCodexPlugin 已废弃:历史全局开关只作为升级迁移输入读取。
- // 迁移后等价规则写入 SettingKeyCodexCLIOnlyWhitelist,不再参与运行时判定。
- SettingKeyOpenAIAllowClaudeCodeCodexPlugin = "openai_allow_claude_code_codex_plugin"
- // 余额不足提醒
- SettingKeyBalanceLowNotifyEnabled = "balance_low_notify_enabled" // 全局开关
- SettingKeyBalanceLowNotifyThreshold = "balance_low_notify_threshold" // 默认阈值(USD)
- SettingKeyBalanceLowNotifyRechargeURL = "balance_low_notify_recharge_url" // 充值页面 URL
- // 订阅到期提醒
- SettingKeySubscriptionExpiryNotifyEnabled = "subscription_expiry_notify_enabled" // 订阅到期提醒全局开关,默认开启
- // 账号限额通知
- SettingKeyAccountQuotaNotifyEnabled = "account_quota_notify_enabled" // 全局开关
- SettingKeyAccountQuotaNotifyEmails = "account_quota_notify_emails" // 管理员通知邮箱列表(JSON 数组)
- // Web Search Emulation
- SettingKeyWebSearchEmulationConfig = "web_search_emulation_config" // JSON 配置
- )
- // SettingKeyDefaultPlatformQuotas —— 系统全局:每用户 × 平台日/周/月 USD 上限(JSON)。
- // 值为 map[platform]{daily,weekly,monthly},null/缺省 = 不限制;0 = 禁用;>0 = USD 上限。
- const SettingKeyDefaultPlatformQuotas = "default_platform_quotas"
- // SettingKeyAccountSchedulingThresholds —— 系统全局:按平台自动停调阈值(JSON map)。
- // 值为 map[platform]percent,1..100;100 = 禁用该平台自动停调。
- const SettingKeyAccountSchedulingThresholds = "account_scheduling_thresholds"
- // SettingKeyAuthSourcePlatformQuotas 返回某 auth source 的 platform quota JSON key。
- // 形如 auth_source_default_{source}_platform_quotas
- func SettingKeyAuthSourcePlatformQuotas(source string) string {
- return fmt.Sprintf("auth_source_default_%s_platform_quotas", source)
- }
- // QuotaDimension constants for spark shadow accounts.
- const (
- QuotaDimensionGlobal = "global"
- QuotaDimensionSpark = "spark"
- )
- // AdminAPIKeyPrefix is the prefix for admin API keys (distinct from user "sk-" keys).
- const AdminAPIKeyPrefix = "admin-"
- // SettingKeyAllowUserViewErrorRequests controls whether end users can view
- // their own failed requests on the usage page. Default false (opt-in).
- const SettingKeyAllowUserViewErrorRequests = "allow_user_view_error_requests"
|