Auditoría de Correos — Ecosistema LPDI

v2 completa | 2 junio 2026 | LAP-329

30
Total correos catalogados
22
En código + preview
4
Sin preview (código existe)
4
Supabase (dashboard)
2
Eliminados

USUARIO — Correos de cuenta y autenticación

10 correos
#NombreSubjectOrigenPreviewImgEstado
01 Confirm Signup "Confirma tu registro en el Ecosistema LPDI" Supabase N/A NO OK — Template en Supabase Dashboard
02 Magic Link "Tu enlace de acceso — Ecosistema LPDI" Supabase N/A NO OK — Template en Supabase Dashboard
03 Recovery / Reset Password "Restablecer tu contraseña — Ecosistema LPDI" Supabase N/A NO OK — Template en Supabase Dashboard
04 Email Change Confirmation "Confirma tu nuevo correo — Ecosistema LPDI" Supabase N/A NO OK — Template en Supabase Dashboard
05 Invitación Admin "Has sido invitado al Ecosistema LPDI" Supabase N/A NO OK — Invitación directa desde Dashboard. Reservado para uso admin.
06 Reautenticación OTP NUEVO "Código de verificación — Ecosistema LPDI" Supabase N/A NO OK — Código OTP para acciones sensibles
07 Notificación Correo Cambiado NUEVO "Tu correo electrónico ha sido actualizado — Ecosistema LPDI" Supabase N/A NO OK — Frank corrigió subject de "cambiado" a "actualizado"
08 Notificación Contraseña Cambiada NUEVO "Tu contraseña ha sido cambiada — Ecosistema LPDI" Supabase N/A NO OK — Notificación automática Supabase
09 Cuenta Eliminada "Tu cuenta en el Ecosistema LPDI ha sido eliminada" LPDI SI SI OKsendAccountDeletedEmail
10 Contraseña Actualizada NUEVO "Tu contraseña ha sido actualizada — Ecosistema LPDI" LPDI NO NO FALTA — EMAIL-022 existe en código pero NO en preview endpoint. Falta agregar a TEMPLATES.

STARTUP — Registro, equipo y ciclo de vida de Startups/PyMEs

17 correos
#NombreSubjectVariantesPreviewImgEstado
11 Startup Welcome "Bienvenido al Ecosistema LPDI — Confirma tu cuenta" 1 SI SI OKsendStartupWelcomeEmail
12 CEO Welcome "Bienvenido al Ecosistema LPDI" 2 (nuevo / existente) SI SI OKsendCeoWelcomeEmail
13 Startup Followup (Score) "Aumenta el score de tu perfil en el Ecosistema LPDI" 2 (low / mid) SI SI OKsendStartupFollowupEmail
14 Startup Reminder Día 3 "Recordatorio: confirma tu cuenta" 1 SI SI OKsendStartupReminderEmail (daysRemaining=4)
15 Startup Reminder Día 6 "Ultimo aviso: confirma tu cuenta" 1 SI SI OKsendStartupReminderEmail (isUrgent=true)
16 Team Invitation "{CEO} te ha incluido en el equipo de {empresa} — confirma tu registro" 4 (nuevo/existe x TyC/noTyC) SI SI OKsendTeamInvitationEmail
17 Team Welcome (con edición) "Bienvenido al equipo de {empresa} en el Ecosistema LPDI" 1 SI SI OKsendTeamWelcomeWithEditEmail
18 Team Welcome (sin edición) "Bienvenido al equipo de {empresa} en el Ecosistema LPDI" 1 SI SI OKsendTeamWelcomeNoEditEmail
19 Team Rejection Confirmation "Confirmación: no haces parte del equipo de {empresa}" 2 (con/sin recovery) SI SI OKsendTeamRejectionConfirmationEmail
20 CEO: Miembro Aceptó "{miembro} aceptó la invitación al equipo de {empresa}" 2 (con/sin edición) SI SI OKsendCeoMemberConfirmationEmail
21 CEO: Miembro Rechazó "{miembro} rechazó la invitación al equipo de {empresa}" 1 SI SI OKsendCeoMemberRejectionEmail
22 Cuenta Eliminada + Entidad "Tu cuenta y tu registro en el Ecosistema LPDI han sido eliminados" 1 NO NO FALTAsendAccountDeletedWithEntityEmail existe en código, NO en preview
23 Entidad Eliminada (Startup) "El registro de {X} ha sido eliminado del Ecosistema LPDI" 1 SI SI OKsendEntityDeletedEmail (startup)
24 Startup/ICG Purged "Tu registro ha expirado" 1 NO NO PENDIENTE — En índice de Frank pero NO encontrado en código. Posible merge con Reminder?
25 Cambio de Permisos "Cambio de permisos en {empresa}" 1 NO NO FALTA — EMAIL-021 sendPermissionChangeEmail existe en código, NO en preview
26 Entidad Restaurada (Startup) "{entidad} ha sido restaurado en el Ecosistema LPDI" 1 NO NO FALTA — EMAIL-020 sendEntityRestoredEmail existe en código, NO en preview
27 Entidad Restaurada (genérico) NUEVO "{entidad} ha sido restaurado en el Ecosistema LPDI" 1 NO NO FALTA — Aplica también a ICG (misma función). Frank lo lista como #27.

ICG — Registro y ciclo de vida de ICGs

3 correos
#NombreSubjectVariantesPreviewImgEstado
28 Contact Welcome ICG "{ICG} te ha asignado como contacto en el Ecosistema LPDI" 4 (nuevo/existe x icgnew/icgexists) SI SI OKsendContactWelcomeEmail
29 Entidad Eliminada (ICG) "El registro de {X} ha sido eliminado del Ecosistema LPDI" 1 SI SI OKsendEntityDeletedEmail (icg)
30 ICG Purged "Tu registro ha expirado" 1 NO NO PENDIENTE — En índice de Frank pero NO encontrado como función independiente en código

ELIMINADOS

2 correos
#NombreRazónLAP
E1 EMAIL-011: Usuario nuevo sin TyC Template inválido — usuario nuevo sin TyC es imposible por flujo de registro LAP-342 (in_progress)
E2 (por confirmar con Frank) Frank menciona 2 eliminados en el índice — verificar cuál es el segundo

Hallazgos y acciones pendientes

🔴
4 correos sin preview ni imagen

#10 (password-changed), #22 (account-deleted-with-entity), #25 (permission-change), #26 (entity-restored) existen en código pero NO fueron agregados al endpoint /api/dev/email-preview. Sin preview no se pueden generar imágenes para el reporte.

🟡
LAP-341 pendiente: EMAIL-010 descripción incorrecta

Ajustar descripción — no solo CEO, cualquier miembro con edición puede actualizar contraseña. Estado: in_progress.

🟡
LAP-342 pendiente: EMAIL-011 template inválido

Eliminar template de usuario nuevo sin TyC (es imposible por el flujo de registro). Estado: in_progress.

🟠
8 templates Supabase sin imagen en reporte

Correos 01-08 se gestionan en Supabase Dashboard. No tienen preview en /api/dev/email-preview. Para documentarlos visualmente habría que tomar screenshots del dashboard de Supabase.

🟠
Correos 24 y 30 (Purged) — no encontrados en código

"Tu registro ha expirado" aparece en el índice de Frank pero no se encontró una función sendPurgedEmail independiente. Verificar si es el mismo buildStartupReminderHtml con parámetros distintos o si falta implementar.

🔵
Reporte anterior en basic-memory desactualizado

criterios-diseño-emails-lpdi.md solo tenía 10 templates. Debe actualizarse a los 30 catalogados.