# TRAIL DPS 4.2 - LOT 11.8 - Correctif reel affichage supervision licence

Horodatage : 2026-05-28 12:00:43

## Diagnostic senior

Le probleme ne venait pas de la table `license_usage_stats` ni de la persistance SMS.
Les lignes etaient bien presentes en base licence.

La cause etait cote code OVH : `public/admin/license.php` appelait des methodes conditionnelles du repository :

- `getCommercialUsageSummary()`
- `getLatestUsageStats()`
- `countBillableSmsRolling365()`

mais le fichier `SRC/LicenseRepository.php` actuellement deployee ne contenait pas ces methodes.
Le test `method_exists()` retournait donc `false`, l'administration utilisait `null`, puis affichait 0 / `-`.

Concernant les courses, PLACE envoyait deja `local_usage` dans le check licence, mais `SRC/LicenseService.php` ne persistait pas encore ce bloc dans `license_usage_stats` dans le code actuellement deploye.

## Corrections

### OVH/SRC/LicenseRepository.php

Ajout effectif des methodes :

- `getCommercialUsageSummary()`
- `getLatestUsageStats()`
- `getLatestPlaceUsageStats()`
- `countBillableSmsRolling365()`
- `recordUsageStats()`
- `tableExists()`

### OVH/SRC/LicenseService.php

- Le check licence enregistre maintenant `local_usage` dans `license_usage_stats`.
- La licence signee renvoie `commercial_usage`, `license_usage`, les quotas et `usage_window_days = 425`.
- Le suivi commercial ne peut pas bloquer un check licence valide.

## Procedure de test

1. Deployer les deux fichiers PHP.
2. Ouvrir PLACE pour provoquer un check licence online, ou relancer l'application.
3. Verifier dans `license_usage_stats` qu'une ligne `PLACE_LICENSE_CHECK` apparait.
4. Recharger `/admin/license.php?id=...`.
5. Verifier :
   - SMS 365 jours = dernier compteur SMS connu,
   - Courses comptabilisees 425j = compteur PLACE,
   - Evenements actifs et runs actifs alimentes.

## SQL

Aucun script SQL supplementaire requis.
