# MailAudit — Auditoria de E-mails

## 1. O que é o módulo

Módulo de consulta e monitoramento do histórico de envios de e-mail do sistema. Permite visualizar, filtrar e inspecionar detalhadamente cada envio realizado pelo MailService V2, incluindo status (enviado/falha), remetente, destinatário, assunto, corpo da mensagem e mensagens de erro.

**Namespace:** `V2\Modules\Infraestrutura\MailAudit`

## 2. Estrutura de dados

Não possui modelos Eloquent próprios. Opera diretamente sobre a tabela `v2_mail_logs` do MailService, lendo registros de log via `MailService::getHistory()`.

A tabela `v2_mail_logs` contém (campos usados pelo módulo):
- `id` (string) — identificador UUID do log
- `to_address` — destinatário
- `from_address` — remetente
- `subject` — assunto
- `body` — corpo da mensagem
- `status` — 'sent' | 'failed' | 'pending'
- `profile` — profile SMTP usado
- `error_message` — mensagem de erro (se houver)
- `message_id` — ID da mensagem no servidor SMTP
- `created_at`, `updated_at`, `sent_at`

## 3. Dependências

- **MailService** (`V2\Services\MailService\MailService`) — provedor de dados do histórico
- **V2PermissionMiddleware** — controle de acesso via `v2_can('MailAudit', 'read')`

## 4. Tabelas

Nenhuma tabela própria. Consome `v2_mail_logs` (pertencente ao MailService).

## 5. Arquivos

```
V2/Modules/Infraestrutura/MailAudit/
├── Controllers/
│   └── MailAuditCmsController.php       # index(), detail()
├── ModuleProvider.php                   # config: title, icon, active_pattern
├── README.md
├── Routes/
│   └── cms.php                          # prefix: cms/mail-audit
└── Views/
    └── cms/
        ├── index.blade.php              # Listagem + dashboard de estatísticas
        └── detail.blade.php             # Detalhamento de um envio
```

## 6. Observações/Sugestão

- Poderia se beneficiar de um modelo Eloquent próprio (ex: `MailLog`) para consultas mais eficientes e para integração com o Activity Logger (atualmente o detail recebe uma collection vazia de histórico).
- A filtragem é feita em memória via PHP (`filter()` + `take()`), o que não escala. Idealmente o MailService deveria aceitar parâmetros de filtro (status, search, profile) na query ao banco.
- Não há paginação real — o limite de 200 registros via `getHistory(200)` pode ser problemático em sistemas com alto volume de envio.
- Seria útil adicionar exportação CSV/JSON dos logs e filtro por período (data inicial/final).
