# Política de Retenção de Dados — LGPD

**Reflete Pra Mim**  
**Última atualização:** 13 de junho de 2026

---

## 1. Princípios Gerais

O Reflete Pra Mim segue os princípios da LGPD (Lei Geral de Proteção de Dados — Lei nº 13.709/2018):

- **Minimização:** Coletamos apenas os dados estritamente necessários
- **Finalidade:** Uso dos dados apenas para fins especificados
- **Transparência:** Comunicação clara sobre coleta e uso de dados
- **Segurança:** Medidas técnicas e organizacionais para proteção
- **Retenção Limitada:** Dados mantidos apenas pelo tempo necessário

---

## 2. Dados Coletados e Armazenados

### 2.1 Sempre Coletados (Técnicos e Operacionais)

**Execuções (Metadados):**
- `executionId`: Identificador único da execução
- `personaId`: Persona utilizada
- `status`: Status da execução (SUCCEEDED, REJECTED, etc.)
- `costBand`: Banda de custo estimada (S, M, L)
- `latencyMs`: Latência da operação em milissegundos
- `createdAt`: Data e hora da execução
- Flags de opções premium (`useOfficialSources`, `useScientificPapers`) quando aplicável

**Uso Diário (Controle de Limites):**
- Contagem de execuções por dia
- Controle de créditos diários gratuitos (usuários logados e visitantes)

**Modo visitante (guest):**
- Identificador anônimo derivado de impressão digital do navegador/dispositivo
- Contagem de uso diário — sem e-mail nem conta vinculada

**⚠️ Importante:** Por padrão, **NÃO armazenamos** o conteúdo bruto dos prompts ou respostas completas do LLM.

### 2.2 Quando o Usuário Está Autenticado

**Perfil de Usuário (`Users`):**
- Identificador interno (`userId`): Google `sub` ou `usr_{ulid}` para contas locais
- E-mail (normalizado)
- Nome
- Foto de perfil (opcional; Google ou avatar local)
- Provedor de auth: `GOOGLE`, `RPM_LOCAL` ou `LINKED` (conta fundida)
- `emailVerifiedAt` (ISO-8601; obrigatório em produção para uso autenticado)
- `ageVerifiedAt`, `ageVerificationMethod`, `ageBand` (somente após verificação de compra — **sem CPF armazenado**)

**Credenciais locais (`RpmUserCredentials` — tabela separada):**
- `passwordHash` (BCrypt)
- `passwordUpdatedAt`
- Contador opcional de tentativas falhas de login

**Vínculos de identidade (`RpmUserAuthIdentity`):**
- Associação Google sub ↔ `userId` canônico quando contas são fundidas

**Tokens temporários:**
- Verificação de e-mail (`RpmEmailVerificationTokens`): hash SHA-256, TTL 24 h
- Redefinição de senha (`RpmPasswordResetTokens`): hash SHA-256, TTL 1 h, uso único

**Configurações:**
- Persona padrão preferida
- Preferências de modelo/provedor
- Duração da sessão (1 h / 1 dia / 7 dias)
- Configurações de privacidade (modo privativo)
- Consentimento de telemetria e Acervo Comunitário

**Histórico:**
- Metadados de execuções anteriores (executionId, data, persona, ferramenta)
- Planos de auditoria modular (DynamoDB) com flags de Base Científica / Bases Oficiais
- Permite acesso ao histórico completo através do `executionId`

**Sessão de autenticação:**
- JWT RPM emitido pelo servidor (claims: `sub`, `iss`, `aud`, `typ`, `exp` — **sem e-mail no token**)
- Cookie HttpOnly `RefleteAuth` (mesmo TTL da sessão)

**OgmAI (usuários logados):**
- Sessões de chat, memória resumida e metadados de documentos indexados
- Chunks RAG em `RpmVectorIndex` + payload S3 quando o usuário ingere conhecimento

**Modo Desenvolvedor — chaves de API (`RpmApiKeys`, opt-in):**
- `keyId`, nome do projeto, prefixo da chave, hash SHA-256 do segredo (segredo completo **não** persistido após criação)
- Status (`ACTIVE` / `REVOKED`), limite de gastos opcional, créditos consumidos via API
- `createdAt`, `lastUsedAt`, contadores de falhas de autenticação
- Flag `developerModeEnabled` nas configurações do usuário

**Auditor de Fatos — enriquecimento premium (por execução):**
- **Base Científica:** payload sanitizado em S3 (`paper-sessions/{executionId}/papers_data.json`); índice RAG efêmero `papers-{executionId}`
- **Bases Oficiais:** payload em S3 (`gov-sessions/{executionId}/gov_data.json`); índice RAG efêmero correspondente
- Metadados de artigos (DOI, título, autores, link, base) no resultado da execução

**Notificações push:**
- Token FCM do dispositivo (quando autorizado) — apenas para aviso de conclusão de auditoria

### 2.3 Quando o Usuário Opta por Debug (Opt-in Explícito)

**Dados de Debug (TTL 24 horas):**
- `debugInput`: Input original do usuário (redigido)
- `debugOutput`: Resposta do LLM (redigido)
- `debugConsent`: Timestamp do consentimento

**Condições para armazenamento:**
- Usuário deve explicitamente optar em (`debugConsent=true`)
- Dados são automaticamente excluídos após 24 horas (TTL)
- Dados sensíveis são redigidos antes do armazenamento (CPF, email, telefone)

### 2.4 Verificação de Idade (Compras — ECA Digital)

**Transmitido ao provedor FonteData (não retido por nós):**
- CPF (11 dígitos) — apenas durante a consulta HTTP

**Persistido após sucesso:**
- `ageVerifiedAt`, `ageVerificationMethod`, `ageBand` (`ADULT_18_PLUS` | `MINOR_BLOCKED`)
- Sessões pendentes de verificação: em memória no servidor, TTL ~1 h

**Finalidade exclusiva:** elegibilidade para compra de créditos. Não reutilizado para marketing ou perfilamento.

### 2.5 Transações Financeiras

**Wallet (Carteira):**
- Saldo de créditos (diários e permanentes)
- Histórico de transações (entradas e saídas, incluindo estornos de surcharge premium)
- Controle de bônus diários

**Billing Events (Eventos de Pagamento):**
- Eventos processados (Mercado Pago, Stripe, PagBank, RevenueCat)
- Status das transações
- Identificadores de webhooks

**Retenção Financeira:** Dados financeiros são mantidos conforme exigências fiscais (geralmente 5 anos, mas consulte seu contador).

---

## 3. Períodos de Retenção (TTL)

| Tipo de Dado | Período de Retenção | Observações |
|--------------|---------------------|-------------|
| **Executions (Metadados)** | 30 dias | TTL automático no DynamoDB |
| **Audit plans / histórico modular** | 30 dias | Alinhado a Executions; resultado Judge persistido ao completar |
| **UsageDaily** | 7 dias | TTL automático no DynamoDB |
| **Paper/Gov sessions (S3)** | Vinculado à execução | Payload efêmero; expira com ciclo de vida da auditoria |
| **RAG efêmero (papers-/gov-)** | Vinculado à execução | Índice Dynamo + S3; não reutilizado entre execuções |
| **Email verification tokens** | 24 horas | Dynamo TTL |
| **Password reset tokens** | 1 hora | Dynamo TTL, uso único |
| **Age verification pending** | ~1 hora | Memória do servidor |
| **Debug Data** | 24 horas | Apenas se `debugConsent=true`, TTL automático |
| **Wallet (Saldo)** | Indefinido | Até exclusão da conta ou conforme legislação fiscal |
| **Billing Events** | 5 anos | Conforme exigências fiscais |
| **Logs Técnicos** | 30 dias | CloudWatch/Loki (configurável) |
| **Telemetria Frontend** | Tempo real | Não persistido, apenas métricas agregadas |
| **OgmAI sessions/knowledge** | Até exclusão da conta | Usuário pode remover documentos indexados |
| **Chaves de API (Modo Desenvolvedor)** | Até revogação ou exclusão da conta | Metadados e hash; segredo completo não retido após criação |

---

## 4. Modo Privativo (Private Mode)

Quando o usuário ativa o **Modo Privativo** (`isPrivate=true`):

- ✅ Execução é processada normalmente
- ✅ Cobrança de créditos ocorre normalmente (necessário para auditoria financeira)
- ❌ **NÃO** armazena metadados da execução no DynamoDB
- ❌ **NÃO** armazena histórico acessível via `/v1/execution-history`
- ❌ **NÃO** armazena conteúdo em S3 (histórico)

**Observação:** Dados de debug (se opt-in) ainda seguem o TTL de 24 horas mesmo em modo privativo. Surcharges premium (Base Científica / Bases Oficiais) ainda geram registros financeiros mínimos para estorno idempotente.

---

## 5. Exclusão de Dados

### 5.1 Exclusão Automática

- **TTL:** Dados com TTL são automaticamente excluídos pelo DynamoDB após o período configurado
- **Debug:** Excluído automaticamente após 24 horas (independente de modo privativo)
- **Tokens:** Verificação de e-mail e reset de senha expiram automaticamente

### 5.2 Exclusão Manual

O usuário pode solicitar exclusão completa ou parcial:

1. **Via Aplicativo:** Exclusão parcial ou total ([Exclusão de Dados](exclusao-dados.html))
2. **Via Email:** Solicitação para `suporte@refletepramim.com.br`

**Dados Excluídos (exclusão total):**
- Perfil de usuário (Users table)
- Credenciais locais (RpmUserCredentials)
- Vínculos de identidade (RpmUserAuthIdentity)
- Configurações (Settings table)
- Histórico de execuções e planos de auditoria
- Wallet e transações (Wallet, BillingEvents tables)
- Sessões OgmAI e knowledge indexado
- Histórico S3 (execuções, paper-sessions, gov-sessions)
- Tokens pendentes (verificação, reset)

**Dados Mantidos (por exigência legal):**
- Logs de auditoria e eventos financeiros (prazo fiscal)
- Dados anonimizados agregados (métricas)
- Registros de tentativas de violação no Acervo Comunitário (hash, motivo — conforme termos)

---

## 6. Direitos do Titular (LGPD)

Conforme LGPD, o usuário tem direito a:

1. **Confirmação de Existência:** Verificar se dados são processados
2. **Acesso:** Obter cópia dos dados armazenados
3. **Correção:** Atualizar dados incompletos ou desatualizados
4. **Anonimização/Exclusão:** Solicitar exclusão de dados
5. **Portabilidade:** Receber dados em formato estruturado (quando aplicável)
6. **Revogação de Consentimento:** Revogar consentimentos fornecidos (telemetria, Acervo, push)
7. **Informação:** Saber com quem os dados foram compartilhados

**Como Exercer:**
- Via aplicativo (página de perfil / exclusão de dados)
- Via email: `suporte@refletepramim.com.br`

**Prazo de Resposta:** Até 15 dias úteis, conforme LGPD.

---

## 7. Compartilhamento de Dados

**Não vendemos nem compartilhamos dados para fins comerciais ou publicidade.**

Compartilhamos dados apenas com:

1. **Provedores de IA (Processamento):**
   - Groq, OpenAI, OpenRouter, Gemini e outros configurados
   - Apenas durante o processamento (não persistido pelos provedores para fins do RPM)

2. **Provedores de Pagamento:**
   - Mercado Pago, Stripe, PagBank, RevenueCat
   - Apenas dados necessários para processar transações

3. **Autenticação e comunicação:**
   - Google OAuth (login social)
   - Amazon SES (e-mails transacionais)

4. **Verificação de idade:**
   - FonteData (consulta CPF — dado transmitido, não armazenado localmente)

5. **Infraestrutura AWS:**
   - DynamoDB, S3, CloudWatch, SES, SSM/Secrets Manager
   - Dados permanecem em infraestrutura AWS (região configurada)

6. **Busca e fact-check:**
   - Serper API (busca web)
   - Serviço interno paper-search-mcp → Semantic Scholar, OpenAlex, PubMed, arXiv, Unpaywall (metadados acadêmicos)
   - Serviço interno mcp-brasil (dados governamentais)

7. **Notificações:**
   - Firebase Cloud Messaging (conclusão de auditoria — não marketing)

---

## 8. Segurança dos Dados

**Medidas Técnicas:**
- Criptografia em repouso (AWS padrão)
- Criptografia em trânsito (HTTPS/TLS)
- Senhas: BCrypt (cost 12); tokens de reset/verificação armazenados como hash SHA-256
- JWT de sessão HS256; cookie HttpOnly para sessão
- IAM least privilege (acesso mínimo necessário)
- Segredos em AWS Secrets Manager / SSM Parameter Store
- Sanitização de dados sensíveis (DebugRedactor, SafeLogUtils, OgmAiInputSanitizer)
- Rate limiting em login e endpoints de auth
- Validação de entrada (InputGuard, InputSanitizer)

**Medidas Organizacionais:**
- Acesso restrito a dados pessoais
- Logs de auditoria para acesso a dados sensíveis (sem senha, token ou CPF em claro)
- Políticas de retenção documentadas

---

## 9. Dados Sensíveis

**⚠️ Orientação ao Usuário:**

O Reflete Pra Mim é uma ferramenta de processamento de texto. **Não insira dados pessoais sensíveis** nos prompts, tais como:

- CPF, RG, CNPJ (exceto no fluxo dedicado de verificação de idade para compras)
- Números de cartão de crédito
- Senhas ou credenciais
- Informações médicas confidenciais
- Dados bancários

**Proteção Automática:**
- Dados de debug são redigidos antes do armazenamento (CPF, email, telefone detectados e mascarados)
- Logs não contêm respostas brutas do LLM, queries de paper-search ou chaves API em produção
- CPF de verificação de idade não é persistido após a consulta FonteData

---

## 10. Contato e Reclamações

**Email de Suporte:**  
`suporte@refletepramim.com.br`

**Prazo de Resposta:**  
Até 15 dias úteis, conforme LGPD.

**ANPD (Autoridade Nacional de Proteção de Dados):**  
Em caso de descumprimento da LGPD, o usuário pode reclamar diretamente na ANPD:  
https://www.gov.br/anpd/pt-br/canais_atendimento

---

**Documento sujeito a atualizações periódicas.**  
**Versão:** 1.1 | **Data:** 12 de junho de 2026
