Module — Parcours fin 2 (envoi multi-destinataires + escalade)¶
Ce module documente les 4 mécanismes d'envoi mis en œuvre dans le tunnel « Envoi à votre assureur » selon les caractéristiques du sinistre (tier impliqué, cause Travaux, souscription Dommages-Ouvrage).
Synthèse des 4 mécanismes¶
| Mécanisme | Trigger | Destinataires | Synchronisation | Tarif |
|---|---|---|---|---|
| M1 — Envoi mono | Pas de tier, hors Travaux/DO | 1 LRE → multirisques | Instantané | 7,50 € (ou Email gratuit) |
| M2 — Escalade séquentielle | Pas de tier, Travaux + DO souscrite + couverture All/Partial | 1 LRE → Dommages-Ouvrage, puis push J+8 → relance multirisques | Séquentiel + attente 8 jours | 7,50 € + 7,50 € (2 paiements) |
| M3 — Triple simultané | Tier impliqué + DO concernée | 3 LRE en parallèle : DO + multi + tier | Tous au même paiement combiné | 22,50 € (3 × 7,50 €) — 1 PaymentIntent Stripe |
| M4 — Double simultané | Tier impliqué, DO non concernée | 2 LRE en parallèle : multi + tier | Tous au même paiement combiné | 15,00 € (2 × 7,50 €) — 1 PaymentIntent Stripe |
Le choix LRE / Email est par destinataire sur les mécanismes M3 et M4 — l'utilisateur peut décider d'envoyer une LRE à la multirisques et un email gratuit au tier (par exemple). Le récap dynamique du paywall agrège les choix : numérotation continue des LRE, badge « Gratuit » sur les emails, total = 7,50 € × nombre de LRE. Si tout est en email, pas de tunnel Stripe.
Mécanismes 3 et 4 — Envoi multi-destinataires simultané¶
Parcours conditionnel déclenché quand Claim::origin est ThirdPartyToMe ou MeToThirdParty (un tier est impliqué dans le sinistre). À la différence des mécanismes 1 et 2 où l'on attend la réponse de l'assureur initial avant d'escalader, ici on shippe tous les destinataires en parallèle au moment du paiement combiné. Pas de temps d'attente entre envois.
Trigger backend¶
InsurancePolicyResolver::resolvePlan($claim) retourne un DispatchPlan avec :
- mechanism = M3 ou M4 selon damage_ouvrage_subscription + damage_ouvrage_areas_coverage
- recipients ordonnés DO → multi → tier (M3) ou multi → tier (M4)
Le tier est résolu via Contact::role :
- origin = ThirdPartyToMe → Contact::role = ThirdParty
- origin = MeToThirdParty → Contact::role = ThirdPartyVictim
Une ValidationException est levée si aucun contact tier n'est persisté en base — l'écran mobile doit avoir collecté l'info dans le tronc commun avant l'envoi.
Écrans mobile¶
Le parcours traverse 4 à 6 écrans en séquence linéaire après la signature du rapport :
- Intro tier-aware — explication de la double déclaration + invitation à notifier le tier (2 encarts info).
- Page pédagogique LRE — pitch « Légale / Rapide / Sécurisée / Économique » + ChoiceCard discrète email fallback.
- Déclaration n°1 → Dommages-Ouvrage (uniquement en M3) — card destinataire + CTAs
Confirmer et continuer(LRE) /Passer et envoyer par email uniquement(Email). - Déclaration → Multirisques — même structure.
- Notification au tier — même structure, recipient =
Contacttier au lieu deInsurancePolicy. - Récap paywall combiné — liste dynamique des ChoiceCards + total + CTA
Payer XX,XX €ouConfirmer les envois(si tout en email).
Sur chaque écran « Déclaration n°X », un CTA secondaire « Modifier » ouvre un overlay AppOverlayBottomSheet qui patche les coordonnées (PATCH /api/v1/claims/{claim}/dispatch-recipients/{kind} côté backend). Email + nom obligatoires (AR24 les requiert), adresse postale facultative.
Persistance backend¶
Au tap du CTA récap, le mobile pousse les choix accumulés via :
POST /api/v1/claims/{claim}/dispatches/combined-payment-intent
{
"recipients": [
{"recipient_kind": "DAMAGE_OUVRAGE", "mode": "REGISTERED_LETTER"},
{"recipient_kind": "MULTIRISQUES", "mode": "REGISTERED_LETTER"},
{"recipient_kind": "THIRD_PARTY", "mode": "EMAIL"}
]
}
Le backend :
- Vérifie que le set de recipient_kind correspond exactement au plan résolu (422 sinon).
- Crée N dispatches en CREATED reliés par un même dispatch_group_id (ULID).
- Crée 1 PaymentIntent Stripe sur la somme des LRE (skip si tout en email).
- Enqueue immédiatement SendEmailDispatchJob pour les destinataires en EMAIL (gratuit, hors tunnel Stripe).
- Attend le webhook payment_intent.succeeded pour fan-out SendRegisteredMailJob sur les LRE.
Lettre tier dédiée¶
Le destinataire tier reçoit un template d'AR24 distinct (lang/{fr,en}/dispatch.php clé lre.body_template_third_party) — courrier informatif, ni mise en demeure ni réclamation. ⚠️ À valider juridiquement par Tom / cabinet Homy avant production.
Côté AR24, to_statut est dérivé du rôle métier via ContactRole::ar24Statut() :
- ThirdParty / ThirdPartyVictim / ThirdPartyInjured / Tenant / Owner / Declarant → particulier
- Agency / WorksContractor / WorksGpaContractor / WorksGpaBuilder → professionnel
Suivi empilé¶
ClaimDispatchTrackingScreen détecte les dispatches partageant un dispatch_group_id et empile N timelines avec un sub-header par destinataire (recipient.name exposé par le DTO DispatchData). Pas d'écran de suivi unifié dédié en V1 — chaque destinataire a sa timeline AR24 propre, mises à jour indépendamment par le webhook AR24.
Mécanisme 2 — Escalade séquentielle Dommages-Ouvrage¶
Parcours conditionnel déclenché après l'envoi initial à la Dommages-Ouvrage quand celle-ci ne répond pas dans les délais impartis. Réservé aux sinistres sans tier impliqué (sinon on bascule sur M3 ou M4). La maquette historique nomme ce module « parcours fin 2 ».
Vue d'ensemble¶
flowchart LR
A[Envoi LRE à l'entreprise] -->|Pas de réponse délais impartis| B[Encart aucune réponse]
B --> C[Question coords RC Pro/Décennale]
C -->|Oui| D[Form coords RC]
C -->|Non| E[Recherche assurance]
D --> F[Envoi du constat à la DO]
E --> F
F --> G((Confirmation envoi))
Déclencheur¶
Affichage d'un encart rouge :
Aucune réponse de votre lettre recommandée
Malheureusement, nous n'avons pas reçu de réponse de votre lettre recommandée dans les délais impartis.
| État initial | Oui sélectionné | Non sélectionné |
|---|---|---|
![]() |
![]() |
![]() |
Question Coordonnées RC¶
Identique à celle déjà rencontrée dans le routage DO :
« Connaissez-vous les coordonnées de l'assureur Responsabilité Civile Pro et/ou Responsabilité Décennale du promoteur/constructeur ? » Oui / Non
Si Oui — Formulaire coordonnées DO¶
L'utilisateur saisit les coordonnées de l'assureur Dommages-Ouvrage du promoteur/constructeur :
| Champ | Type |
|---|---|
| Nom de l'assureur | text |
| Nom du contact | text |
| Adresse postale | text |
| N° de la police d'assurance | text |
| Joindre un document (facultatif) | upload |

Si Non — Recherche d'assurance¶
L'application propose un modal de recherche/sélection d'assureur dans une base prédéfinie (mêmes options que celles vues dans la branche +10 ans ou date inconnue).
Suite¶
Une fois les coordonnées renseignées, le flow enchaîne sur l'envoi du constat à la DO (voir finalisation.md § Module Envoi à la DO) puis sur la confirmation d'envoi.
| Progression | Confirmation envoi |
|---|---|
![]() |
![]() |
Refs Figma¶
| Élément | Ref maquette |
|---|---|
| Question initiale | MK:12368:33707 |
| RC Oui sélectionné | MK:12368:34703 |
| RC Non sélectionné | MK:12368:34763 |
| Form coords assureur DO | MK:12373:34838 |
| Confirmation envoi | MK:12368:33833 |
Spécifications complémentaires¶
Déclencheur métier (mind map)¶
Le mind map précise les règles de déclenchement :
« UNIQUEMENT SI MISE EN DEMEURE INFRUCTUEUSE, 8 jours après l'envoi de la lettre recommandée »
MM:74:4298/MM:279:9370Précision : « si mise en demeure infructueuse (pas de réponse ou réponse négative), l'utilisateur pourra déclarer à l'assureur Dommages-Ouvrage »
MM:74:4291Note développeur explicite : « DEV : maximum 8 jours après l'envoi de la lettre recommandée, notification dans l'application »
MM:249:8907
| Encart MED infructueuse 8j | Encart précision MED | Note développeur 8 jours notif | Encart fallback DO → multirisques |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Règles d'implémentation :
- Délai : 8 jours après l'envoi de la lettre recommandée à l'entreprise responsable.
- Conditions de déclenchement : MED infructueuse = pas de réponse ou réponse négative de l'entreprise.
- Notification dans l'application : à 8 jours sans réponse, l'application envoie une notification à l'utilisateur pour proposer le parcours fin 2 (déclaration à l'assureur DO).
Notes complémentaires¶
- Module en aval : reprend l'envoi à la DO (voir
finalisation.md) — donc 6 € supplémentaires AR24 si LRE. - Si pas de réponse de la DO non plus, le mind map prévoit un fallback vers l'assureur multirisques : « Si pas de réponse de la DO, envoi à la multirisques »
MM:370:14350/MM:522:6154. C'est un troisième niveau d'escalade après l'entreprise puis la DO. - Wording « parcours fin 2 » dans la maquette : nommage interne designer. À traduire en concept produit clair côté client (« Relance via l'assureur DO » ou « Escalade post-MED infructueuse »).








