package com.rainy.token.data.proxy /** * 模型名 → Provider + Region 路由。 * * 约定前缀: * - wbcn- / workbuddy-cn / codebuddy- → WorkBuddy 国内版 * - wbintl- / workbuddy-intl → WorkBuddy 国际版 * - traecn- / trae-cn / trae- → Trae CN * - traeintl- / trae-intl → Trae INTL * - 其余默认 OpenAI 兼容透传(Sub2API) */ class ProviderRouter { data class Route( val kind: ProviderKind, val region: ProviderRegion?, ) fun route(model: String): Route { val m = model.trim().lowercase() return when { m.startsWith("wbcn-") || m.startsWith("workbuddy-cn") || m.startsWith("codebuddy-") -> Route(ProviderKind.WORKBUDDY_CN, ProviderRegion.CN) m.startsWith("wbintl-") || m.startsWith("workbuddy-intl") || m.startsWith("workbuddy-") -> Route(ProviderKind.WORKBUDDY_INTL, ProviderRegion.INTL) m.startsWith("traeintl-") || m.startsWith("trae-intl") -> Route(ProviderKind.TRAE_INTL, ProviderRegion.INTL) m.startsWith("traecn-") || m.startsWith("trae-cn") || m.startsWith("trae-") -> Route(ProviderKind.TRAE_CN, ProviderRegion.CN) else -> Route(ProviderKind.OPENAI_COMPATIBLE, null) } } }