Sc 12 — Réservation multi-colis (8 kg partagé)
Un expéditeur réserve 8 kg sur une annonce en créant 3 sous-réservations (un parent + deux enfants). Chaque enfant correspond à un colis distinct, mais un seulPaymentIntent paie l’ensemble.
Cycle parent ↔ enfants
Endpoint enfants
Particularités
- Un seul
PaymentIntentStripe sur le parent - Refund cascade sur enfants en cas d’annulation
- Transitions parent → enfants automatiques (ACCEPTEE, EN_COURS_DE_LIVRAISON, LIVREE, ANNULEE)
- Si un enfant tombe en LITIGE → ne bloque pas les autres enfants
2023944
Sc 13 — Agence B2B publie annonce groupée
Module dédiécolismove-agency (74 fichiers, 11 use cases hex). Une agence professionnelle gère plusieurs branches et employés, et publie des annonces groupées (par exemple un convoi régulier Yaoundé → Paris).
Structure agence
| Entité | Description |
|---|---|
| Agence | Compte B2B mère, KYC docs, Stripe Connect platform |
| Branche | Filiale par ville/région |
| Employé | Carrier individuel rattaché à une branche |
| Annonce groupée | Publiée par l’agence, affectée à un employé après acceptation |
Tests E2E
Modulecolismove-agency couvert par tests d’intégration en CI continue.
Sc 14 — Anti-contournement chat (regex filtre)
Service Firebase Firestore avec filtre regex appliqué côté backend (pas Firestore rules) pour détecter et bloquer les patterns d’évasion de plateforme (numéros de téléphone, emails, liens externes).Patterns bloqués
- Numéros de téléphone (avec ou sans indicatif)
- Adresses email
- Liens externes (
http://,www.) - Identifiants WhatsApp / Telegram
Sc 15 — Prix par catégorie
Epic 4 complète (stories 4.1 → 4.11). Permet à un transporteur de définir un prix par kg différent par catégorie acceptée (ex : électronique 8€/kg, documents 2€/kg).Modèle domain (Story 4.2)
Backward compat 100%
- Annonces existantes avec
pricePerKgglobal → continuent de fonctionner category.pricePerKg = NULL→ fallbackannonce.pricePerKgvia SQLCOALESCE- Plafond 999€/kg validé côté domain
SQL recherche (Story 4.10)
Stories Epic 4
| # | Story | Statut |
|---|---|---|
| 4.1 | V21 migration price_per_kg nullable | Done |
| 4.2 | Domain effectivePricePerKg + record CategoriePricing | Done |
| 4.3 | REST DTOs dual format | Done |
| 4.4 | CalculPrixReservationService BigDecimal HALF_UP | Done |
| 4.5 | Persistence prix per-ligne | Done |
| 4.6 | Filtre prix-effectif recherche | Done |
| 4.7 | AnnonceCategorieResult enrichi | Done |
| 4.8 | Stripe charge multi-prix domain | Done |
| 4.9 | categorieFilter recherche | Done |
| 4.10 | Specs SQL avancées | Done |
| 4.11 | JMH bench P95 < 200ms / 50k dataset | Pending |
Récap modules impactés
| Scénario | Modules backend |
|---|---|
| Sc 12 | colismove-reservation (cascade), colismove-finances (single PaymentIntent) |
| Sc 13 | colismove-agency (74 fichiers dédiés) |
| Sc 14 | Service Firebase Firestore (côté backend, pas rules) |
| Sc 15 | colismove-annonces, colismove-reservation, colismove-finances |