---
suivi: 1763
date: 2026-09-30
sujet: Onglet Foncier de la barre programme
chantier: foncier
type: correctif
statut: poussé
hash:
fichiers:
  - app/Http/Middleware/HandleInertiaRequests.php
  - resources/js/Layouts/AppShell.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/LiensProgrammeDossierFoncier1753SourceTest.php
  - tests/Feature/Foncier/OngletFoncierProgramme1763Test.php
  - public/build/
  - docs/suivi/SUIVI_1763_onglet_foncier_programme_fix.md
---

# SUIVI #1763 — onglet Foncier après Documents

## PROMPT ENVOYÉ

PHASE 2, suite du diagnostic #1757. La prop de page `programme` remplace la prop partagée, donc `foncier_tab_visible` et `foncier_dossiers` disparaissent. Porter les dossiers visibles sur une clé partagée dédiée. Un seul onglet FONCIER, après Documents. Retirer l’onglet hub de la barre. La route hub reste. Visibilité inchangée.

## FICHES LUES

- **#1757** LEÇON : une prop de page du même nom remplace toute la prop partagée. Les drapeaux de navigation ne peuvent pas rester sur `programme`. Le correctif suit cette leçon : clé `programme_foncier_nav`, lue par `programmeNavItems`.
- **#1753** LEÇON : deux habilitations distinctes. On ne déduit pas le dossier depuis le programme. `dossiersVisiblesPourNavigation` est inchangé (créateur, habilitation lecture ou gestion, direction générale, PDG, DSI, admin ERP). Le bouton « Programme … » de la fiche dossier n’est pas touché.

## CORRECTIF

`HandleInertiaRequests` partage `programme_foncier_nav` : `programme_id` et `dossiers` (`DossierProgrammeLink::dossiersVisiblesPourNavigation`). `resolveProgrammeFromRoute` ne porte plus `foncier_tab_visible` ni `foncier_dossiers`. Les pages continuent d’envoyer leur propre `programme` (bandeau, statut).

`AppShell` `programmeNavItems` lit cette clé seulement si `programme_id` est celui de la barre. Un dossier : lien direct. Plusieurs : menu. Aucun : pas d’onglet. L’onglet hub (avant Commercialisation, vers `/programmes/{id}/foncier`) n’est plus poussé. La route `programmes.foncier` reste.

## DÉPLOIEMENT-TEST

- `git pull origin main`
- `php artisan view:clear`
- `php artisan journal:sync`

Pas de migration. Pas de `route:clear`.

Bundle de la barre (layout dans `app.js`) : `app-DA_7GBov.js`. CSS associé : `app-Dvb4GdFc.css`.

1. Programme HORIZON (122), usurpation Eric PORTALES : un seul FONCIER, après Documents, vers DF-2026-0004. Pas d’onglet avant Commercialisation.
2. Même barre avec Robin (admin / direction générale).
3. Utilisateur en lecture seule sur ZEN : l’onglet est là.
4. Utilisateur sans droit sur ZEN : pas d’onglet.
5. Résumé, Commercialisation, Chantier, Financier, Documents : l’onglet reste.

Le bouton « Programme … » de la fiche dossier et les autres entrées de la barre sont inchangés. Pas de `overflow-x-hidden`.

Tests locaux : `LiensProgrammeDossierFoncier1753SourceTest` 3 passed. `OngletFoncierProgramme1763Test` skipped (`pdo_sqlite` indisponible). La base MySQL locale est refusée : les cinq parcours prod n’ont pas été rejoués ici.

## LEÇON

Le bandeau `programme` et la navigation dossier ne partagent pas la même clé Inertia. Les pages programme remplacent `programme` ; elles ne renvoient pas `programme_foncier_nav`.
