Ciclo de polling
O tenant define o intervalo de polling nas suas configurações: 5, 15, 30 ou 60 minutos. Uma mudança no intervalo entra em vigor sem restart. Cada ciclo executa estes passos:
- Lista as pastas do BC Correio que o usuário Sisbacen pode ver.
- Lê cada pasta página por página, até que uma página volte vazia.
- Lê cada correspondência nova, busca seus anexos e depois os armazena.
- Para uma correspondência que já armazena, busca os anexos que falharam em um ciclo anterior.
Pastas
Quando o Lerian BC Correios armazena uma correspondência nova, ele a coloca na pasta local que corresponde à sua pasta no BC Correio:
Uma movimentação posterior da correspondência no BC Correio não muda a sua pasta local. Você não pode restaurar uma correspondência de
CANCELLED.
Sincronização inicial
O primeiro ciclo de um tenant armazena as correspondências que já existem no BC Correio. O Lerian BC Correios não envia esse acervo ao provedor de IA. Você ainda pode pedir a análise de uma correspondência desse acervo. Um ciclo que falha ao ler uma pasta não conclui a sincronização inicial. O próximo ciclo a executa de novo.
Armazenamento de correspondências e anexos
O Lerian BC Correios armazena cada correspondência no PostgreSQL. Ele armazena os anexos em um armazenamento de objetos compatível com S3 ou no sistema de arquivos local, com o checksum SHA-256 de cada arquivo. Quando você baixa um anexo, o serviço confere o arquivo com o seu checksum. Um arquivo que falha na verificação retorna
BCC-0010.
Envio de mensagem
POST /mails/send envia uma mensagem de texto a um departamento do BACEN pelo BC Correio. A mensagem vai para o destino da requisição. Sem ele, vai para o destino padrão do tenant. Sem os dois, vai para DEINF.
O tenant precisa de credenciais do BC Correio armazenadas. Sem elas, a requisição retorna 401 BCC-2001, e o Lerian BC Correios não armazena nada.
O Lerian BC Correios registra a mensagem como PENDING antes de chamar o BC Correio. O resultado então decide o status e a resposta:
Uma repetição da requisição com a mesma chave
X-Idempotency não envia a mensagem de novo. Enquanto a primeira requisição roda, a repetição pode retornar 409 BCC-0012 com um header Retry-After. Fora isso, o status armazenado da primeira requisição decide a resposta:
TRANSMISSION_PENDING_GRACE_SEC define a janela de tolerância, 30 segundos por padrão.
Não envie a mensagem de novo depois de BCC-2010. O BC Correio pode já tê-la. Confirme com o BACEN, pelo canal manual dele, que a mensagem não chegou, e só então envie-a com uma chave nova.
O Lerian BC Correios não repete um envio por conta própria.
Ações locais sobre correspondências
Marcar como lida, arquivar e restaurar mudam a sua cópia local de uma correspondência. O Lerian BC Correios não envia essas ações ao BC Correio. Uma restauração de uma correspondência na pasta
CANCELLED ou SENT retorna 409 BCC-0014.
Insight de IA
Um tenant pode configurar um provedor de IA:
openai, anthropic ou gemini, com a sua própria chave de API. O Lerian BC Correios envia o corpo da correspondência a esse provedor, junto com o texto que extrai de anexos TXT, CSV, XML, PDF e DOCX.
Quando o tenant tem um provedor de IA, cada correspondência nova aguarda análise. No ciclo de polling, o Lerian BC Correios analisa uma correspondência sem anexos e com um corpo de pelo menos AI_BODY_INLINE_THRESHOLD caracteres. Um worker em segundo plano analisa as outras correspondências.
Você pode pedir uma nova análise de uma correspondência com POST /mails/{id}/reanalyze. Quando o provedor responde em até 20 segundos, a resposta traz a análise. Caso contrário, a resposta é 202, e a análise continua em segundo plano.
Retenção
Cada tenant define nas suas configurações um período de retenção entre 1825 e 36500 dias. Um worker de retenção roda uma vez a cada 24 horas. Para as correspondências que ultrapassam o período de retenção, ele exclui do armazenamento os arquivos de anexo e oculta a correspondência. Depois, exclui do banco de dados os registros da correspondência.
Trilha de auditoria
A trilha de auditoria registra estas ações:
GET /audit lista as entradas. GET /audit/export as exporta em CSV. Envie Accept: application/pdf para receber um PDF.
