Health y readiness
GET /health informa el liveness. Responde 200 mientras el proceso se ejecuta, y no verifica las dependencias.
GET /readyz ejecuta las verificaciones de dependencias. Responde 200 cuando el servicio puede recibir tráfico, y 503 cuando no puede o mientras se apaga. Reutiliza un resultado durante 250 milisegundos.
En modo multi-tenant,
/readyz también verifica el Tenant Manager y su Redis de eventos.
/readyz no llama a BC Correio, porque cada tenant tiene sus propias credenciales. Para verificar el enlace con BC Correio de un tenant, llama a POST /settings/test-connection.
GET /version devuelve la versión de build del servicio.
Cuota de solicitudes a BACEN y circuit breaker
Lerian BC Correios limita sus llamadas a BC Correio por credencial Sisbacen:
BC_CORREIO_RATE_LIMIT_PER_MINUTEllamadas por minuto, 50 de forma predeterminada.BC_CORREIO_RATE_LIMIT_PER_HOURllamadas por hora, 2700 de forma predeterminada.
BC_CORREIO_RATE_LIMIT_MAX_WAIT_SEC segundos por un espacio libre, 90 de forma predeterminada.
Cada tenant tiene su propio circuit breaker para BC Correio. Cinco fallas seguidas lo abren. Después de 30 segundos, deja pasar una llamada para probar BC Correio otra vez.
Credenciales y claves
ENCRYPTION_KEY contiene la clave AES-256-GCM que cifra las credenciales de BC Correio, las claves de API de IA y las respuestas de idempotencia almacenadas. Acepta exactamente 32 bytes. Fuera del entorno development, el servicio no arranca sin ella.
AMQP_SIGNING_KEY contiene la clave que firma los mensajes de auditoría en RabbitMQ. Sin ella, el servicio deriva una clave separada de ENCRYPTION_KEY. Cuando la configuras, acepta exactamente 32 bytes y debe ser diferente de ENCRYPTION_KEY.
Almacenamiento, outbox y retención
Lerian BC Correios almacena los correos en PostgreSQL. Almacena los adjuntos en un almacenamiento de objetos compatible con S3, o en el sistema de archivos local cuando
OBJECT_STORAGE_PROVIDER es local.
Las acciones de los usuarios llegan al registro de auditoría a través de una tabla de outbox y de RabbitMQ. El outbox intenta cada evento hasta AUDIT_OUTBOX_MAX_ATTEMPTS veces, 50 de forma predeterminada. El worker de retención elimina las filas de outbox publicadas después de AUDIT_OUTBOX_RETENTION_DAYS días, 7 de forma predeterminada.
El worker de retención se ejecuta una vez cada 24 horas y aplica el período de retención de cada tenant.
El servicio no aplica su propio esquema de base de datos. Un paso de migración separado lo aplica antes de que el servicio arranque.
Métricas y trazas
Define
TRACING_ENABLED=true para exportar trazas, y METRICS_ENABLED=true para exportar métricas, por OTLP hacia OTEL_EXPORTER_OTLP_ENDPOINT.
Define METRICS_PROMETHEUS_ENABLED=true para abrir un listener separado para un scrape de Prometheus, en METRICS_PROMETHEUS_ADDRESS. La dirección predeterminada es 127.0.0.1:9076. El puerto principal no tiene un endpoint de métricas.
Consulta Observabilidad para la vista de la plataforma.
Postura de despliegue
DEPLOYMENT_MODE acepta local, byoc o saas. En saas, cada dependencia configurada debe usar TLS, o el servicio no arranca.
ENV_NAME decide qué tan estrictas son las verificaciones de arranque. Con cualquier valor diferente de development, el servicio también exige:
POSTGRES_USERyPOSTGRES_NAME, con unPOSTGRES_SSLMODEdiferente dedisable.RABBITMQ_URL, sin las credencialesguest:guest. El servicio no arranca si no puede conectarse a RabbitMQ.ENCRYPTION_KEY, con exactamente 32 bytes.ALLOWED_ORIGINS, con un valor diferente de*.FEATURE_AUDIT_ENABLEDsin el valorfalse.
LICENSE_KEY y un true o false explícito en PLUGIN_AUTH_ENABLED. Un valor ausente o inválido detiene el arranque.
