User Story
Como operador do Kestrel, quero que o proxy rotacione automaticamente entre múltiplas contas Claude quando uma atinge rate limit, para que meus requests nunca falhem por esgotamento de uma única conta.
Escopo
Use Cases completos (substituem versão simplificada da Fase 2)
- usecase/select_account.go — SelectAccountUseCase: seleção com priority, LRU, sticky routing, excludeID
- usecase/handle_fallback.go — HandleFallbackUseCase: ApplyCooldown, Disable, classificação de erro
- usecase/manage_session.go — ManageSessionUseCase: GetOrCreate, bind/unbind account, TTL
- usecase/proxy_chat.go — versão completa com retry loop, fallback, session
- usecase/proxy_stream.go — versão completa com retry loop, fallback, session
Session In-Memory
- adapter/session/memory.go — SessionReader, SessionWriter com RWMutex, cleanup de expiradas
Atualizar main.go
- Wiring com multi-account (contas do DB), session in-memory, fallback
Critérios de aceite
- Criar 3 contas via admin → proxy rotaciona entre elas
- Conta com erro 429 entra em cooldown → proxy usa próxima
- Conta com erro 401 é desabilitada → proxy usa próxima
- Sticky routing: mesma session usa mesma conta enquanto disponível
- Coverage 100%
- QA E2E valida fallback com contas reais ou mock
Referência
- docs/03-REQUEST-FLOW.md (retry loop completo)
- docs/05-ACCOUNT-ROTATION.md (seleção, backoff, fallback)
- docs/08-IMPLEMENTATION-PHASES.md — Fase 5
User Story
Como operador do Kestrel, quero que o proxy rotacione automaticamente entre múltiplas contas Claude quando uma atinge rate limit, para que meus requests nunca falhem por esgotamento de uma única conta.
Escopo
Use Cases completos (substituem versão simplificada da Fase 2)
Session In-Memory
Atualizar main.go
Critérios de aceite
Referência