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