Issue #16 — Telas MVP de e-mails
Objetivo
Criar um painel administrativo mínimo para o gestor revisar e-mails coletados e classificados pela Secretária Virtual.
Regra principal
Nenhum e-mail é enviado nesta issue. Aprovar uma resposta significa apenas preparar a resposta para envio futuro, mantendo sent_at = null.
Tela
Arquivo criado:
docs-site/static/admin/emails.html
A tela usa fetch e envia o cabeçalho X-Admin-Token, seguindo o padrão do painel administrativo existente.
Endpoints
GET /api/admin/emails/dashboardGET /api/admin/emails/messagesGET /api/admin/emails/messages/{message}GET /api/admin/emails/messages/{message}/auditPATCH /api/admin/emails/messages/{message}/no-actionPATCH /api/admin/emails/suggested-replies/{reply}PATCH /api/admin/emails/suggested-replies/{reply}/approvePATCH /api/admin/emails/suggested-replies/{reply}/rejectPATCH /api/admin/emails/suggested-actions/{action}/approvePATCH /api/admin/emails/suggested-actions/{action}/rejectPATCH /api/admin/emails/suggested-actions/{action}/doneGET/POST/PATCH /api/admin/email-accountsPOST /api/admin/email-accounts/{account}/test-connectionPOST /api/admin/email-accounts/{account}/sync-foldersPOST /api/admin/email-accounts/{account}/sync-inboxPOST /api/admin/emails/classify-collectedPOST /api/admin/emails/messages/{message}/classify
Segurança
- Senhas IMAP/SMTP nunca são retornadas pela API.
- Senhas vazias em edição preservam o valor atual.
body_htmlnão é retornado por padrão.- A tela usa
escapeHtmle preferebody_text. - Auditoria não grava senha, corpo de e-mail ou headers brutos.
Operações manuais
O painel permite testar conexão, sincronizar pastas, coletar INBOX e classificar mensagens manualmente com limite baixo.
Próxima etapa
A Issue #17 deverá implementar envio SMTP apenas para respostas previamente aprovadas pelo gestor.