# TRAIL DPS 4.2 - LOT 11.18 - Affichage admin supervision commerciale robuste

Date : 2026-05-28
Portee : OVH uniquement
Objectif : fiabiliser l'affichage du bloc **Supervision commerciale LOT 11** dans `public/admin/license.php`.

## Probleme traite

Apres validation de la persistance `PLACE_LICENSE_CHECK`, la table `license_usage_stats` contenait bien :

- des lignes `OVH_SMS_RUNNER` portant les compteurs SMS ;
- des lignes `PLACE_LICENSE_CHECK` portant les compteurs courses/evenements/runs ;
- des lignes `PLACE_LICENSE_CHECK` conservant aussi une copie du compteur SMS pour la signature licence.

L'administration licence pouvait encore afficher le mauvais snapshot si elle choisissait une seule ligne brute de `license_usage_stats`.
Le cas constate etait typique :

- courses affichees a 0 parce que la ligne retenue etait `OVH_SMS_RUNNER` ;
- alors que la ligne `PLACE_LICENSE_CHECK` contenait bien `20 / 2 / 2`.

## Correction LOT 11.18

### 1. Separation stricte des sources

`LicenseRepository.php` expose maintenant explicitement :

- `getLatestPlaceUsageStats()` : dernier snapshot `PLACE_LICENSE_CHECK` pour courses, evenements et runs ;
- `getLatestSmsUsageStats()` : dernier snapshot `OVH_SMS_*` positif pour SMS ;
- `getCommercialUsageSummary()` : resume consolide, sans melanger les sources primaires.

### 2. Affichage admin modifie

`public/admin/license.php` affiche desormais :

- **Dernier calcul PLACE** ;
- **Courses comptabilisees (425j)** depuis `PLACE_LICENSE_CHECK` ;
- **Evenements actifs** depuis `PLACE_LICENSE_CHECK` ;
- **Runs actifs** depuis `PLACE_LICENSE_CHECK` ;
- **Dernier calcul SMS** ;
- **SMS 365 jours** depuis `OVH_SMS_*` ;
- **Source courses**, **Source SMS**, **Source consolidee**.

### 3. Robustesse

L'administration reste protegee : une erreur de lecture LOT 11 ne doit pas rendre la page licence indisponible.
Un miroir `ovh/src` est maintenu pour eviter les regressions liees a la casse Linux `SRC` / `src`.

## Fichiers modifies ou ajoutes

- `ovh/SRC/LicenseRepository.php`
- `ovh/SRC/LicenseService.php`
- `ovh/public/admin/license.php`
- `ovh/src/AdminUi.php`
- `ovh/src/Database.php`
- `ovh/src/Http.php`
- `ovh/src/LicenseCrypto.php`
- `ovh/src/LicenseFingerprint.php`
- `ovh/src/LicenseRepository.php`
- `ovh/src/LicenseService.php`
- `ovh/sql/lot_11_18_verification_admin_usage_split.sql`
- `ovh/docs/LOT_11_18_2026_05_28_AFFICHAGE_ADMIN_USAGE_SPLIT.md`

## Controle attendu apres deploiement

Avec la base de test observee :

- le bloc **Usage glissant 425 jours** doit afficher `20 / illimite`, `2`, `2` ;
- la source courses doit etre `PLACE_LICENSE_CHECK` ;
- le bloc **SMS facturables** doit afficher `3` ;
- la source SMS doit etre `OVH_SMS_RUNNER` ;
- le check licence suivant doit faire apparaitre `server_code_version = lot-11.18-ovh-admin-usage-split` dans `license_audit_log`.

## Validation technique

- `php -l` OK sur les fichiers PHP livres.
- Pas de fichier `env.php` ni de configuration sensible dans le ZIP incremental.
- SQL fourni uniquement en controle non destructif.
