# Écriture d'une nouvelle fonctionnalité : s'abonner aux notification de pages modifiées dans un livre.

---

## Plan d'action — Digest de suivi de livres BookStack

### Contexte

Remplacer le hack `notify-tagged-page-updates` (notification par rôle, immédiate) par un système de **suivi individuel par utilisateur** avec **digest périodique**.

---

### Ce qu'on sait déjà

- ❌ Pas d'événement `CRON/DAILY` dans `ThemeEvents.php` → le déclencheur du digest sera un **cron sur l'hôte** (`msi-01`)
- ✅ Le stockage sera un **fichier JSON externe** monté en volume, jamais touché par les mises à jour de l'image
- ✅ L'abonnement se fait via un **tag `follow:nicolas,marino`** posé manuellement sur le livre — choix individuel, pas de groupe

<p class="callout warning">Pas totalement d'accord avec le cron externe : cela fragilise le système. au moins une cron intégré au conteneur serait plus sécurisé. mais utiliser la fonction schedule de laravel serait le plus robuste.</p>

---

### Les 3 chantiers

**Chantier 1 — Le fichier JSON**

- Définir son emplacement dans le volume (`/srv/bookstack/bookstack_data/hack-digest.json`)
- Définir sa structure définitive
- Le créer vide au départ

**Chantier 2 — Réécriture du `functions.php`**

- Écouter `PAGE_UPDATE` → lire le tag `follow:` sur le livre → accumuler dans le JSON
- Remplacer toute la logique d'envoi immédiat par l'accumulation

**Chantier 3 — Le digest**

- Écrire le script d'envoi (commande artisan custom ou script PHP standalone)
- Formater l'email récapitulatif (liste des pages modifiées par livre)
- Brancher le cron sur l'hôte à l'heure souhaitée

---

### Questions à trancher en début de prochaine session

1. **Fréquence du digest** — quotidien à heure fixe ? Paramétrable par utilisateur ?
2. **Emplacement du JSON** — à confirmer selon la structure de tes volumes
3. **Format de l'email** — simple liste texte ou HTML avec liens cliquables ?

---

Bonne soirée ! 🚀