Skip to main content

Agents commerciaux

Vue d'ensemble

Les agents commerciaux (role: agentCommercial) prospectent des vendeurs et acheteurs, suivent leur activité quotidienne et perçoivent des commissions. Ils utilisent principalement :

  • Tranoo Pro (agents type Tranoo_pro) — démos vendeurs, KPIs campagnes/abonnements
  • Tranoo (agents type Tranoo) — prospection acheteurs
  • Dashboard web — création de comptes agent, suivi admin, retraits

Types d'agents

Le champ User.typeAgent distingue deux profils :

TypeCibleDashboard API
Tranoo_proVendeurs Tranoo Pro/api/agents/me-pro/*
TranooAcheteurs Tranoo/api/agents/me-tranoo/*

Les routes génériques /api/agents/me/* restent disponibles ; les routes me-pro et me-tranoo vérifient le typeAgent.

Architecture

┌─────────────────┐ parrainage ┌──────────────┐
│ Agent │ ──────────────────► │ Vendeurs / │
│ (Tranoo Pro) │ referralCode │ Acheteurs │
└────────┬────────┘ └──────┬───────┘
│ │
│ KPIs, présence GPS │ actions métier
▼ ▼
┌─────────────────┐ demo events ┌──────────────┐
│ Dashboard │ ◄────────────────── │ Tranoo Pro │
│ agent / admin │ POST /track │ (mobile) │
└─────────────────┘ └──────────────┘

Modèles de données

ModèleRôle
AgentDailyLog.jsJournal quotidien (zone, GPS, prospects, observation admin)
AgentEarning.jsGains, commissions, retraits
DemoEvent.jsÉvénements de démonstration mobile
Referral.jsLien agent → filleul (voir Parrainage)

Types de gains (AgentEarning.type)

TypeDescription
referral_signupBonus à l'inscription d'un filleul
commission_subscriptionCommission sur abonnement vendeur filleul
commission_publiciteCommission sur campagne pub filleul
daily_presencePrime de présence journalière (GPS)
withdrawalRetrait enregistré par l'admin (montant négatif)

Endpoints API — Agent (mobile / web)

Préfixe : /api/agents — auth + rôle agentCommercial

MéthodeRouteDescription
GET/me/dashboardTableau de bord (query ?date=YYYY-MM-DD)
GET/me-pro/dashboardIdem, réservé typeAgent: Tranoo_pro
GET/me-tranoo/dashboardIdem, réservé typeAgent: Tranoo
POST/me/dailyEnregistre zone + localisation GPS du jour
POST/me/daily/prospects/incrementIncrémente le compteur de prospects
GET/leaderboardClassement agents
GET/me-pro/leaderboardClassement agents Pro
GET/me-tranoo/leaderboardClassement agents Tranoo

Réponse dashboard (extrait)

{
"agent": { "id": "...", "typeAgent": "Tranoo_pro", "referralCode": "A1B2C3D4" },
"stats": {
"totalReferrals": 12,
"completedReferrals": 12,
"totalEarnings": 45000,
"currentBalance": 32000
},
"daily": {
"dateKey": "2026-09-01",
"prospectsApproached": 8,
"demonstrations": 5,
"boutiquesCreees": 2,
"abonnementsVendus": 1,
"campagnesLancees": 3,
"revenueAbonnement": 5000,
"revenueCampagne": 2000,
"dailyBonusCredited": true,
"dailyPresenceBonusXof": 2000
}
}

KPIs journaliers

Calculés par computeKpisForRangeV2 dans agentController.js :

KPISource
demonstrationsÉvénements DemoEvent (voir ci-dessous)
boutiquesCreeesVendeurs filleuls inscrits sur la période
abonnementsVendusPaiements subscription réussis des filleuls
campagnesLanceesPaiements publicité réussis des filleuls
campagnesDemandeesDemandes Publicite créées (payées ou non)
revenueAbonnementCommissions commission_subscription créditées
revenueCampagneCommissions commission_publicite créditées

Objectifs métier (retournés dans daily.objectifs)

ObjectifValeur
Prospects / jour20
Abonnements min. avant retrait4
Campagnes min. avant retrait4

Tracking des démonstrations

Endpoint

POST /api/demo-events/track — auth vendeur ou acheteur

Événements trackés (mobile Tranoo Pro)

eventTypeÉcran / action
seller_create_startedBouton Aperçu (create_sell.dart, create_sell2.dart)
seller_create_completedFin de création article
subscription_initiatedSouscrire maintenant (subscription_payment.dart)
campaign_initiatedBoostez vos ventes (cars_info.dart)
listing_opened_uneOuverture page À la une
notification_clickedClic notification
alert_createdCréation alerte

Règle de comptage (demonstrations)

  1. Compte les événements commerciaux listés ci-dessus sur la période
  2. Cooldown : au plus 1 démo toutes les DEMO_COOLDOWN_MINUTES (défaut 15 min)
  3. Résolution de l'agent : via Referral.referrerId ou compte lié sur la fiche agent

Anti-spam

VariableDéfautEffet
DEMO_EVENT_DEDUP_MS30000Ignore les doublons même eventType + sessionKey en 30 s
DEMO_COOLDOWN_MINUTES15Intervalle minimum entre deux démos comptées

La sessionKey est dérivée du token Firebase (uid:auth_time) — un simple refresh de token ne crée pas une nouvelle démo.

Guide détaillé : tranoo-api/docs/DEMO_TRACKING_TRANOO_PRO.md

Prime de présence journalière

Lorsqu'un agent enregistre sa localisation GPS (zoneLocation.lat/lng) via POST /me/daily :

  1. Le backend crédite une fois par jour la prime daily_presence
  2. Montant par défaut : 2000 XOF (AGENT_DAILY_PRESENCE_BONUS_XOF)
  3. Stocké dans AgentEarning avec type: daily_presence

Configuration : src/config/agentConfig.js

Endpoints API — Admin

MéthodeRouteRôlesDescription
POST/api/agentssuperAdmin, principal, gestionnaire, adminCrée un agent
GET/api/agents/admin/consolidatedAdminStats consolidées tous agents
GET/api/agents/:id/referral-statsAdminStats parrainage d'un agent
GET/api/agents/:id/referralsAdminListe filleuls
GET/api/agents/:id/pro-monitorAdminSuivi journalier Pro
POST/api/agents/:id/withdrawalsAdminEnregistre un retrait
GET/api/agents/withdrawalsAdmin dashboardListe tous les retraits
POST/api/agents/admin/backfill-daily-presenceAdminRattrapage primes présence
POST/api/agents/:id/daily/observationAdminAjoute une observation sur le journal

Inscription web

Page publique : https://tranoo.store/inscription-agent-com

Variables d'environnement

VariableDéfautDescription
AGENT_DAILY_PRESENCE_BONUS_XOF2000Prime présence GPS
DEMO_COOLDOWN_MINUTES15Cooldown entre démos comptées
DEMO_EVENT_DEDUP_MS30000Déduplication événements

Fichiers source

FichierRôle
src/controllers/agentController.jsDashboard, KPIs, retraits
src/controllers/demoEventController.jsTracking démos
src/routes/agent.jsRoutes agents
src/routes/demoEvent.jsRoute /track
src/config/agentConfig.jsConfiguration primes

OpenAPI : paths/09-tricycles-referrals-agents.js. Voir API Swagger.

Voir aussi