Pular para o conteúdo

apps/messaging-streaming/content-filter

061 · Comunicação & Mensageria · ≈ 5 min de estudo

Content Filter

Remove campos sensíveis ou desnecessários de uma mensagem antes de repassá-la adiante — a operação inversa do Content Enricher. Aqui, um evento de transação é reduzido ao mínimo necessário antes de sair do perímetro do banco rumo a um provedor de scoring terceirizado, em conformidade com o princípio de minimização de dados da LGPD.

passos
6
arquivos
6
teste
1
tecnologias
3
Lógica puraTypeScriptBunElysia
Baixar cartão

Cenário

O core bancário produz um evento de transação com tudo o que sabe: CPF, nome do titular e saldo total. Antes de sair do perímetro do banco rumo a um provedor de scoring terceirizado, o Content Filter reduz o evento ao mínimo que o score precisa: valor, tipo, instante e um pseudônimo da conta — correlacionável entre eventos, mas irreversível sem a chave do banco.

Planta

Sequência
6/6
alt[evento cru enviado direto][evento filtrado]TRX-0001 { cpf, nome, saldo total, valor, tipo }1remove cpf, nome, saldo total2POST /score { transactionId, accountIdHash (HMAC), valor, tipo }3valida schema estrito (additionalProperties: false)4422 Unprocessable Entity5200 OK { score }6Core Bancário (evento cru)Content FilterProvedor de Scoring (porta 8104)
6

6 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Remove campos que o destino não usa.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    O core gera EventTransactionRaw com CPF, nome, saldo e conta

  2. 02

    eventTransactionFilter projeta por allowlist num tipo de saída próprio: só transactionId, accountIdHash, amountCents, type e occurredAt passam — campo novo no evento cru não vaza

  3. 03

    A conta vira HMAC-SHA256 com chave secreta (SCORING_HMAC_KEY): mesma conta, mesmo hash; hash puro seria revertido por força bruta

  4. 04

    O evento filtrado vai por fetch() ao provedor, um processo Elysia separado (porta 8104)

  5. 05

    O provedor valida com schema estrito (additionalProperties: false): o evento cru enviado por engano é recusado com 422, não pontuado com o CPF dentro

  6. 06

    O score é calculado só com os campos mínimos — os dados sensíveis nunca foram necessários

apps/messaging-streaming/content-filter

6 arquivos

src/

  • filter_transaction.tseventTransactionFilter — projeção por allowlist e HMAC da conta
  • event_transaction.tsEvento cru do core bancário, com os campos sensíveis
  • api_scoring.tsProvedor de scoring (Elysia, porta 8104) com schema estrito
  • config_scoring.tsLê e valida SCORING_HMAC_KEY no boot
  • demo.tsdemoSobe o provedor, envia o evento cru (422) e o filtrado (200)
  • filter_transaction.test.tstesteNenhum valor sensível sobrevive, campo novo não vaza, HMAC com chave, 422 do evento cru

Executar · só Bun

  1. cp .env.example .env# variáveis de ambiente
  2. bun install# dependências
  3. bun run demo# roda o cenário

Testes: bun run test.

Requisitos
Bun

Por que se relacionam

Teste rápido

Qual destes combina com Content Filter?

Próximo projeto · Comunicação & MensageriaNormalizer
Esc

↑ ↓ navegarEnter abrir191 resultados