Skip to content

Fase 5: Multi-account + Fallback + Session #5

@DavyMassoneto

Description

@DavyMassoneto

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    phase-2Fase 2: Domínio + Tradução

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions