Aller au contenu principal

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

Chauffeurs​

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
  • 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​