---
suivi: 1721
date: 2026-09-25
sujet: Widget dernières alertes
chantier: accueil
type: feature
statut: poussé
hash:
fichiers:
  - config/dashboard_widgets.php
  - app/Services/Dashboard/WidgetDataService.php
  - app/Services/Dashboard/DashboardDefaultLayoutService.php
  - resources/js/Components/Dashboard/DernieresAlertesWidget.vue
  - resources/js/Components/Dashboard/WidgetBody.vue
  - database/migrations/2026_09_25_111800_seed_widget_dernieres_alertes.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1721_widget_dernieres_alertes.md
---

# SUIVI #1721 — widget Dernières alertes

L'accueil affiche les cinq dernières alertes de la cloche de l'utilisateur connecté (personne usurpée comprise). Un clic reprend `POST /alertes/{id}/lire` puis l'ouverture du lien. Le pied ouvre `/alertes`. Départ `b705aabf`.

## CONSTAT

Table `alertes` (modèle `Alerte`). Champs : `titre`, `message`, `lien`, `lu_at` (null = non lue), `created_at`, `user_id`, `groupe_cible`. Périmètre `Alerte::scopeForUser`. Compteur `GET /alertes/count`. Liste `GET /alertes`. Clic page Alertes : `marquerLueEtOuvrir`.

## DÉPLOIEMENT

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

## LEÇON

La cloche n'est pas la table Laravel `notifications`. Le widget doit appeler `forUser` et le même `POST /alertes/{id}/lire`. Pas de cache : une lecture doit apparaître au rechargement. La liste complète existe déjà (`/alertes`).
