---
suivi: 1103
date: 2026-07-30
sujet: Foncier — fix import manquant ParcelleController + smoke/réflexion
chantier: module-foncier
type: fix
statut: poussé
hash: 20f20a14
fichiers:
  - app/Http/Controllers/Foncier/ParcelleController.php
  - tests/Feature/Foncier/FoncierControllersIntegritySourceTest.php
  - tests/Feature/Foncier/FoncierRoutesSmokeTest.php
  - docs/suivi/SUIVI_1103_fix_import_manquant_smoke_test_foncier.md
---

## PROMPT ENVOYÉ

SUIVI #1103 — FIX 500 PROD import manquant + smoke GET dynamique +
test réflexion sans DB (garde-fou #1086/#1095/#1103). Un commit + push.

## SYNTHÈSE

### Cause
`Class "App\Http\Controllers\Foncier\FoncierReferentiels" not found` à
`ParcelleController.php:102` (écran prospection). Le `use
App\Support\Foncier\FoncierReferentiels` a été **supprimé par accident** dans
le commit `#1092` (`4e5378e2`) lors de l’ajout de `use Illuminate\Support\Facades\DB`.
Il existait avant (#1088). PHP résolvait le nom court dans le namespace courant.

### Correction
Restauration du `use` manquant uniquement. Aucun refactor.

### Audit élargi
Analyse statique des contrôleurs Foncier/ + Admin foncier (classes `::`) :
**0 anomalie** hors le `use` corrigé. `ProprietaireController::` dans le même
namespace = OK sans import.

### Garde-fou (livrable principal)
1. `FoncierControllersIntegritySourceTest` (SANS DB, tourne en local) :
   - instanciation DI de chaque contrôleur foncier/admin lié
   - types signatures / propriétés résolubles
   - classes `::` importées ou même namespace (#1103)
   - `$this->authorize` ⇒ trait `AuthorizesRequests` (#1086)
   - paramètres méthode = segments de route (#1095)
2. `FoncierRoutesSmokeTest` (GET dynamique via `Route::getRoutes()`, fixtures
   minimales, 403/404 OK, 500 = fail) — skippé sans `pdo_sqlite`.

### Preuve des 3 bugs
Réintroduction temporaire → le test de réflexion échoue dans les 3 cas
(`ALL_THREE_DETECTED=YES`). Voir synthèse commit.

### Journal
Pas d’entrée : correctif technique invisible (règle journal).

## DÉPLOIEMENT / TEST

```
git pull origin main
php artisan optimize:clear
php artisan view:clear
```

Pas de migration. Pas de `journal:sync`. Vérifier `GET /foncier/parcelles` → 200.

## LEÇON

Trois fatals runtime de la même famille en trois lots :
- #1086 `$this->authorize()` sans trait `AuthorizesRequests`
- #1095 nom de paramètre ≠ segment de route → binding sauté
- #1103 `use` manquant → Class not found

**Aucun n’est détectable par `php -l`.** Les tests Feature sqlite sont souvent
skipped en local. Le garde-fou par réflexion (imports, trait authorize,
alignement route↔signature, DI) est le seul contrôle qui couvre cette classe
d’erreurs avant la prod — à étendre aux autres modules si la formule tient.
