Aller au contenu principal

UC-10 — Consultation des statistiques

Acteur : Admin / Superviseur / Gestionnaire But : Consulter les indicateurs et statistiques de l'organisation

Trigger​

Un utilisateur ouvre le tableau de bord.

Préconditions​

  • Permission analytics.read

Endpoints​

Tableau de bord organisation​

GET /api/v1/admin/org/stats/dashboard

Statistiques détaillées (période requise from/to)​

GET /api/v1/admin/org/stats/revenue-by-type?from=2025-06-01T00:00:00&to=2025-06-30T23:59:59
GET /api/v1/admin/org/stats/top-products?from=...&to=...
GET /api/v1/admin/org/stats/sites-revenue?from=...&to=...
GET /api/v1/admin/org/stats/hourly?from=...&to=...
GET /api/v1/admin/org/stats/holders?from=...&to=...
GET /api/v1/admin/org/stats/recharges?from=...&to=...
GET /api/v1/admin/org/stats/sales?from=...&to=...
GET /api/v1/admin/org/stats/balances?from=...&to=...
GET /api/v1/admin/org/stats/reservations?from=...&to=...
GET /api/v1/admin/org/stats/stock?from=...&to=... (permission stock.read)

Analytics avec comparaison de périodes​

GET /api/v1/admin/org/analytics/overview?from=...&to=...&compare_from=...&compare_to=...
GET /api/v1/admin/org/analytics/growth?from=...&to=...
...

Stats basiques et export​

GET /api/v1/stats/daily?from=2025-06-01&to=2025-06-30
GET /api/v1/stats/export?from=2025-06-01&to=2025-06-30
Endpoints inexistants

Il n'existe pas de /stats/dashboard, /stats/transactions ni /stats/balance. Les stats d'organisation sont sous /admin/org/stats/*; les stats globales sous /admin/system/stats/* (permission stats.exhaustive.read).

Flow​

sequenceDiagram
participant Admin
participant Dashboard
participant API
participant DB

Admin->>Dashboard: Ouvrir le tableau de bord
Dashboard->>API: GET /admin/org/stats/dashboard
API->>DB: Agrégations (cartes, transactions du jour, stock…)
API-->>Dashboard: {cards, transactions_today, products, holders…}
Dashboard->>Admin: Afficher les KPIs

Admin->>Dashboard: "Revenus du mois"
Dashboard->>API: GET /admin/org/stats/revenue-by-type?from=...&to=...
API->>DB: SELECT ... GROUP BY type
API-->>Dashboard: {data: [{type, count, total_cents}]}

Exemple de réponse (dashboard)​

{
"cards": { "total": 1250, "active": 1100, "unassigned": 100, "deactivated": 40, "lost": 10 },
"transactions_today": {
"count": 320,
"amount_cents": 850000,
"amount_formatted": "850 000 FCFA",
"by_type": [],
"currency": "XOF"
},
"products": { "total": 42, "low_stock": 3 },
"sites_count": 2,
"pending_reservations": 5,
"holders": { "total": 1200, "new_this_month": 45 },
"active_operators_today": 8,
"currency": "XOF"
}

Permissions​

PermissionDescription
analytics.readStats et analytics d'organisation
stats.exhaustive.readStats système cross-organisation

Erreurs​

error_codeDescription
Validationfrom/to manquants sur endpoints à période
ForbiddenPermission insuffisante

Voir Statistiques et Analytics.