Aller au contenu

Parcours public d'une offre

flowchart TD
  subgraph P["Prospect"]
    n1["Choix du produit"]:::action
    n2["Étape 1 : entreprise<br/>recherche par TVA ou nom, secteur, site web"]:::action
    n5["Étape 2 : contact<br/>entreprise, chiffre d'affaires, contact, courtier facultatif"]:::action
    n8["Étape 3 : risque<br/>questions sur les pratiques"]:::action
    n9["Étape 4 : couverture<br/>montant, date d'effet, options"]:::action
    n13["Étape 5 : offre<br/>fréquence, moyen de paiement, conditions"]:::action
  end
  subgraph S["Système"]
    n3["Demande créée en brouillon<br/>jeton de reprise, courtier du lien"]:::status
    n4["Analyse flash du site<br/>tâche de fond, résultat aux étapes 2 à 5"]:::external
    n7["Contrôle d'éligibilité<br/>code d'activité lu à la BCE"]:::status
    n11["Offre calculée<br/>valable 30 jours"]:::status
    n12["EMAIL : Rappel de demande<br/>À : contact du prospect<br/>Type : relance"]:::email
    n6["Brouillon inactif 30 jours<br/>lien expiré, retour au choix du produit"]:::problem
    n14["Paiement Stripe"]:::external
  end
  subgraph E["Équipe Inqase et courtier"]
    n10["Revue manuelle<br/>voir le flux Revue manuelle"]:::problem
    n15["Transmission à un courtier<br/>voir le flux Transmission"]:::action
  end
  n1 -->|"choisit un produit"| n2
  n2 -->|"valide l'entreprise"| n3
  n3 -->|"lance en tâche de fond"| n4
  n3 -->|"ouvre l'étape 2"| n5
  n5 -->|"envoie le contact"| n7
  n7 -->|"éligible"| n8
  n7 -->|"secteur refusé, TVA bloquée ou chiffre d'affaires trop élevé"| n10
  n8 -->|"réponses conformes"| n9
  n8 -->|"réponse non conforme"| n10
  n9 -->|"choisit le montant"| n11
  n11 -->|"affiche l'offre"| n13
  n13 -->|"accepte et paie"| n14
  n13 -->|"demande un courtier"| n15
  n3 -->|"24 h puis 7 jours après la création"| n12
  n12 -->|"le lien ramène à l'étape la plus avancée"| n5
  n3 -->|"30 jours sans modification"| n6
  classDef action fill:#ffe86d,stroke:#a28e26,color:#574900
  classDef status fill:#9ce6ff,stroke:#2c97bb,color:#1c4657
  classDef problem fill:#ffb575,stroke:#b8742f,color:#5a2d00
  classDef email fill:#b8acfb,stroke:#8a7be0,color:#231266
  classDef external fill:#e5e7eb,stroke:#9ca3af,color:#374151

Le schéma suit le prospect de haut en bas : chaque contrôle (éligibilité, réponses de risque) peut l’envoyer en revue manuelle, et la demande en brouillon porte à la fois le rappel par email et l’expiration.

  1. Choix du produit. Le prospect choisit son produit ; quand un seul produit est ouvert, cet écran est sauté.
  2. Étape 1, entreprise. Il cherche son entreprise par numéro de TVA ou par nom, indique son secteur et son site web. La demande est créée en brouillon avec un jeton de reprise ; si le prospect arrive par le lien d’un courtier, ce courtier est rattaché à la demande.
  3. Analyse flash. Au même moment, le système analyse le site web en tâche de fond. Le résultat s’affiche aux étapes 2 à 5 (ou un message « indisponible » : l’analyse est limitée à 5 par adresse et par jour).
  4. Étape 2, contact. Le prospect confirme l’entreprise, déclare son chiffre d’affaires, saisit son contact et peut choisir un courtier de l’annuaire (le choix n’existe pas s’il vient du lien d’un courtier). Le système lit alors le code d’activité à la Banque-Carrefour des Entreprises (BCE) : secteur exclu, TVA bloquée ou chiffre d’affaires de plus de 25 millions envoient en revue manuelle.
  5. Étape 3, risque. Le prospect répond aux questions. Une réponse non conforme envoie en revue manuelle ; sinon il passe à l’étape 4.
  6. Étape 4, couverture. Il choisit le montant, la date d’effet et les options. L’offre est calculée et valable 30 jours.
  7. Étape 5, offre. Il choisit la fréquence et le moyen de paiement, accepte les conditions, puis paie sur Stripe (voir Paiement). Il peut aussi demander l’avis d’un courtier (voir Transmission à un courtier).
  8. Reprise. Le lien d’un email de rappel ramène à l’étape la plus avancée atteinte. Passé 30 jours sans modification, le lien expire et le prospect repart du choix du produit.
  • Les rappels : la tâche tourne une fois par jour à 10 h, mais chaque rappel ne vise qu’une fenêtre d’une heure après la création (24 à 25 h, puis 7 jours). La plupart des demandes abandonnées ne sont jamais relancées. Faut-il corriger ?
  • Les rappels partent depuis la création de la demande, pas depuis la dernière activité du prospect, et seulement une fois l’étape 2 passée (un contact est connu). Est-ce voulu ?
  • L’email s’appelle « Rappel de demande » dans le dessin d’origine et « Demande abandonnée » dans la page des emails. Quel nom garde-t-on ?
  • Le sujet de l’email parle toujours d’assurance cyber, même pour l’autre produit. Faut-il l’adapter au produit ?
  • L’expiration à 30 jours touche toute demande non payée, y compris une offre déjà calculée. Faut-il un dernier rappel avant l’expiration ?
  • Quand une demande part en revue manuelle, plus aucun rappel n’est envoyé et personne n’est prévenu chez Inqase (voir le flux Revue manuelle). Est-ce acceptable ?

Les statuts traversés sont décrits dans Cycle de vie d’une offre, les emails dans Emails et le calcul de la prime dans Tarification. Les autres entrées d’une offre : Offre créée par un courtier.

  • backend/routes/quote.php
  • backend/app/Http/Controllers/Quote/QuoteFlowController.php
  • backend/app/Services/SubmissionService.php
  • backend/app/Console/Commands/SendAbandonedQuoteRecoveryEmails.php
  • backend/app/Http/Middleware/EnsureDraftNotExpired.php