---
suivi: 1061
date: 2026-07-29
sujet: Modules enseigne Compte prorata / CIE / NF Habitat
chantier: programmes
type: feature
statut: poussé
hash: 5bc15413
fichiers:
  - app/Support/EnseignesSetup.php
  - app/Models/Programme.php
  - app/Http/Controllers/SuiviChantierController.php
  - app/Http/Controllers/Admin/EnseignesController.php
  - app/Http/Controllers/CieController.php
  - routes/web.php
  - resources/js/Pages/SuiviChantier/Index.vue
  - resources/js/Pages/Admin/Enseignes/Index.vue
  - database/migrations/2026_07_29_160000_add_cp_cie_nf_modules_to_enseignes.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1061 — ajouter Compte prorata, CIE et NF Habitat au système d'activation de
modules par enseigne ; désactivés pour HECTARE et GEMME, activés pour ENVOL. Ne pas
masquer en dur. Filtre d'affichage uniquement, aucun calcul CP/CIE touché.

## SYNTHÈSE

### Stockage modules
Colonne JSON `enseignes.modules_actifs`. Helper unique : `Enseigne::aModule($key)`
(réutilisé via `Programme::enseigneAModule`). Labels admin : `EnseignesSetup::moduleLabels()`.

### Nouveaux modules
Clés `compte_prorata`, `cie`, `nf_habitat`. Migration de merge (clés manquantes
uniquement) : ENVOL=true, HECTARE/GEMME=false. Toggle admin (GS_ADMIN_ERP / GS_DSI)
via PATCH `/admin/enseignes/{id}/modules`.

### Affichage
Onglets Suivi Chantier absents du DOM si module off (+ droit lecture). Hash
`#nf-habitat` / `#cie` / `#compte-prorata` désactivé → rewrite vers `#marches`.
Route CIE show → redirect marches si module off.

### Inventaire hors lot
Marche Show / KPI (CP-CIE dans restant à facturer) : reporté (risque d'écart de total).
DepotFactureSaisieForm cases CP/CIE : reporté (lot 2b). Bilan / calculs : hors périmètre.

### Données HECTARE
MySQL local DOWN — SELECT non exécutable ici. Robin confirme 0 ligne ; à revérifier en prod.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan migrate --force
php artisan journal:sync
php artisan route:clear
php artisan view:clear
find app/ -name "*.php" -exec touch {} +
```

## LEÇON
Trois fonctionnalités spécifiques à la VEFA s'affichaient pour toutes les enseignes
parce qu'elles n'avaient jamais été déclarées dans le système d'activation par enseigne —
un mécanisme de configuration ne protège que ce qu'on y déclare.
