feat: add configurable account selection strategies

Refactor account selection into a strategy pattern with three options:
- Sticky: cache-optimized, stays on same account until rate-limited
- Round-robin: load-balanced, rotates every request
- Hybrid (default): smart distribution using health scores, token buckets, and LRU

The hybrid strategy uses multiple signals for optimal account selection:
health tracking for reliability, client-side token buckets for rate limiting,
and LRU freshness to prefer rested accounts.

Includes WebUI settings for strategy selection and unit tests.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Badri Narayanan S
2026-01-18 03:48:43 +05:30
parent 973234372b
commit 5ae19a5b72
31 changed files with 2721 additions and 353 deletions

View File

@@ -67,7 +67,27 @@ window.AppConstants.VALIDATION = {
// Max wait threshold (1 - 30 minutes)
MAX_WAIT_MIN: 60000,
MAX_WAIT_MAX: 1800000
MAX_WAIT_MAX: 1800000,
// Rate limit dedup window (1 - 30 seconds)
RATE_LIMIT_DEDUP_MIN: 1000,
RATE_LIMIT_DEDUP_MAX: 30000,
// Consecutive failures (1 - 10)
MAX_CONSECUTIVE_FAILURES_MIN: 1,
MAX_CONSECUTIVE_FAILURES_MAX: 10,
// Extended cooldown (10 seconds - 5 minutes)
EXTENDED_COOLDOWN_MIN: 10000,
EXTENDED_COOLDOWN_MAX: 300000,
// Capacity retry delay (500ms - 10 seconds)
CAPACITY_RETRY_DELAY_MIN: 500,
CAPACITY_RETRY_DELAY_MAX: 10000,
// Capacity retries (1 - 10)
MAX_CAPACITY_RETRIES_MIN: 1,
MAX_CAPACITY_RETRIES_MAX: 10
};
/**