But : collecte Deciplus → SQLite (staging + marts) + pages de debug. Cette page est vivante (à mettre à jour au fil de l’eau).
payload_hash (SHA1 du JSON brut).source_updated_at (utile pour audit/debug).s2_wm::...) restent en place quand l’API supporte des paramètres « changed since ».stats2/api.php : API interne (ETL + endpoints de debug).stats2/lib/deciplus.php : client HTTP Deciplus (auth/token + GET) avec cache token.stats2/lib/http.php : wrapper cURL (timeouts 15s connect / 45s total).stats2/lib/db.php : init SQLite + migrations.stats/sql/003_extra_endpoints.sql : tables planning (activities/resources/schedules/lessons).stats/sql/004_incremental.sql : colonnes payload_hash / source_updated_at (incremental).Règles appliquées dans stats2/dashboard2.php (KPIs, transformation, croissance, export).
category = "Client" (détection tolérante sur plusieurs clés).| Produit | Rôle | Impact KPIs |
|---|---|---|
15 — Séance d'essai EMS |
Essai gratuit | Exclu des actifs payants, exclu des gains. Sert au KPI essais et à la perte fin d’essai (si essai seul et plus rien derrière). |
99 — Abonnement Cadres et Direction hôtels |
Gratuit | Exclu des actifs payants, exclu des gains et croissance. KPI volume séparé. |
96 — 1 coaching EMS (40€) |
Séance unitaire | Exclu des actifs payants, exclu des gains, exclu de la croissance et exclu de la conversion essai. KPI volume possible (audit). |
15 actif et sans contrat payant actif (ni 99, ni 96) — utilisé pour debug, mais non compté dans les actifs payants.15 “seul” au début → plus aucun contrat actif à la fin.perte_payants / base_payants_début.15) du membre dans la période.sold_by_user_id du contrat essai, résolu via stg_users (first_name/last_name).zone_id du membre (stg_members.zone_id).dashboard2.php?op=members_indicators (JSON) ou &as=csv (export CSV).first_free_start (15/99), first_paid_start (hors {15,99,96}), last_paid_end, active_paid_at.GET stats2/api.php?op=bootstrap GET stats2/api.php?op=run GET stats2/api.php?op=reset
Note : items_ingested = nb d’items réellement écrits (nouveaux/modifiés), items_fetched = nb reçus depuis Deciplus.
?op=status?op=bootstrap / ?op=reset / ?op=run?op=tables / ?op=rows / ?op=payload?op=ops_kpi / ?op=planning_kpi / ?op=pilotage / ?op=series/zones, /users, /products, /members, /contracts/visits (scope requis), /payment-schedules (scope requis)/activities, /resources, /schedules (peut être absent), /lessons-calendar/schedules est absent (404).payment-schedules:read, visits:read, activities:read, resources:read, lessons-calendar:read.