# Plano — MVP visual: duplicados, identity resolution e middleware Valia→RD **Versão:** 1.1 **Data:** 01/06/2026 (atualizado: cenários E/F) **Implementação:** [`mvp/visual/`](.) (HTML interativo) **Base técnica:** [`analise-rdstation-identidade-contatos-2026-06-01.md`](../../analise-rdstation-identidade-contatos-2026-06-01.md), [`valia-rd-station-consolidado-2026-06-01.md`](../../valia-rd-station-consolidado-2026-06-01.md), MVP API `mvp/runner.py` --- ## 1. Objetivo Validar com Valia (Bruno/TI) e M2BR as **políticas de resolução de duplicados/colisão de identidade** e o **desenho de automações** (ciclo mensal admissão, estado civil + upgrade) antes de implementar o middleware em produção. **Entregável:** protótipo HTML com simulações A–F + mapa de fluxos API + matriz de colisões + roadmap derivado. --- ## 2. Problema (identidade + automações) | Tipo | Sintoma no RD | |------|---------------| | Colisão de e-mail | `EMAIL_ALREADY_IN_USE` | | Fragmentação de pessoa | 2+ contatos para 1 CPF | | Sobrescrita de plano | 1 contato, `cf_fss` = último | | Comunicação errada | Automação no plano/email errado | | Ciclo mensal admissão (E) | Segmento “últimos 30 dias” não repete oferta nos dias 1–5 todo mês | | Estado civil + upgrade (F) | Campanha dispara para todos casados, sem elegibilidade nem dependente | **Chaves Valia:** CPF (pessoa) + FSS (contrato). E-mail = informativo. **RD nativo:** 1 contato = 1 e-mail. --- ## 3. Solução alvo (Opção C + D) - **Identity Resolver:** CPF → `email_rd` canônico - **Conflict Manager:** colisões (B: alias) - **Event Router:** `admissao_plano`, `mudanca_estado_civil`, ciclo admissão (E), upgrade civil (F) + `cf_fss` - **Registry:** índice CPF ↔ email ↔ FSS (persistente em produção) --- ## 4. Escopo middleware ### IN Ingest, Identity Resolver, Conflict Manager, Event Router, Registry, Audit log, Safety (smoke-test em homolog). ### OUT Webhook intranet, treinamento CRM Priscila, envio transacional Fase 2, sync completa Responsys. --- ## 5. Políticas por cenário (mockup) | Cenário | Política v1 | Visual | |---------|-------------|--------| | A | Email canônico = mais recente; alternativo em `bio` | `cenario-a.html` | | B | Alias `{cpf}@alias...`; `EMAIL_ALREADY_IN_USE` evitado | `cenario-b.html` | | C | 1 contato; FSS em eventos + tags | `cenario-c.html` | | D | Segmentação por evento + `cf_fss` | `cenario-d.html` | | E | `day(cf_data_de_admissao)` → `cf_dia_ciclo_mensal` (proposta) + workflow mensal RD | `cenario-e.html` | | F | `mudanca_estado_civil` + elegibilidade plano + dependente (alias B) | `cenario-f.html` | | Mapa | Evento vs calendário · perguntas Bruno | `fluxos-automacao.html` | | Matriz | Regras RULE_* (incl. E/F) | `matriz-colisoes.html` | --- ## 6. Estrutura de telas (template) T0 Contexto → T1 Valia → T2 RD sem MW → T3 Middleware → T4 RD com MW → T5 Eventos → T6 Decisão --- ## 7. Critérios de validação (workshop Bruno) Por cenário: regra correta, aceitável ops, automação RD OK, campo novo RD, fila manual, bloqueio técnico. **E/F (workshop):** E1 campo derivado no RD vs E2 só tag; E3 sync diário Valia vs evento único na admissão. F1 só evento civil; F2 civil + upgrade; F3 civil + dependente (alias). API Valia envia dependente no mesmo payload? (Bruno) --- ## 8. Fases middleware pós-validação | Fase | Entrega | |------|---------| | M0 | Spec políticas + matriz | | M1 | Registry persistente | | M2 | Identity Resolver v1 | | M3 | Conflict Manager (alias B) | | M4 | Event Router (C, D, E, F) | | M4a | Campo `cf_dia_ciclo_mensal` ou tag ciclo-admissao | | M4b | Workflows RD (mensal E + evento F) com Priscila | | M5 | Audit log | | M6 | Piloto homolog | | M7 | Merge manual (A3) se necessário | | M8 | Envio email real (transacional) | --- ## 9. Como abrir o protótipo ```bash open clientes/valia/mvp/visual/index.html # ou servidor local: cd clientes/valia/mvp/visual && python3 -m http.server 8765 ``` --- ## 10. Riscos (callouts no visual) 1. RD não aceita 2 contatos com mesmo e-mail 2. Cenário A sem MW = 2 contatos 3. `cf_fss` no perfil pode sobrescrever 4. Responsys: aguardando doc Bruno 5. Webhook intranet fora do escopo