> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Operación de Lerian BC Correios

> Las sondas de readiness, la cuota de solicitudes a BACEN, las credenciales y claves, el almacenamiento y la retención, las métricas y la postura de producción de Lerian BC Correios.

Lerian BC Correios lleva tu correspondencia oficial con BACEN, por eso una instancia que no está lista es un evento operativo.

## 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.

| Verificación | Qué sondea |
| - | - |
| `postgres` | La base de datos PostgreSQL. |
| `cache` | La cache Valkey o Redis. |
| `rabbitmq` | El broker RabbitMQ. |
| `storage` | El almacenamiento de objetos de los adjuntos. |
| `license_client` | El servidor de licencias de Lerian. |
| `startup_self_probe` | La autoverificación de arranque del servicio. |
| `systemplane` | El almacén de configuración en tiempo de ejecución, cuando existe. |

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_MINUTE` llamadas por minuto, 50 de forma predeterminada.
* `BC_CORREIO_RATE_LIMIT_PER_HOUR` llamadas por hora, 2700 de forma predeterminada.

El servicio rechaza un valor superior a 60 por minuto o a 3000 por hora. Cuando la cache está disponible, todas las réplicas comparten un conteo por credencial. Una llamada espera hasta `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](/es/platform/observability) 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_USER` y `POSTGRES_NAME`, con un `POSTGRES_SSLMODE` diferente de `disable`.
* `RABBITMQ_URL`, sin las credenciales `guest: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_ENABLED` sin el valor `false`.

Cada entorno necesita `LICENSE_KEY` y un `true` o `false` explícito en `PLUGIN_AUTH_ENABLED`. Un valor ausente o inválido detiene el arranque.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.