Skip to main content

Lifecycle · Article 2.13

Eventos de la línea de tiempo: cada tipo de evento explicado

El componente de línea de tiempo de cada página de detalle de propuesta registra más de 21 tipos de evento. Esta es la lista canónica con descripciones y disparadores, útil al auditar qué ha sucedido en una propuesta.

La línea de tiempo es su rastro de auditoría. Cada webhook, cada clic y cada envío de correo produce un evento. Los conservamos durante toda la vida de la propuesta (10 años por conservación legal). Cuando esté intentando averiguar "un momento, ¿cuándo firmó realmente el cliente?" o "¿llegó a salir la factura de anticipo?", la línea de tiempo es la fuente de verdad — incluso cuando la insignia de la interfaz o el correo de confirmación den una impresión distinta.

Why this works this way

Los eventos de la línea de tiempo se almacenan en el modelo ProposalTimelineEvent con los campos: event_type (enum), created_by (User o null si lo dispara el cliente), data (JSON: IPs, importes, pruebas de firma, etc.), created_at (marca de tiempo UTC). Son de solo añadir — nunca editamos ni borramos un evento. Si se deshace un proceso (p. ej., un estado revertido), registramos un evento nuevo que explica el deshacer, dejando intacto el original.

### Referencia: todos los tipos de evento

EventoDisparadorMetadatos clave
createdPrimera vez que se guarda la propuestacreated_by user
sentEl autónomo hace clic en Enviarto_email, sent_from_ip
viewedEl cliente abre el enlace por primera vez con un PIN válidoviewer_ip, user_agent
signedEl cliente hace clic en Firmar en la página públicasigner_name, signer_ip, ua, signed_at, consent
pdf_generatedEl render asíncrono del PDF terminadoc_type (PRO/AGR/CON/DEP/INV/STR/DCR/CRN/REC), r2_key
deposit_paidWebhook de Stripe o marca manualmethod, amount, payment_intent_id
final_invoice_issuedEl autónomo emite la factura finalinvoice_number, total
payment_received (final)Webhook de Stripe o marca manualmethod, amount
completedEl autónomo marca como completadanotes
declinedEl cliente rechaza en la página públicadecline_reason
expiredCron de 90 díasdays_since_sent
archivedEl autónomo archivareason
amendment_proposedAnexo creadoamendment_id, delta_total
amendment_viewedEl cliente abre el enlace del anexoviewer_ip
amendment_signedEl cliente firma el anexosigner_name, ip, evidence_stack
amendment_declinedEl cliente rechaza el anexodecline_reason
amendment_cancelledEl autónomo cancela el anexo antes de la firmacancelled_by
amendment_expiredCaducidad del anexo a 90 días
refund_initiatedFlujo de reembolso disparadocredit_note_number, amount
refund_completedWebhook de Stripe o marca manualmethod, completed_at

Troubleshooting

Keep reading

Eventos de la línea de tiempo: cada tipo de evento explicado · Help · Clozo