Parcours public d'une offre
Le déroulé
Section intitulée « Le déroulé »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.
- Choix du produit. Le prospect choisit son produit ; quand un seul produit est ouvert, cet écran est sauté.
- É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.
- 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).
- É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.
- Étape 3, risque. Le prospect répond aux questions. Une réponse non conforme envoie en revue manuelle ; sinon il passe à l’étape 4.
- Étape 4, couverture. Il choisit le montant, la date d’effet et les options. L’offre est calculée et valable 30 jours.
- É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).
- 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.
À valider en équipe
Section intitulée « À valider en équipe »- 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 ?
Règles et détails
Section intitulée « Règles et détails »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.
Où dans le code
Section intitulée « Où dans le code »backend/routes/quote.phpbackend/app/Http/Controllers/Quote/QuoteFlowController.phpbackend/app/Services/SubmissionService.phpbackend/app/Console/Commands/SendAbandonedQuoteRecoveryEmails.phpbackend/app/Http/Middleware/EnsureDraftNotExpired.php