# Suivi — Cutover Notifications (V4)

Etat: terminé (passe fonctionnelle livrée)

## Décisions
- Cutover net: Activity (GET /api/activity) + Notifications riches (GET /api/notifications/rich)
- Mutations via /api/commands uniquement; admin via /api/admin/*
- Rendu riche via iframe srcdoc + CSP stricte (sans allow-same-origin)
- Suppression legacy après cutover (liste de ménage suivie ici)

## Roadmap
1. DDL tables & index (Activity/NotificationsRiches + pivots état)
2. Services de lecture
3. Contrôleurs & routes GET
4. Handlers NonBoard (MarkSeen/Archive/Delete/...)
5. UI overlay Activité + Modale riche
6. Admin (catégories + éditeur HTML/CSS/JS)
7. Ménage legacy (suppression code/endpoint)

## Ménage (à faire avant clôture)
- Supprimer anciens contrôleurs/services notifications legacy
- Retirer anciennes routes `/api/notifications` si plus utiles
- Purge code UI legacy non référencé
- Mise à jour docs (historique des modifs)

## Journal
- [init] dossier de suivi créé
- [ddl] tables + index ajoutés dans SchemaManager (activity_*, notifications_rich*, pivots)
- [svc] ActivityReadService + NotificationRichReadService ajoutés
- [api] GET /api/activity + GET /api/notifications/rich(/:id) exposés
- [bus] Handlers NonBoard initiaux: Activity.MarkSeen, Notification.Archive, Notification.ArchiveByType, Notification.DeleteForUser

## Ménage (plan détaillé)
- Retirer `/api/notifications` legacy (controller/service) après bascule UI
- Retirer NotificationService/NotificationController legacy + NonBoard handlers `Notification.*` (legacy)
- Purger UI overlay legacy qui consommait `/api/notifications` (rebadge -> Activité, basculé sur /api/activity)
- Remplacer admin notifications legacy par endpoints Catégories/Notifs Riches (et supprimer services legacy)
- Supprimer tables legacy `notifications`, `notification_seen`, `notification_dismissed` (phase finale, après migration et archivage)
- [admin] endpoints ajoutés: /api/admin/notification-categories* et /api/admin/notifications/rich*
- [front] Modale riche: nouveau module packages/ui/notifications-rich.js et intégration dans apps/boards/main.js (cloche → modale riche)
- [todo-front] Migrer apps/board/modules/notifications.js vers modale riche ou activité
- [admin-ui] Vue Notifications: onglets Catégories + CRUD notifications riches (HTML/CSS/JS), endpoints intégrés
- [front] Bouton Activité + overlay basique (GET /api/activity, auto-mark seen)
- [admin-ui] Preview inline (iframe + CSP) branchée au formulaire "notification riche"
- [board-module] Migration vers notifications-rich (store + rendu), map dismiss -> archive
- [cleanup] Legacy supprimé: NotificationService/Controller/Admin, handlers NonBoard legacy, UI notifications.js, routes /api/notifications et /api/admin/notifications
- [cleanup] SchemaManager: retrait des tables legacy (notifications, notification_seen, notification_dismissed) et index associés
- [rich-modal] Historique: bouton Supprimer par item (Notification.DeleteForUser), bouton retour Nouvelles, archive par catégorie masqué en historique
- [security] CSP img-src dynamique (window.location.origin) pour modale et preview admin
- [cleanup] Suppression totale du champ/"pattern" layout (DB/Services/UI) au profit du HTML/CSS libre (propreté maximale)
- [doc] Historique mis à jour (docs/historique et contexte.md)
