---
suivi: 1396
date: 2026-09-02
sujet: dashboard_hauteur_widget
chantier: dashboard
type: fix
statut: poussé
hash: 901eaa2e
fichiers:
  - app/Services/Dashboard/UserDashboardLayoutService.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1396_dashboard_hauteur_widget.md
---

## PROMPT ENVOYÉ

SUIVI #1396 — retirer le plancher `max(height, default_height)` en lecture dans `getLayoutForUser()` (option C Robin). `default_height` reste à la création / seed. Diagnostic #1393.

## FICHES LUES

- `SUIVI_1333_dashboard_widget_factures_strict.md` — intention d’origine du plancher lecture pour layouts seedés h=3.

## MESURE default_height (AVANT DIFF)

| Chemin | Fichier + ligne | Rôle |
|--------|-----------------|------|
| Lecture layout | `UserDashboardLayoutService::getLayoutForUser` L27-30 (avant fix) | `max($w->height, default_height)` — **bug** |
| Ajout widget | `UserDashboardLayoutService::addWidget` L63 + create L91 | catalogue → INSERT |
| Seed initial | `DashboardDefaultLayoutService::seedForUser` L32 + create L47 | catalogue → INSERT |
| Garantie seed | `ensureDefaultLayout` L47-54 → seed si aucune ligne | pas de max lecture |
| Front ajout | `Dashboard/Index.vue` `addWidget` L76 | catalogue local avant saveLayout |
| Auth | `MicrosoftAuthController` L191 → `ensureDefaultLayout` | seed |

**Clause d’arrêt** : création / seed ≠ lecture. Chemins séparés — OK pour retirer le plancher uniquement en lecture.

## SYNTHÈSE

- `getLayoutForUser` renvoie `(int) $w->height` tel quel (symétrie largeur).
- Commentaire #1333 remplacé par note #1396.
- `saveLayout`, grille, widgets, prune : inchangés. Pas de migration / UPDATE données.

## DÉPLOIEMENT-TEST

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

1. Robin : depot_facture h=4 en base → affiché 4 après F5 (~240 px).
2. Réduire, enregistrer, F5 → tient.
3. Agrandir au-delà du défaut, F5 → tient.
4. Retirer puis rajouter → taille catalogue.
5. User sans layout → tailles catalogue (seed).
6. Largeur inchangée.

## LEÇON

- Un plancher « seed legacy » en lecture écrase les redimensionnements utilisateur ; le catalogue ne doit s’appliquer qu’à l’écriture initiale.
