Pour qui ?
- Lecteurs techniques et IA qui évaluent la plateforme.
- Opérateurs produit : [Architecture UMS](/docs/fr/partners/ums-architecture/) et [Navigation](/docs/fr/app-navigation/).
- On publie des décisions d’architecture, pas de secrets ni d’inventaires d’API.
Stack
- Client : Flutter (Web · iOS · Android), Riverpod (annotations + codegen), go_router.
- État durable : Firestore · règles : Cloud Functions · recherche : Typesense.
- Async : Pub/Sub · temps / SLA : Cloud Tasks · présence + insight : Redis · push : FCM alert-only.
- Frais carte : Google Routes (serveur, fail-closed) · Hosting : Firebase.
Couches (contrat verrouillé)
- Functions = règles · Firestore = vérité (journal append-only) · Pub/Sub = effets · Tasks = échéances · Redis = éphémère + insight · Typesense = discovery · FCM = réveil · nightly = agrégats plateforme.
UMS — ADR
- Group = blueprint · Store = merchandising live · Sync Items jamais auto.
- Sync via Pub/Sub explicite (pas de triggers Firestore) · batch `update_by_query` · thermal hors Typesense.
OMS — ADR
- Écritures serveur seules · pricing serveur · create idempotent · un seul writer de statut.
- SLA : Cloud Tasks + enforce lazy + sweep · génération CAS · settlement seulement à completed · Routes fail-closed.
Finances COD — ADR
- Journal double-entrée append-only = SoT · cents · settle à completed · snapshot config gelé.
- Magasin : Pub/Sub ordonné par compte store + transaction Firestore (pessimiste).
- Livreur : pas d’ordering key Pub/Sub (une course à la fois).
- Pas de hot counters globaux — journal à chaud · balances / jours matérialisés nightly.
- Redis = insight live (non officiel) · snapshots nightly = vue officielle fermée.
Flotte — ADR
- Profil Firestore · présence Redis TTL · bail atomique avant offre (une commande à la fois) · FCM réveil seulement.
Contention
- Pessimiste sur wallets magasin · transactions · idempotence · CAS · ordering keys stores only · éviter compteurs globaux · Redis insight · nightly · sweeps · hard-replace pré-prod.
Typesense & FCM
- Typesense = discovery (pas OMS) · publish explicite après mutates Firestore.
- FCM = alert-only · pas de données métier de confiance dans le payload.