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

# Operando o Lerian BC Correios

> Sondas de readiness, a cota de requisições ao BACEN, credenciais e chaves, armazenamento e retenção, métricas e a postura de produção do Lerian BC Correios.

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.

| Verificação | O que ela testa |
| - | - |
| `postgres` | O banco de dados PostgreSQL. |
| `cache` | O cache Valkey ou Redis. |
| `rabbitmq` | O broker RabbitMQ. |
| `storage` | O armazenamento de objetos dos anexos. |
| `license_client` | O servidor de licenças da Lerian. |
| `startup_self_probe` | A autoverificação de inicialização do serviço. |
| `systemplane` | O armazenamento da configuração em runtime, quando presente. |

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](/pt/platform/observability) 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.


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