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_MINUTEchamadas por minuto, 50 por padrão.BC_CORREIO_RATE_LIMIT_PER_HOURchamadas por hora, 2700 por padrão.
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_USERePOSTGRES_NAME, com umPOSTGRES_SSLMODEdiferente dedisable.RABBITMQ_URL, sem as credenciaisguest: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_ENABLEDnão definida comofalse.
LICENSE_KEY e de um true ou false explícito em PLUGIN_AUTH_ENABLED. Um valor ausente ou inválido interrompe o boot.
