User Story
Como operador do Kestrel, quero cadastrar contas Claude e API keys via Admin API para que o proxy possa rotear requests entre múltiplas contas.
Escopo
SQLite (adapter/sqlite/)
- db.go — Conexão: 1 writer + N readers, WAL, busy_timeout
- migrations.go — Auto-migration no startup
- account_repo.go — Implementa AccountFinder, AccountStatusWriter, AccountStore
- apikey_repo.go — Implementa APIKeyFinder, APIKeyStore
- migrations/001_accounts.sql, 002_apikeys.sql
Crypto (adapter/crypto/)
- aes.go — AES-256-GCM encrypt/decrypt para API keys at rest
- Interface Encryptor definida no sqlite repo (consumidor)
Admin Use Cases (usecase/)
- admin_account.go — Create, Update, Delete, Reset
- admin_apikey.go — Create, Revoke
Admin Handler (adapter/handler/)
- admin.go — CRUD endpoints REST
Critérios de aceite
- CRUD de contas funcional via curl
- CRUD de API keys funcional via curl
- API keys encriptadas no SQLite (AES-256-GCM)
- Migrations automáticas no startup
- Coverage 100% em usecase/, 90%+ em adapter/sqlite/
- Testes de integração com SQLite in-memory
Referência
- docs/02-ARCHITECTURE.md
- docs/05-ACCOUNT-ROTATION.md (schema SQL)
- docs/07-API-ENDPOINTS.md (admin endpoints)
- docs/08-IMPLEMENTATION-PHASES.md — Fase 3
User Story
Como operador do Kestrel, quero cadastrar contas Claude e API keys via Admin API para que o proxy possa rotear requests entre múltiplas contas.
Escopo
SQLite (adapter/sqlite/)
Crypto (adapter/crypto/)
Admin Use Cases (usecase/)
Admin Handler (adapter/handler/)
Critérios de aceite
Referência