Docs

Ciclo de Vida de la Invitación

Desde la creación hasta la publicación y cierre de una invitación

PublicadoMarzo 2026Equipo de desarrollo, arquitectos, stakeholders

1. Maquina de Estados

Cada invitación en Nvito sigue un ciclo de vida de 4 estados. Las transiciones estan controladas por ApprovalWorkflowService, que valida las precondiciones de cada cambio de estado.

1.1 Diagrama de Estados

1.2 Transiciones

TransiciónDeAActorValidaciones
Crear[*]IN_CONSTRUCTIONUsuarioMax 3 invitaciones por evento, auto-genera slug
SubmitIN_CONSTRUCTIONUNPUBLISHEDUsuarioSecciones requeridas presentes (solo internas)
ApproveUNPUBLISHEDPUBLISHEDUsuarioGenera HTML (internas) o verifica htmlUrl (externas)
RejectUNPUBLISHEDIN_CONSTRUCTIONUsuarioRequiere razon de rechazo
UnpublishPUBLISHEDUNPUBLISHEDUsuarioWebhook de despublicación
ClosePUBLISHEDCLOSEDUsuario o SistemaRegistra closeReason y closedBy
ReopenCLOSEDPUBLISHEDUsuarioEvento debe estar ACTIVE, fecha vigente

2. Tipos de Invitación (InvitationSource)

Nvito soporta dos origenes de invitación, discriminados por el enum InvitationSource:

2.1 Invitación Interna (INTERNAL)

Creada con el motor de templates, IA conversacional y editor visual de Nvito.

Caracteristicas:

  • Template base seleccionado del catálogo o generado por IA
  • Secciones editables: Hero, RSVP, Location, Itinerary, Gallery, GiftRegistry, Accommodation, DressCode, FAQ
  • Temas personalizables con paleta de colores y tipografias
  • Transiciones fullpage (27 tipos: 10 clasicas + 17 cinematograficas)
  • Pantallas de carga (25 tipos: 8 CSS + 17 Canvas)
  • Versiónamiento interno (max 50 versiones)
  • Generación HTML automática al publicar

2.2 Invitación Externa (EXTERNAL)

HTML disenado fuera de Nvito, cargado manualmente.

Caracteristicas:

  • Upload de archivo HTML (max 5MB)
  • Validación de seguridad en 9 pasos (HtmlValidatorService)
  • Sin editor visual — re-upload completo para cambios
  • Sin versionamiento (siempre versión 1)
  • Sin secciones ni temas de Nvito
  • Publicación directa (skip HTML generation)

2.3 Comparativa

AspectoINTERNALEXTERNAL
CreaciónTemplate + IA + EditorUpload HTML
EdicionVisual, por seccionesRe-upload completo
VersiónesSi (max 50)No
SeccionesSi (Hero, RSVP, etc.)No
TemasSiNo
TransicionesSi (27 tipos)No
LoadersSi (25 tipos)No
PublicaciónGenera HTML + CDNVerifica htmlUrl
AnaliticasSiSi
PreviewSiSi
RSVPSiSi (si incluye formulario)

3. Flujo de Creación — Invitación Interna


4. Flujo de Creación — Invitación Externa


5. Pipeline de Publicación

El flujo de publicación es el proceso más critico del ciclo de vida. Transforma una invitación aprobada en una página web accesible publicamente.


6. Versiónamiento (Solo Internas)

Las invitaciones internas mantienen un historial de versiones que permite rollback.

AspectoDetalle
Max versiones50 por invitación
Que se versiónaContenido de secciones, configuración de tema, transiciones, loaders
Cuando se crea versiónAl guardar cambios significativos (no auto-save)
RollbackRestaura una versión anterior como versión actual
Impacto en publicaciónEl rollback no república — requiere nuevo ciclo de aprobacion

7. Secciones de Invitación (Solo Internas)

Las invitaciones internas se componen de secciones modulares:

SecciónRequeridaDescripción
HeroSiPortada con nombres, fecha y mensaje principal
RSVPSiFormulario de confirmación de asistencia
LocationNoMapa y direccion del venue
ItineraryNoPrograma del evento con horarios
GalleryNoGalería de fotos
GiftRegistryNoMesa de regalos y fondos de efectivo
AccommodationNoOpciones de hospedaje
DressCodeNoCódigo de vestimenta
FAQNoPreguntas frecuentes

Orden de secciones: Configurable por el usuario via drag-and-drop. Se almacena como array ordenado visibleSections.


8. Mecanismos de Cierre

Una invitación puede cerrarse por múltiples razones:

MecanismocloseReasonActorDescripción
ManualMANUALUsuarioEl organizador cierra la invitación explicitamente
Evento completadoEVENT_COMPLETEDSistemaEventSchedulerService cierra invitaciones al completar evento
Evento canceladoEVENT_CANCELLEDSistemaAl cancelar evento, todas las invitaciones se cierran

8.1 Reapertura

Una invitación cerrada puede reabrirse si:

  • El evento está en estado ACTIVE
  • La fecha del evento no ha pasado
  • El usuario tiene rol OWNER o ADMIN

La reapertura cambia el estado de CLOSED a PUBLISHED y dispara revalidación ISR.


9. Restricciones y Limites

RestriccionValor
Max invitaciones por evento3
Max versiones por invitación (interna)50
Max tamano HTML externo5 MB
SlugUnico global, alfanumerico + guiones, max 200 chars
Secciones requeridas (interna)Hero + RSVP

10. Archivos Clave

ArchivoUbicaciónResponsabilidad
invitations.service.tssrc/modules/invitations/CRUD de invitaciones, validaciones de negocio
invitation-lifecycle.service.tssrc/modules/invitations/services/Gestión de estados y transiciones
approval-workflow.service.tssrc/modules/invitations/services/Pipeline de aprobacion y publicación
html-generation.service.tssrc/modules/invitations/services/Generación de HTML para invitaciones internas
document-generator.service.tssrc/modules/invitations/services/Compilacion del documento final (HTML + CSS + JS)
html-validator.service.tssrc/modules/invitations/services/Validación de seguridad de HTML externo (9 pasos)
external-invitation.service.tssrc/modules/invitations/services/Upload, re-upload y download de HTML externo
sections.service.tssrc/modules/invitations/services/CRUD de secciones de invitación
themes.service.tssrc/modules/invitations/services/Configuración de temas visuales

11. Relación con Otros Flujos

Flujo relacionadoRelación
Ciclo de Vida del EventoLa publicación activa el evento; el cierre del evento cierra invitaciones
Flujo del InvitadoLos invitados interactuan con invitaciones publicadas (RSVP, visualización)
Flujo de ComunicacionesLas campanas incluyen el link a la invitación publicada
Esta pagina fue util?