Skip to main content

É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

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.


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 ! 🚀