Pular para o conteúdo principal

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/dashboard
  • GET /api/admin/emails/messages
  • GET /api/admin/emails/messages/{message}
  • GET /api/admin/emails/messages/{message}/audit
  • PATCH /api/admin/emails/messages/{message}/no-action
  • PATCH /api/admin/emails/suggested-replies/{reply}
  • PATCH /api/admin/emails/suggested-replies/{reply}/approve
  • PATCH /api/admin/emails/suggested-replies/{reply}/reject
  • PATCH /api/admin/emails/suggested-actions/{action}/approve
  • PATCH /api/admin/emails/suggested-actions/{action}/reject
  • PATCH /api/admin/emails/suggested-actions/{action}/done
  • GET/POST/PATCH /api/admin/email-accounts
  • POST /api/admin/email-accounts/{account}/test-connection
  • POST /api/admin/email-accounts/{account}/sync-folders
  • POST /api/admin/email-accounts/{account}/sync-inbox
  • POST /api/admin/emails/classify-collected
  • POST /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_html não é retornado por padrão.
  • A tela usa escapeHtml e prefere body_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.