---
suivi: 1314
date: 2026-08-13
sujet: marche_fiche_nav_onglets
chantier: marches_compta
type: presentation
statut: poussé
hash: 38ff0947
fichiers:
  - resources/js/Pages/Marches/Show.vue
  - resources/js/Layouts/AppShell.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1314_fiche_marche_nav.md
---

## PROMPT ENVOYÉ

Présentation / navigation fiche marché : retirer bandeau documents manquants
(triangle onglet Documents), défaut SYNTHÈSE (liens profonds conservés),
titre en tête, retour Suivi Chantier sous les onglets.
HEAD attendu daa758bf (#1313). Aucun calcul.

## SYNTHÈSE

### Fiches lues
- `#1313` LEÇON : flag `SHOW_MARCHE_KPI_COUVERTURE_HEADER` — laissé à `false`.
- `#1306` / `#1312` : ne pas défaire Retenues.
Approche : réutiliser `documents_manquants` + `missingDocumentsLabel` ; défaut hash vide → `synthese`.

### Mapping UI ↔ back
| Libellé | Valeur | Source | Back |
|---------|--------|--------|------|
| triangle onglet Documents | `documents_manquants.length > 0` | même prop que l’ancien bandeau | `MarcheController` ~L614–625, `MarcheDocumentsHelper::documentsRequisPourPosteType` (`obligatoire_*`) |
| infobulle | `missingDocumentsLabel` | `documents_labels[type]` | labels helper |
| Périmètre | **titulaire seul** | filtre `marche_sous_traitant_id === null` (#1251) | ST restent sur leur bandeau séparé |

### Onglet par défaut / liens profonds
1. Hash vide ou slug inconnu → `synthese`.
2. Hash connu (`#resume`, `#retenues-penalites`, `#factures`…) → cet onglet.
3. Flash `ouvrir_onglet` seulement si hash vide (redirects, ex. avenants). F5 / retour arrière = `hashchange`.

### Lien retour
`marches.index` → `/programmes/{programme}/marches` (inchangé). Ancien emplacement : AppShell fil d’Ariane.

### Vérification écran
**NON** — localhost / SSH OVH indisponibles. À valider en prod sur marché 109.

## DÉPLOIEMENT-TEST

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

## LEÇON

Un bandeau pleine largeur et un picto d’onglet qui ne partagent pas la même source (`documents_manquants` vs une autre liste) recréent deux vérités. Le défaut d’onglet ne doit jamais écraser un hash : le #1256 l’a déjà fait payer en GET→POST.
