Docs

Ciclo de Vida de la Invitacion

Documento tecnico que describe el ciclo de vida completo de una invitacion en Nvito, incluyendo la maquina de estados, los flujos de creacion para invitaciones internas y externas, el pipeline de publicacion, el versionamiento y los mecanismos de cierre.

CampoValor
Version1.0
FechaMarzo 2026
EstadoPublicado
AudienciaEquipo de desarrollo, arquitectos

1. Maquina de Estados

Cada invitacion 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

TransicionDeAActorValidaciones
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 despublicacion
ClosePUBLISHEDCLOSEDUsuario o SistemaRegistra closeReason y closedBy
ReopenCLOSEDPUBLISHEDUsuarioEvento debe estar ACTIVE, fecha vigente

2. Tipos de Invitacion (InvitationSource)

Nvito soporta dos origenes de invitacion, discriminados por el enum InvitationSource:

2.1 Invitacion Interna (INTERNAL)

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

Caracteristicas:

  • Template base seleccionado del catalogo 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)
  • Versionamiento interno (max 50 versiones)
  • Generacion HTML automatica al publicar

2.2 Invitacion Externa (EXTERNAL)

HTML disenado fuera de Nvito, cargado manualmente.

Caracteristicas:

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

2.3 Comparativa

AspectoINTERNALEXTERNAL
CreacionTemplate + IA + EditorUpload HTML
EdicionVisual, por seccionesRe-upload completo
VersionesSi (max 50)No
SeccionesSi (Hero, RSVP, etc.)No
TemasSiNo
TransicionesSi (27 tipos)No
LoadersSi (25 tipos)No
PublicacionGenera HTML + CDNVerifica htmlUrl
AnaliticasSiSi
PreviewSiSi
RSVPSiSi (si incluye formulario)

3. Flujo de Creacion — Invitacion Interna


4. Flujo de Creacion — Invitacion Externa


5. Pipeline de Publicacion

El flujo de publicacion es el proceso mas critico del ciclo de vida. Transforma una invitacion aprobada en una pagina web accesible publicamente.


6. Versionamiento (Solo Internas)

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

AspectoDetalle
Max versiones50 por invitacion
Que se versionaContenido de secciones, configuracion de tema, transiciones, loaders
Cuando se crea versionAl guardar cambios significativos (no auto-save)
RollbackRestaura una version anterior como version actual
Impacto en publicacionEl rollback no republica — requiere nuevo ciclo de aprobacion

7. Secciones de Invitacion (Solo Internas)

Las invitaciones internas se componen de secciones modulares:

SeccionRequeridaDescripcion
HeroSiPortada con nombres, fecha y mensaje principal
RSVPSiFormulario de confirmacion de asistencia
LocationNoMapa y direccion del venue
ItineraryNoPrograma del evento con horarios
GalleryNoGaleria de fotos
GiftRegistryNoMesa de regalos y fondos de efectivo
AccommodationNoOpciones de hospedaje
DressCodeNoCodigo 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 invitacion puede cerrarse por multiples razones:

MecanismocloseReasonActorDescripcion
ManualMANUALUsuarioEl organizador cierra la invitacion explicitamente
Evento completadoEVENT_COMPLETEDSistemaEventSchedulerService cierra invitaciones al completar evento
Evento canceladoEVENT_CANCELLEDSistemaAl cancelar evento, todas las invitaciones se cierran

8.1 Reapertura

Una invitacion cerrada puede reabrirse si:

  • El evento esta 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 revalidacion ISR.


9. Restricciones y Limites

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

10. Archivos Clave

ArchivoUbicacionResponsabilidad
invitations.service.tssrc/modules/invitations/CRUD de invitaciones, validaciones de negocio
invitation-lifecycle.service.tssrc/modules/invitations/services/Gestion de estados y transiciones
approval-workflow.service.tssrc/modules/invitations/services/Pipeline de aprobacion y publicacion
html-generation.service.tssrc/modules/invitations/services/Generacion 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/Validacion 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 invitacion
themes.service.tssrc/modules/invitations/services/Configuracion de temas visuales

11. Relacion con Otros Flujos

Flujo relacionadoRelacion
Ciclo de Vida del EventoLa publicacion activa el evento; el cierre del evento cierra invitaciones
Flujo del InvitadoLos invitados interactuan con invitaciones publicadas (RSVP, visualizacion)
Flujo de ComunicacionesLas campanas incluyen el link a la invitacion publicada
Esta pagina fue util?