---
suivi: 1141
date: 2026-08-04
sujet: Faisabilité PROMOTION brique 1/4 — programme + foncier + taxes
chantier: foncier
type: feature
statut: poussé
hash: 06a944f6
fichiers:
  - app/Support/Foncier/Faisabilite/FaisabilitePromotionMoteur.php
  - app/Support/Foncier/Faisabilite/FaisabilitePromotionInput.php
  - app/Support/Foncier/Faisabilite/FaisabilitePromotionResultat.php
  - app/Support/Foncier/Faisabilite/FaisabilitePromotionParametresResolus.php
  - app/Support/Foncier/Faisabilite/FaisabilitePromotionFixtureReference.php
  - app/Http/Controllers/Foncier/FaisabilitePromotionMoteurTechController.php
  - app/Models/EnseigneFaisabiliteParametre.php
  - database/migrations/2026_08_04_140000_add_promotion_taxe_params_to_enseigne_faisabilite.php
  - resources/js/Pages/Foncier/Faisabilite/MoteurTechPromotion.vue
  - routes/web.php
  - tests/Unit/Foncier/FaisabilitePromotionMoteur1141Test.php
  - tests/Unit/Foncier/FaisabilitePromotion1141SourceTest.php
  - public/build/
  - docs/suivi/SUIVI_1141_faisabilite_promotion_brique1.md
---

## PROMPT ENVOYÉ

SUIVI #1141 — brique 1/4 mode PROMOTION : moteur programme/foncier/taxes
(ANNEXE C.2 littéral) + page technique type moteur-tech. Aucun écran métier.
Ne pas casser le lotissement (#1143).

## SYNTHÈSE

### Fiches lues
- `SUIVI_1138` — #1141 réservé après lotissement.
- `SUIVI_1142` — mode scenario lotissement/promotion.
- Code #1143 (moteur lotissement, Dec, moteur-tech, params enseigne).
- CDC ANNEXE C.2 absent du repo → formules du prompt (extraction littérale).

### Types partagés
`FaisabiliteInput` / `FaisabiliteResultat` **non modifiés**. Stack promotion
dédiée. Lotissement : `FaisabiliteLotissementMoteur1143Test` **18 passed**.

### Livrable
- `FaisabilitePromotionMoteur` (0 SQL, brick/math, ordre programme→foncier→taxes)
- Fixture MATRICE (33 libres + 30 sociaux)
- Page `/foncier/faisabilite/moteur-tech-promotion` (+ .json)
- Colonnes params taxe sur `enseigne_faisabilite_parametres` (nullable → defaults)

### Anomalies signalées (reproduites + avertissement tech)
1. **TVA foncier 0 %** sur libre et social (20 % ailleurs)
2. **Aucune TVA** sur taxe d’aménagement ni archéologie
3. TVA frais de notaire = **7 %** (pas 20 %)

### Parité fixture (ERP = formule C.2)
| Poste | Valeur ERP |
|-------|------------|
| sdp_totale | 4302.7 |
| prix_terrain_libre_ht | 2166480 |
| prix_terrain_social_ht | 341190 |
| sous_total_terrain | 2507670 |
| frais_notaire | 50153.4 |
| total_foncier | 2557823.4 |
| taxe_amenagement | 259770.2625 |
| archeologie_preventive | 19968.6624 |
| pfac | 86054 |
| pup | 504000 |
| total_taxes_brique_1 | 869792.9249 |

## DÉPLOIEMENT-TEST

1. `git pull` ; `migrate --force` ; `optimize:clear` ; `view:clear` ; `route:clear`
2. Ouvrir `/foncier/faisabilite/moteur-tech-promotion` (permission `foncier.lecture`)
3. Comparer tableau parité à l’Excel
4. Vérifier lotissement `/foncier/faisabilite/moteur-tech` inchangé

## LEÇON

Un seul moteur conceptuel (D44), deux jeux de postes : ne pas forcer la
promotion dans `FaisabiliteInput` lotissement. Reproduire les anomalies Excel
avec signal visible — les corriger en silence créerait un écart « amélioré »
avec la matrice de référence.
