Skip to main content

Lifecycle · Article 2.13

Événements de chronologie : chaque type d'événement expliqué

Le composant Chronologie sur chaque page de détail de devis enregistre 21+ types d'événements. Voici la liste canonique avec descriptions et déclencheurs, utile pour auditer ce qui s'est passé sur un devis.

La Chronologie est votre piste d'audit. Chaque webhook, chaque clic, chaque envoi d'e-mail produit un événement. Nous les conservons pendant la durée de vie du devis (10 ans pour la conservation légale). Quand vous essayez de comprendre « attendez, quand le client a-t-il réellement signé ? » ou « la facture d'acompte est-elle jamais partie ? », la Chronologie est la source de vérité — même quand le badge de l'interface ou la confirmation par e-mail vous donnent une impression différente.

Why this works this way

Les événements de chronologie sont stockés dans le modèle ProposalTimelineEvent avec les champs : event_type (enum), created_by (Utilisateur ou null pour les initiés par le client), data (JSON : IPs, montants, preuves de signature, etc.), created_at (horodatage UTC). Ils sont en ajout uniquement — nous ne modifions ni ne supprimons jamais un événement. Si un processus est annulé (ex. statut rétabli), nous enregistrons un nouvel événement expliquant l'annulation, en laissant l'original intact.

### Référence : tous les types d'événements

ÉvénementDéclencheurMétadonnées clés
createdDevis enregistré pour la première foiscreated_by user
sentLe freelancer clique sur Envoyerto_email, sent_from_ip
viewedLe client ouvre le lien pour la première fois avec un PIN valideviewer_ip, user_agent
signedLe client clique sur Signer sur la page publiquesigner_name, signer_ip, ua, signed_at, consent
pdf_generatedLe rendu PDF asynchrone est terminédoc_type (PRO/AGR/CON/DEP/INV/STR/DCR/CRN/REC), r2_key
deposit_paidWebhook Stripe ou marquage manuelmethod, amount, payment_intent_id
final_invoice_issuedLe freelancer émet la facture de soldeinvoice_number, total
payment_received (solde)Webhook Stripe ou marquage manuelmethod, amount
completedLe freelancer marque comme terminénotes
declinedLe client refuse sur la page publiquedecline_reason
expiredTâche cron de 90 joursdays_since_sent
archivedLe freelancer archivereason
amendment_proposedAvenant crééamendment_id, delta_total
amendment_viewedLe client ouvre le lien d'avenantviewer_ip
amendment_signedLe client signe l'avenantsigner_name, ip, evidence_stack
amendment_declinedLe client refuse l'avenantdecline_reason
amendment_cancelledLe freelancer annule l'avenant avant la signaturecancelled_by
amendment_expiredExpiration d'avenant à 90 jours
refund_initiatedFlux de remboursement déclenchécredit_note_number, amount
refund_completedWebhook Stripe ou marquage manuelmethod, completed_at

Troubleshooting

Keep reading

Événements de chronologie : chaque type d'événement expliqué · Help · Clozo