03-comment-je-travaille/tutos/ia/veille-automatisee-symfony.md

Tuto — Veille automatisée avec Symfony (Scheduler + Messenger)

Public visé : développeur Symfony qui veut planifier un traitement récurrent. Objectif : poser le squelette du pipeline de veille (specs/ia-veille.md) : une tâche planifiée collecte des sources, puis un handler asynchrone résume et propose une entrée.


Les deux briques

  • Scheduler : dĂ©clenche une tâche Ă  intervalle rĂ©gulier (cron applicatif, en PHP).
  • Messenger : traite les messages en asynchrone (rĂ©silience, reprise, parallĂ©lisme).

Idée : le Scheduler émet un message « collecter la veille » à la cadence voulue ; un handler Messenger fait le travail.


1. Le message et son handler

final class CollectVeille
{
    public function __construct(public string $theme = 'ia') {}
}

#[AsMessageHandler]
final class CollectVeilleHandler
{
    public function __construct(
        private SourceFetcher $fetcher,     // récupère les flux
        private Deduplicator $dedup,        // filtre le déjà-vu
        private Summarizer $summarizer,     // résumé via Claude
        private VeilleWriter $writer,       // écrit une proposition
    ) {}

    public function __invoke(CollectVeille $msg): void
    {
        foreach ($this->fetcher->fetch($msg->theme) as $item) {
            if ($this->dedup->seen($item)) {
                continue;
            }
            $summary = $this->summarizer->summarize($item); // conserve la source + lien
            $this->writer->propose($msg->theme, $item, $summary); // brouillon, pas publication
        }
    }
}

2. Planifier l'émission (Scheduler)

#[AsSchedule('veille')]
final class VeilleSchedule implements ScheduleProviderInterface
{
    public function getSchedule(): Schedule
    {
        return (new Schedule())->add(
            RecurringMessage::cron('0 7 * * *', new CollectVeille('ia')) // tous les jours 7h
        );
    }
}

La cadence (veille.schedule) et les sources (veille.sources) viennent de la configuration (spec §6).


3. Exécuter

  • Lancer le worker Messenger : php bin/console messenger:consume scheduler_veille async.
  • Le Scheduler Ă©met CollectVeille Ă  l'heure prĂ©vue ; le handler traite chaque item.

4. Garde-fous (non négociables)

  • Sortie = proposition dans pilotage/veille/, rĂ©visĂ©e par un humain — jamais de publication automatique.
  • Juridique : rĂ©sumer + lien vers le texte officiel (CNIL, EUR-Lex), aucune affirmation faisant autoritĂ© (cf. fiche 6.1).
  • Sources : citer systĂ©matiquement ; respecter les conditions d'utilisation des sources (rĂ©sumĂ© + lien, pas de copie intĂ©grale).

Pour aller plus loin

  • Spec veille : specs/ia-veille.md
  • Veille existante (destination) : pilotage/veille/README.md
  • Agents & automatisation (cadre) : fiche 4.5

Assistant documentaire

Posez une question sur la documentation. Les réponses citent leurs sources — un clic ouvre le document à gauche.

Loading…
Loading the web debug toolbar…
Attempt #