FT-PII-REDACTION· 1.0.0Segurança & 2FA
Redaction de PII antes de enviar payload pra IA
Pipeline de redaction de PII (CPF, CNPJ, IBAN, email, cartão, DNI...) aplicado antes de enviar payload pra LLM.
Atualizado em 8/6/2026
Toda chamada do Lefia para um provedor LLM (atualmente Anthropic Claude) passa por um pipeline de redaction antes do payload sair do servidor.
Mesmo sendo a Anthropic um subprocessador declarado e com Zero Data Retention, minimizar o que sai daqui é defesa em profundidade: reduz risco em DPIA, contém vazamento se o LLM for comprometido, e dá auditoria por chamada.
A biblioteca
PII detectada é substituída por tags como
Cada chamada loga os contadores em
Pra ver no /admin: filtrar
Por que existe
Mesmo sendo a Anthropic um subprocessador declarado e com Zero Data Retention, minimizar o que sai daqui é defesa em profundidade: reduz risco em DPIA, contém vazamento se o LLM for comprometido, e dá auditoria por chamada.
Como funciona
A biblioteca
src/lib/ai/redaction.ts aplica regex + validações em todo string antes do prompt:- CPF (BR) — formato 000.000.000-00 ou cru
- CNPJ (BR) — formato 00.000.000/0000-00 ou cru
- CEP (BR) — 00000-000
- Telefone BR — (11) 99999-1234, +55 ...
- DNI/NIE (ES) — 12345678Z, X1234567L
- Telefone ES — +34 612 345 678
- IBAN — ES91…, DE89…, etc.
- Email — qualquer endereço RFC simplificado
- Cartão de crédito — 13 a 19 dígitos com validação Luhn (evita falso positivo em DOCNUMs)
PII detectada é substituída por tags como
[REDACTED:CPF], [REDACTED:EMAIL] — o modelo entende o tipo do dado sem ver o valor.Onde está aplicado
| Endpoint | O que é redacted |
|---|---|
POST /api/ai/diagnose | Payload completo de mensagem (NFe, IDoc, EDI, JSON) |
POST /api/edi-hub/interpret-log | log.message, log.details (jsonb) e error_detail |
POST /api/edi-hub/suggest-mapping | Lista de campos source + dest e descrições |
POST /api/edi-hub/suggest-format | Query e contexto de mensagem |
POST /api/edi-hub/create-message-type | Lista de campos source + dest e descrições |
paraphraseDescriptions (lib) | Descrições de campos antes de parafrasear |
Auditoria
Cada chamada loga os contadores em
ai_usage_events.metadata.pii_redaction. Exemplo:{
"pii_redaction": {
"cpf": 2, "cnpj": 1, "email": 3, "phone_br": 1,
"cep": 0, "phone_es": 0, "iban": 0,
"credit_card": 0, "dni_es": 0, "nie_es": 0
}
}
Pra ver no /admin: filtrar
ai_usage_events por feature e somar metadata.Limitações conhecidas
- Não cobre dados em outros idiomas/países (ex: SSN US, MyNumber JP). Adicionar conforme demanda.
- Não cobre nomes/endereços livres — esses são contextuais demais pra regex; o pipeline mantém esses dados intactos.
- Toggle por tenant/integração ainda não existe (item #54 do roadmap). Hoje o pipeline está sempre ligado.
Veja também
pipeline-mensagens-fluxos— fluxos do retry e DLQ (onde a IA é chamada também passa pela redaction)ai-toggle-hierarchy— desligar IA por scopecertificado-digital-mtls— mTLS pra SEFAZ e similares
Histórico de versões
- 1.0.0
Pipeline server-side de redaction de PII antes de enviar payload pra LLM. Regex+Luhn cobre CPF, CNPJ, CEP, email, telefone BR/ES, IBAN, cartão de crédito, DNI/NIE espanhol. Substituições com tags tipadas [REDACTED:CPF] etc; opção de hash determinístico. Aplicado em todos os 6 entry points Anthropic (diagnose, interpret-log, suggest-mapping, suggest-format, create-message-type, paraphrase-descriptions). Stats por chamada em ai_usage_events.metadata.pii_redaction. 19 testes vitest. Documentado em /security e /help.
5/5/2026 · new