L'analyzer ne vérifiait jamais le statut cancelled en DB, ce qui faisait continuer le traitement des thumbnails jusqu'au bout, puis écraser le statut 'cancelled' avec 'success'. Ajout d'un poller background toutes les 2s avec AtomicBool partagé pour stopper proprement le stream concurrent. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>