---
suivi: 1281
date: 2026-08-12
sujet: Prospection foncier — visibilité parcelles / filtre mon_secteur
chantier: module-foncier
type: fix
statut: poussé
hash: 159ac522
fichiers:
  - app/Services/Foncier/ParcelleProspectionQuery.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Models/User.php
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - resources/js/Pages/Foncier/Parcelles/Index.vue
  - resources/js/Components/Foncier/Prospection/CommunePanel.vue
  - resources/js/Components/Foncier/Prospection/ParcellePanel.vue
  - tools/diag/verif_visibilite_prospection_1281.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1281_prospection_visibilite_secteur.md
---

## PROMPT ENVOYÉ

FIX visibilité Prospection : module vide pour tous sauf user id 1.
`mon_secteur` ON par défaut + `codesInseePourUtilisateur` vide → grille à 0.
Correctifs B (défaut OFF) + C (createur voit toujours ses parcelles si filtre actif).
Badge filtres + message écran vide. Aucune migration.

## SYNTHÈSE

### Chaîne de causalité

1. `resolveMonSecteurPreference` : défaut `true` si préférence absente (#1076).
2. `ParcelleProspectionQuery::applyFilters` : si `mon_secteur`, filtre `code_insee_commune IN codes` ; si `codes === []` → `0 = 1`.
3. Un seul secteur (titulaire id 1, 2 périmètres) → Eric (id 35) : 0 commune.
4. Eric createur des 4 parcelles (Mudaison 34176 hors périmètre) → invisible malgré création.

**Portée** : tous les utilisateurs sans secteur titulaire/suppléant, pas seul Eric.

### Correctifs

| Id | Action |
|----|--------|
| B | Défaut `mon_secteur` = **OFF** si préférence absente (ProspectionController + ParcelleController + front). Préférence stockée inchangée. |
| C | Si `mon_secteur` actif : `(commune ∈ secteur) OU (createur_id = moi)` via `applyMonSecteurFilter`. |
| UI | Badge `Filtres (n)` compte « Mon secteur » quand actif ; message explicite si grille vide + filtre secteur ; lien désactivation. |

### Sécurité

`mon_secteur` = confort d'affichage (#1076, commentaire ParcelleProspectionQuery L227).
ACL réelle = `FoncierReferentielVisibiliteScope` (#1116), distinct.
Messages « information non bloquante » (ParcelleController création) : secteur indicatif, pas restrictif.

### Signalements (non corrigés)

- Un seul secteur « Test Robin », paramétrage jamais finalisé.
- Mudaison (34176) hors tout périmètre.
- Colonne « CHARGÉ » = `proprietaires.responsable_id` → `User.name` (pas colonne parcelle, pas secteur).

## DÉPLOIEMENT-TEST

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

Tests écran : usurpation Eric → 4 parcelles ; mon_secteur ON → 4 parcelles + badge Filtres (1) ; Robin inchangé avec secteur ON.

## LEÇON

Un filtre **ON par défaut** s'appuyant sur une liste vide masque **tout** sans erreur.
Un badge « Filtres (0) » qui ne compte pas les défauts actifs rend le problème **invisible**.
Règle : tableau vide = « rien » en SQL, pas « pas de restriction » — toujours documenter et compter les filtres implicites.
