diff --git a/frontend/src/components/account/EditAccountModal.vue b/frontend/src/components/account/EditAccountModal.vue index efc34f39..3b6c0789 100644 --- a/frontend/src/components/account/EditAccountModal.vue +++ b/frontend/src/components/account/EditAccountModal.vue @@ -946,6 +946,56 @@ + +
+
+
+ +

+ {{ t('admin.accounts.quotaControl.rpmLimit.hint') }} +

+
+ +
+ +
+
+ + +

{{ t('admin.accounts.quotaControl.rpmLimit.baseRpmHint') }}

+
+
+ + +

{{ t('admin.accounts.quotaControl.rpmLimit.strategyHint') }}

+
+
+
+
@@ -1251,6 +1301,9 @@ const windowCostStickyReserve = ref(null) const sessionLimitEnabled = ref(false) const maxSessions = ref(null) const sessionIdleTimeout = ref(null) +const rpmLimitEnabled = ref(false) +const baseRpm = ref(null) +const rpmStrategy = ref('tiered') const tlsFingerprintEnabled = ref(false) const sessionIdMaskingEnabled = ref(false) const cacheTTLOverrideEnabled = ref(false) @@ -1710,6 +1763,9 @@ function loadQuotaControlSettings(account: Account) { sessionLimitEnabled.value = false maxSessions.value = null sessionIdleTimeout.value = null + rpmLimitEnabled.value = false + baseRpm.value = null + rpmStrategy.value = 'tiered' tlsFingerprintEnabled.value = false sessionIdMaskingEnabled.value = false cacheTTLOverrideEnabled.value = false @@ -1733,6 +1789,13 @@ function loadQuotaControlSettings(account: Account) { sessionIdleTimeout.value = account.session_idle_timeout_minutes ?? 5 } + // RPM limit + if (account.base_rpm != null && account.base_rpm > 0) { + rpmLimitEnabled.value = true + baseRpm.value = account.base_rpm + rpmStrategy.value = account.rpm_strategy || 'tiered' + } + // Load TLS fingerprint setting if (account.enable_tls_fingerprint === true) { tlsFingerprintEnabled.value = true @@ -2043,6 +2106,16 @@ const handleSubmit = async () => { delete newExtra.session_idle_timeout_minutes } + // RPM limit settings + if (rpmLimitEnabled.value && baseRpm.value != null && baseRpm.value > 0) { + newExtra.base_rpm = baseRpm.value + newExtra.rpm_strategy = rpmStrategy.value + } else { + delete newExtra.base_rpm + delete newExtra.rpm_strategy + delete newExtra.rpm_sticky_buffer + } + // TLS fingerprint setting if (tlsFingerprintEnabled.value) { newExtra.enable_tls_fingerprint = true