# TRAIL DPS 4.2 - LOT 11.4.1 - Correctif SMS billing tracking/licence

Horodatage : 2026-05-28

## Constat

Lors de l'envoi d'un SMS de demande de position coureur depuis LIVE DPS, le SMS est bien envoyé et le lien coureur fonctionne, mais PLACE affiche une erreur HTTP 500 sur l'endpoint `create_runner_location_request.php`.

Le symptôme indique que le flux opérationnel fonctionne, mais qu'une erreur intervient après l'envoi du SMS, au moment de la journalisation commerciale LOT 11.

## Cause

Le tracking et la licence sont portés par deux bases distinctes :

- base tracking : `synoluidpstrack`, tables `runner_location_requests`, `sms_logs`, tracking GPS ;
- base licence : `synolui94`, tables `licenses`, `license_usage_stats`.

Le sous-lot LOT 11.4 utilisait le même PDO tracking pour résoudre la licence et actualiser `license_usage_stats`. Si la base tracking ne contient pas `licenses` ou si `sms_logs` ne possède pas encore les colonnes LOT 11, une exception pouvait être déclenchée après l'envoi SMS, d'où le HTTP 500 côté PLACE.

## Correctifs

- `LicenseBillingRepository.php` se connecte désormais explicitement à la base licence via `config/env.php`.
- La base tracking reste utilisée pour `sms_logs`.
- Les colonnes `sms_logs` sont détectées dynamiquement pour rester compatible avec une base partiellement migrée.
- Les erreurs de facturation SMS sont journalisées mais ne bloquent plus jamais le workflow opérationnel SMS.
- Ajout d'un script SQL dédié à la base tracking : `lot_11_4_1_tracking_sms_billing_columns.sql`.

## Procédure de déploiement

1. Déployer `SRC/Tracking/LicenseBillingRepository.php` sur OVH.
2. Importer le script SQL `sql/lot_11_4_1_tracking_sms_billing_columns.sql` sur la base tracking `synoluidpstrack`.
3. Ne pas importer ce script sur la base licence `synolui94` sauf contrôle volontaire : il ne ferait rien si `sms_logs` est absente.
4. Tester un SMS coureur depuis LIVE DPS.
5. Vérifier dans l'administration licence que `SMS 365 jours` augmente après l'envoi.

## Sécurité fonctionnelle

Le flux opérationnel prime : si le comptage commercial rencontre une anomalie, l'envoi SMS et la demande coureur ne doivent plus être annulés ni signalés comme échoués à PLACE.
