Skip to main content
O Lerian BC Correios carrega a sua correspondência oficial com o BACEN, então uma instância que não está pronta é um evento operacional.

Saúde e readiness


GET /health informa a liveness. Ele responde 200 enquanto o processo roda e não verifica dependências. GET /readyz executa as verificações de dependências. Ele responde 200 quando o serviço pode receber tráfego, e 503 quando não pode ou enquanto está desligando. Ele reutiliza um resultado por 250 milissegundos. No modo multi-tenant, o /readyz também verifica o Tenant Manager e o Redis de eventos dele. O /readyz não chama o BC Correio, porque cada tenant tem as próprias credenciais. Para verificar a ligação de um tenant com o BC Correio, chame POST /settings/test-connection. GET /version retorna a versão de build do serviço.

Cota de requisições ao BACEN e circuit breaker


O Lerian BC Correios limita suas chamadas ao BC Correio por credencial Sisbacen:
  • BC_CORREIO_RATE_LIMIT_PER_MINUTE chamadas por minuto, 50 por padrão.
  • BC_CORREIO_RATE_LIMIT_PER_HOUR chamadas por hora, 2700 por padrão.
O serviço recusa um valor acima de 60 por minuto ou de 3000 por hora. Quando o cache está disponível, todas as réplicas compartilham uma contagem por credencial. Uma chamada aguarda até BC_CORREIO_RATE_LIMIT_MAX_WAIT_SEC segundos por uma vaga livre, 90 por padrão. Cada tenant tem o próprio circuit breaker para o BC Correio. Cinco falhas seguidas o abrem. Depois de 30 segundos, ele deixa passar uma chamada para testar o BC Correio de novo.

Credenciais e chaves


ENCRYPTION_KEY guarda a chave AES-256-GCM que criptografa as credenciais do BC Correio, as chaves de API de IA e as respostas de idempotência armazenadas. Ela tem exatamente 32 bytes. Fora do ambiente development, o serviço não inicia sem ela. AMQP_SIGNING_KEY guarda a chave que assina as mensagens de auditoria no RabbitMQ. Sem ela, o serviço deriva uma chave separada de ENCRYPTION_KEY. Quando você a define, ela tem exatamente 32 bytes e deve ser diferente de ENCRYPTION_KEY.

Armazenamento, outbox e retenção


O Lerian BC Correios armazena as correspondências no PostgreSQL. Ele armazena os anexos em um armazenamento de objetos compatível com S3, ou no sistema de arquivos local quando OBJECT_STORAGE_PROVIDER é local. As ações dos usuários chegam à trilha de auditoria por uma tabela de outbox e pelo RabbitMQ. O outbox tenta cada evento até AUDIT_OUTBOX_MAX_ATTEMPTS vezes, 50 por padrão. O worker de retenção exclui as linhas de outbox publicadas depois de AUDIT_OUTBOX_RETENTION_DAYS dias, 7 por padrão. O worker de retenção roda uma vez a cada 24 horas e aplica o período de retenção de cada tenant. O serviço não aplica o próprio schema de banco de dados. Uma etapa de migração separada o aplica antes que o serviço inicie.

Métricas e tracing


Defina TRACING_ENABLED=true para exportar traces, e METRICS_ENABLED=true para exportar métricas, por OTLP para OTEL_EXPORTER_OTLP_ENDPOINT. Defina METRICS_PROMETHEUS_ENABLED=true para abrir um listener separado para o scrape do Prometheus, em METRICS_PROMETHEUS_ADDRESS. O endereço padrão é 127.0.0.1:9076. A porta principal não tem endpoint de métricas. Veja Observabilidade para a visão da plataforma.

Postura de deploy


DEPLOYMENT_MODE aceita local, byoc ou saas. Em saas, cada dependência configurada deve usar TLS, ou o serviço não inicia. ENV_NAME decide o rigor das verificações de inicialização. Com qualquer valor diferente de development, o serviço também exige:
  • POSTGRES_USER e POSTGRES_NAME, com um POSTGRES_SSLMODE diferente de disable.
  • RABBITMQ_URL, sem as credenciais guest:guest. O serviço não inicia se não consegue se conectar ao RabbitMQ.
  • ENCRYPTION_KEY, com exatamente 32 bytes.
  • ALLOWED_ORIGINS, com um valor diferente de *.
  • FEATURE_AUDIT_ENABLED não definida como false.
Todo ambiente precisa de LICENSE_KEY e de um true ou false explícito em PLUGIN_AUTH_ENABLED. Um valor ausente ou inválido interrompe o boot.