---
suivi: 1312
date: 2026-08-13
sujet: marche_alertes_cp
chantier: marches_compta
type: fix
statut: poussé
hash: 4b35d06d
fichiers:
  - app/Services/MarcheRetenuesEtatsService.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tools/diag/verif_alertes_cp_1312.php
  - docs/suivi/SUIVI_1312_alertes_cp.md
---

## PROMPT ENVOYÉ

PHASE 2 #1312 — deux codes d’alerte CP dans etats.alertes (symétriques RG),
cas théorique nul explicite, affichage onglet Retenues inchangé (#1306).
HEAD attendu 0c1dc85c (#1310). Aucun recalcul de cumul.

## SYNTHÈSE

### Fiches lues
- `#1310` LEÇON : MRES n’émettait que `rg_*` ; filtre `theo > 0` du script #1308 masquait la dette 58.
- `#1306` LEÇON : anatomie 4 blocs + récap ; détails = même source que cumuls — ne pas défaire.
- `#1304` LEÇON : alertes déjà HT vs HT ; fausse alerte 109 disparue — ne pas la faire revenir.
Approche : ajouter deux codes dans `etats.alertes` (clés `code`/`libelle`/`ecart_ht`/`unite`), seuil `> 0.009` lu dans le code RG, **sans** filtre `base_eligible > 0`. Show.vue empile déjà toutes les `retenues.alertes` → aucun .vue.

### Mapping UI ↔ back
| Libellé affiché | Valeur postée (code) | Colonne / clé | Libellé back |
|-----------------|----------------------|---------------|--------------|
| bandeau alerte | `cp_depassement_retenu` | `etats.alertes[]` | retenu − `cp.base_eligible` HT |
| bandeau alerte | `cp_depassement_si_encours_paye` | `etats.alertes[]` | (retenu + en cours) − `base_eligible` HT |
| (theo nul) | mêmes codes | `base_eligible` ≤ 0,009 et retenu > 0 | libellé « aucun compte prorata » |

### Non touché
Cumuls #1304/#1308, présentation #1306, Synthèse #1300, TOTAL HT #1303, CouvertureKpi, migrations, ×1,2, écritures.

### Vérification écran
**NON** — localhost / SSH OVH indisponibles depuis cet environnement. Rejouer `verif_alertes_cp_1312.php` en prod + ouvrir MCH-2026-001 et marché 109.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
php -d display_errors=1 tools/diag/verif_alertes_cp_1312.php
```

## LEÇON

Un onglet qui affiche déjà `v-for` sur `alertes` ne suffit pas : si le service n’émet pas le code, l’anomalie est invisible. Ne jamais conditionner une alerte à `théorique > 0` — le théorique nul + retenu positif est le cas le plus grave (dette 58).
