app / src-tauri /src /proxy /sticky_config.rs
AZILS's picture
Upload 323 files
a21c316 verified
use serde::{Deserialize, Serialize};
/// 调度模式枚举
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub enum SchedulingMode {
/// 缓存优先 (Cache-first): 尽可能锁定同一账号,限流时优先等待,极大提升 Prompt Caching 命中率
CacheFirst,
/// 平衡模式 (Balance): 锁定同一账号,限流时立即切换到备选账号,兼顾成功率和性能
Balance,
/// 性能优先 (Performance-first): 纯轮询模式 (Round-robin),账号负载最均衡,但不利用缓存
PerformanceFirst,
}
impl Default for SchedulingMode {
fn default() -> Self {
Self::Balance
}
}
/// 粘性会话配置
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct StickySessionConfig {
/// 当前调度模式
pub mode: SchedulingMode,
/// 缓存优先模式下的最大等待时间 (秒)
pub max_wait_seconds: u64,
}
impl Default for StickySessionConfig {
fn default() -> Self {
Self {
mode: SchedulingMode::Balance,
max_wait_seconds: 60,
}
}
}