Aller au contenu

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 = ThirdPartyToMeContact::role = ThirdParty - origin = MeToThirdPartyContact::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 :

  1. Intro tier-aware — explication de la double déclaration + invitation à notifier le tier (2 encarts info).
  2. Page pédagogique LRE — pitch « Légale / Rapide / Sécurisée / Économique » + ChoiceCard discrète email fallback.
  3. Déclaration n°1 → Dommages-Ouvrage (uniquement en M3) — card destinataire + CTAs Confirmer et continuer (LRE) / Passer et envoyer par email uniquement (Email).
  4. Déclaration → Multirisques — même structure.
  5. Notification au tier — même structure, recipient = Contact tier au lieu de InsurancePolicy.
  6. Récap paywall combiné — liste dynamique des ChoiceCards + total + CTA Payer XX,XX € ou Confirmer 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 / Declarantparticulier - Agency / WorksContractor / WorksGpaContractor / WorksGpaBuilderprofessionnel

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:9370

Pré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:4291

Note 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 »).