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
| Composant | Technologie | Version |
|---|---|---|
| Base de données | MongoDB | ^6.18.0 |
| ODM | Mongoose | ^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 UIDemail- Email (synthétique pour téléphone)telephone- Numéro de téléphone réelnom- Nomprenoms- Prénomsrole- Rôle utilisateurphoto- URL photo profilstatut- Statut comptefcmToken- Token FCM notificationscreatedAt,updatedAt- Timestamps
UserDevice.js
Appareils utilisateurs pour tracking multi-device
Champs principaux :
userId- Référence UserdeviceId- Identifiant appareilplatform- Platform (ios/android/web)lastUsed- Dernière utilisation
AuthEvent.js
Événements d'authentification pour audit
Champs principaux :
userId- Référence UsereventType- Type événement (login/logout/register)ipAddress- Adresse IPuserAgent- User agenttimestamp- Horodatage
PasswordResetRequest.js
Demandes de réinitialisation mot de passe
Champs principaux :
userId- Référence Userotp- Code OTPexpiresAt- Expirationused- Utilisé ou non
Commerce (5 modèles)
Article.js
Articles/produits (véhicules, motos, pièces détachées)
Champs principaux :
titre- Titre articledescription- Descriptionprix- Prixdevise- Devisecategorie- Catégorieimages- URLs imagesvendeurId- Référence vendeurstatut- Statut (actif/inactif)stock- Quantité disponiblecreatedAt,updatedAt
Achat.js
Achats effectués par les acheteurs
Champs principaux :
acheteurId- Référence acheteurarticleId- Référence articlequantite- QuantitéprixUnitaire- Prix unitairemontantTotal- Montant totalstatut- Statut achatcreatedAt
Order.js
Commandes regroupant plusieurs achats
Champs principaux :
acheteurId- Référence acheteurarticles- Liste articles commandésmontantTotal- Montant totalstatut- Statut commandeadresseLivraison- Adresse livraisoncreatedAt,updatedAt
Invoice.js
Factures générées pour les commandes
Champs principaux :
orderId- Référence commandenumeroFacture- Numéro facturemontant- MontantstatutPaiement- Statut paiementdateEmission- Date émissiondatePaiement- Date paiement
InvoiceSequence.js
Séquence pour numérotation factures
Champs principaux :
sequence- Numéro séquence actuelprefix- 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 commandelivreurId- Référence livreurstatut- Statut livraisonpositionActuelle- Coordonnées GPS actuelleshistoriquePositions- Historique trackingdateRamassage- Date ramassagedateLivraison- Date livraisoncreatedAt,updatedAt
DeliveryZone.js
Zones de livraison géographiques
Champs principaux :
nom- Nom zonedescription- Descriptionpolygone- Coordonnées polygonetarifBase- Tarif basetarifKm- Tarif par kmactif- Actif ou non
DeliverySettings.js
Configuration système de livraison
Champs principaux :
tarifBase- Tarif basetarifKm- Tarif kilométriquedelaiMax- Délai maximum livraisonactif- Actif ou non
LivreurBalance.js
Balance et gains des livreurs
Champs principaux :
livreurId- Référence livreurbalance- Solde actuelgainsTotal- Gains totauxretraits- Retraits effectuéshistoriqueTransactions- Historique
DemandeChauffeur.js
Demandes pour devenir chauffeur
Champs principaux :
userId- Référence utilisateurdocuments- Documents fournisstatut- Statut demandedateDemande- Date demandedateValidation- Date validation
Paiements (4 modèles)
Payment.js
Transactions de paiement
Champs principaux :
userId- Référence utilisateurmontant- Montantmethode- Méthode paiementreference- Référence transactionstatut- Statut paiementtype- Type (achat/abonnement/recharge)createdAt
Subscription.js
Abonnements utilisateurs
Champs principaux :
userId- Référence utilisateurtype- Type abonnementdebut- Date débutfin- Date finstatut- Statut (actif/expiré)montant- Montant payé
SubscriptionPricing.js
Tarifs des abonnements
Champs principaux :
type- Type abonnementdureeJours- Durée en joursprix- Prixdevise- Deviseactif- Actif ou non
SellerGainPricing.js
Tarifs des commissions vendeurs
Champs principaux :
pourcentage- Pourcentage commissionmontantMinimum- Montant minimumactif- 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 messagecreatedAt,updatedAt
Message.js
Messages de chat
Champs principaux :
roomId- Référence salonexpediteurId- Référence expéditeurcontenu- Contenu messagetype- Type (texte/image/audio)lu- Lu ou noncreatedAt
Notification.js
Notifications push
Champs principaux :
userId- Référence utilisateurtitre- Titre notificationcorps- Corps messagetype- Type notificationdonnees- Données additionnelleslue- Lue ou noncreatedAt
Transit (3 modèles)
Documentation détaillée : Transit international
TransitMission.js
Missions de transit international
Champs principaux :
transitaireId- Référence transitaireorigine- Origine expéditiondestination- Destinationstatut- Statut missiondateDepart- Date départdateArrivee- Date arrivéecout- Coût
TransitaireReview.js
Avis sur transitaires
Champs principaux :
transitaireId- Référence transitaireclientId- Référence clientnote- Note (1-5)commentaire- CommentairecreatedAt
TransitaireSubscriptionPricing.js
Tarifs abonnements transitaires
Champs principaux :
type- Type abonnementdureeJours- Duréeprix- Prixactif- Actif ou non
Autres (11 modèles)
TricycleContact.js
Contacts tricycles
Champs principaux :
nom- Nomtelephone- Téléphonezone- Zone couvertureactif- Actif ou non
Referral.js
Parrainages
Champs principaux :
parrainId- Référence parrainfilleulId- Référence filleulcode- Code parrainagestatut- StatutdateInscription- Date inscription
ReferralTariff.js
Tarifs parrainage
Champs principaux :
pourcentage- Pourcentage gainmontantFixe- Montant fixeactif- Actif ou non
ReferralSettings.js
Configuration parrainage
Champs principaux :
actif- Actif ou nondureeValidite- Durée validité code
Publicite.js
Publicités
Champs principaux :
titre- Titreimage- URL imagelien- Lien cibleposition- Position affichageactif- Actif ou non
PubPricing.js
Tarifs publicité
Champs principaux :
type- Type publicitéprix- Prixduree- Duréeactif- Actif ou non
VerificationPricing.js
Tarifs vérification documents
Champs principaux :
type- Type vérificationprix- Prixactif- Actif ou non
AgentDailyLog.js
Logs quotidiens agents
Champs principaux :
agentId- Référence agentdate- Dateactions- Actions effectuéesresultats- Résultats
AgentEarning.js
Gains agents
Champs principaux :
agentId- Référence agentmontant- Montantsource- Source gaindate- Date
DemoEvent.js
Tracking des démonstrations agents commerciaux (Tranoo Pro)
Champs principaux :
agentId- Référence agenteventType- Type (seller_create_started,campaign_initiated,subscription_initiated, etc.)metadata- Données contextuellescreatedAt- 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.vendeurIdOrder.acheteurIdDelivery.livreurIdNotification.userIdMessage.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
- Architecture Backend — documentation backend complète
- API Swagger — documentation API
- Transit international — modèles transit
- Agents commerciaux — modèles agent
- Parrainage — modèles referral