Skip to main content

Base de données - MongoDB

Vue d'ensemble

Tranoo utilise MongoDB comme base de données principale, avec Mongoose comme ODM (Object Data Modeling). La base de données contient 35 modèles Mongoose actifs dans src/models/ (plus PropositionTransit.js, obsolète).

Stack technique

ComposantTechnologieVersion
Base de donnéesMongoDB^6.18.0
ODMMongoose^8.16.1

Structure des modèles

Utilisateurs & Authentification (4 modèles)

User.js

Utilisateurs de tous rôles (acheteurs, vendeurs, transitaires, chauffeurs, agents, admins)

Champs principaux :

  • uid - Firebase UID
  • email - Email (synthétique pour téléphone)
  • telephone - Numéro de téléphone réel
  • nom - Nom
  • prenoms - Prénoms
  • role - Rôle utilisateur
  • photo - URL photo profil
  • statut - Statut compte
  • fcmToken - Token FCM notifications
  • createdAt, updatedAt - Timestamps

UserDevice.js

Appareils utilisateurs pour tracking multi-device

Champs principaux :

  • userId - Référence User
  • deviceId - Identifiant appareil
  • platform - Platform (ios/android/web)
  • lastUsed - Dernière utilisation

AuthEvent.js

Événements d'authentification pour audit

Champs principaux :

  • userId - Référence User
  • eventType - Type événement (login/logout/register)
  • ipAddress - Adresse IP
  • userAgent - User agent
  • timestamp - Horodatage

PasswordResetRequest.js

Demandes de réinitialisation mot de passe

Champs principaux :

  • userId - Référence User
  • otp - Code OTP
  • expiresAt - Expiration
  • used - Utilisé ou non

Commerce (5 modèles)

Article.js

Articles/produits (véhicules, motos, pièces détachées)

Champs principaux :

  • titre - Titre article
  • description - Description
  • prix - Prix
  • devise - Devise
  • categorie - Catégorie
  • images - URLs images
  • vendeurId - Référence vendeur
  • statut - Statut (actif/inactif)
  • stock - Quantité disponible
  • createdAt, updatedAt

Achat.js

Achats effectués par les acheteurs

Champs principaux :

  • acheteurId - Référence acheteur
  • articleId - Référence article
  • quantite - Quantité
  • prixUnitaire - Prix unitaire
  • montantTotal - Montant total
  • statut - Statut achat
  • createdAt

Order.js

Commandes regroupant plusieurs achats

Champs principaux :

  • acheteurId - Référence acheteur
  • articles - Liste articles commandés
  • montantTotal - Montant total
  • statut - Statut commande
  • adresseLivraison - Adresse livraison
  • createdAt, updatedAt

Invoice.js

Factures générées pour les commandes

Champs principaux :

  • orderId - Référence commande
  • numeroFacture - Numéro facture
  • montant - Montant
  • statutPaiement - Statut paiement
  • dateEmission - Date émission
  • datePaiement - Date paiement

InvoiceSequence.js

Séquence pour numérotation factures

Champs principaux :

  • sequence - Numéro séquence actuel
  • prefix - Préfixe facture

Livraison (5 modèles) — legacy

:::info Hors périmètre Ces modèles correspondent à l'ancien système de livraison interne. La livraison Tranoo est en cours de migration vers Livro (tiers). Voir Intégration Livro. :::

Delivery.js

Livraisons de commandes

Champs principaux :

  • orderId - Référence commande
  • livreurId - Référence livreur
  • statut - Statut livraison
  • positionActuelle - Coordonnées GPS actuelles
  • historiquePositions - Historique tracking
  • dateRamassage - Date ramassage
  • dateLivraison - Date livraison
  • createdAt, updatedAt

DeliveryZone.js

Zones de livraison géographiques

Champs principaux :

  • nom - Nom zone
  • description - Description
  • polygone - Coordonnées polygone
  • tarifBase - Tarif base
  • tarifKm - Tarif par km
  • actif - Actif ou non

DeliverySettings.js

Configuration système de livraison

Champs principaux :

  • tarifBase - Tarif base
  • tarifKm - Tarif kilométrique
  • delaiMax - Délai maximum livraison
  • actif - Actif ou non

LivreurBalance.js

Balance et gains des livreurs

Champs principaux :

  • livreurId - Référence livreur
  • balance - Solde actuel
  • gainsTotal - Gains totaux
  • retraits - Retraits effectués
  • historiqueTransactions - Historique

DemandeChauffeur.js

Demandes pour devenir chauffeur

Champs principaux :

  • userId - Référence utilisateur
  • documents - Documents fournis
  • statut - Statut demande
  • dateDemande - Date demande
  • dateValidation - Date validation

Paiements (4 modèles)

Payment.js

Transactions de paiement

Champs principaux :

  • userId - Référence utilisateur
  • montant - Montant
  • methode - Méthode paiement
  • reference - Référence transaction
  • statut - Statut paiement
  • type - Type (achat/abonnement/recharge)
  • createdAt

Subscription.js

Abonnements utilisateurs

Champs principaux :

  • userId - Référence utilisateur
  • type - Type abonnement
  • debut - Date début
  • fin - Date fin
  • statut - Statut (actif/expiré)
  • montant - Montant payé

SubscriptionPricing.js

Tarifs des abonnements

Champs principaux :

  • type - Type abonnement
  • dureeJours - Durée en jours
  • prix - Prix
  • devise - Devise
  • actif - Actif ou non

SellerGainPricing.js

Tarifs des commissions vendeurs

Champs principaux :

  • pourcentage - Pourcentage commission
  • montantMinimum - Montant minimum
  • actif - Actif ou non

Communication (3 modèles)

ChatRoom.js

Salons de chat

Champs principaux :

  • participants - Participants (array userId)
  • type - Type (direct/groupe)
  • dernierMessage - Référence dernier message
  • createdAt, updatedAt

Message.js

Messages de chat

Champs principaux :

  • roomId - Référence salon
  • expediteurId - Référence expéditeur
  • contenu - Contenu message
  • type - Type (texte/image/audio)
  • lu - Lu ou non
  • createdAt

Notification.js

Notifications push

Champs principaux :

  • userId - Référence utilisateur
  • titre - Titre notification
  • corps - Corps message
  • type - Type notification
  • donnees - Données additionnelles
  • lue - Lue ou non
  • createdAt

Transit (3 modèles)

Documentation détaillée : Transit international

TransitMission.js

Missions de transit international

Champs principaux :

  • transitaireId - Référence transitaire
  • origine - Origine expédition
  • destination - Destination
  • statut - Statut mission
  • dateDepart - Date départ
  • dateArrivee - Date arrivée
  • cout - Coût

TransitaireReview.js

Avis sur transitaires

Champs principaux :

  • transitaireId - Référence transitaire
  • clientId - Référence client
  • note - Note (1-5)
  • commentaire - Commentaire
  • createdAt

TransitaireSubscriptionPricing.js

Tarifs abonnements transitaires

Champs principaux :

  • type - Type abonnement
  • dureeJours - Durée
  • prix - Prix
  • actif - Actif ou non

Autres (11 modèles)

TricycleContact.js

Contacts tricycles

Champs principaux :

  • nom - Nom
  • telephone - Téléphone
  • zone - Zone couverture
  • actif - Actif ou non

Referral.js

Parrainages

Champs principaux :

  • parrainId - Référence parrain
  • filleulId - Référence filleul
  • code - Code parrainage
  • statut - Statut
  • dateInscription - Date inscription

ReferralTariff.js

Tarifs parrainage

Champs principaux :

  • pourcentage - Pourcentage gain
  • montantFixe - Montant fixe
  • actif - Actif ou non

ReferralSettings.js

Configuration parrainage

Champs principaux :

  • actif - Actif ou non
  • dureeValidite - Durée validité code

Publicite.js

Publicités

Champs principaux :

  • titre - Titre
  • image - URL image
  • lien - Lien cible
  • position - Position affichage
  • actif - Actif ou non

PubPricing.js

Tarifs publicité

Champs principaux :

  • type - Type publicité
  • prix - Prix
  • duree - Durée
  • actif - Actif ou non

VerificationPricing.js

Tarifs vérification documents

Champs principaux :

  • type - Type vérification
  • prix - Prix
  • actif - Actif ou non

AgentDailyLog.js

Logs quotidiens agents

Champs principaux :

  • agentId - Référence agent
  • date - Date
  • actions - Actions effectuées
  • resultats - Résultats

AgentEarning.js

Gains agents

Champs principaux :

  • agentId - Référence agent
  • montant - Montant
  • source - Source gain
  • date - Date

DemoEvent.js

Tracking des démonstrations agents commerciaux (Tranoo Pro)

Champs principaux :

  • agentId - Référence agent
  • eventType - Type (seller_create_started, campaign_initiated, subscription_initiated, etc.)
  • metadata - Données contextuelles
  • createdAt - Horodatage

Endpoint : POST /api/demo-events/track. Voir Agents commerciaux.

PropositionTransit.js (obsolète)

Ancien modèle de propositions transit — routes désactivées dans app.js.

Index et performances

Index recommandés

  • User.email (unique)
  • User.telephone (unique)
  • User.uid (unique)
  • Article.vendeurId
  • Order.acheteurId
  • Delivery.livreurId
  • Notification.userId
  • Message.roomId

Relations principales

User → Articles

Un vendeur peut avoir plusieurs articles

User → Orders

Un acheteur peut avoir plusieurs commandes

Order → Articles

Une commande contient plusieurs articles

Order → Delivery (legacy)

Une commande pouvait avoir une livraison interne — remplacée par Livro

User → ChatRoom

Un utilisateur peut être dans plusieurs salons

ChatRoom → Messages

Un salon contient plusieurs messages

Migration et backups

Backups

  • Sauvegardes automatiques MongoDB
  • Snapshots réguliers
  • Rétention configurable

Migration

  • Scripts de migration dans scripts/
  • Versioning des schémas
  • Tests avant déploiement

Voir aussi