feat(activity): mises à jour temps réel des jobs via Mercure
- Ajoute jobId dans ChapterScrapingStarted et ChapterScrapingFailed - Publie job.created (PENDING) depuis ScrapeChapterStateProcessor - Publie job.status_changed (in_progress/completed/failed) depuis ScrapingEventSubscriber - Gère job.created et job.status_changed dans activityStore : ajout instantané et suppression différée (1.5s)
This commit is contained in:
parent
84c4557abf
commit
6065eb0eb1
@@ -50,11 +50,13 @@ class ScrapingEventSubscriber implements EventSubscriberInterface
|
||||
#[AsMessageHandler]
|
||||
public function onChapterScrapingStarted(ChapterScrapingStarted $event): void
|
||||
{
|
||||
$chapterNumber = $event->getChapterNumber();
|
||||
$mangaTitle = $event->getMangaTitle();
|
||||
$this->hub->publish(new Update(
|
||||
'jobs/activity',
|
||||
json_encode(['type' => 'job.status_changed', 'jobId' => $event->getJobId(), 'status' => 'in_progress'])
|
||||
));
|
||||
|
||||
$this->notification->sendInfo(
|
||||
sprintf('Scraping du chapitre %s de "%s" démarré', $chapterNumber, $mangaTitle)
|
||||
sprintf('Scraping du chapitre %s de "%s" démarré', $event->getChapterNumber(), $event->getMangaTitle())
|
||||
);
|
||||
}
|
||||
|
||||
@@ -101,6 +103,11 @@ class ScrapingEventSubscriber implements EventSubscriberInterface
|
||||
$update = new Update($topics, json_encode($data));
|
||||
$this->hub->publish($update);
|
||||
|
||||
$this->hub->publish(new Update(
|
||||
'jobs/activity',
|
||||
json_encode(['type' => 'job.status_changed', 'jobId' => $jobId, 'status' => 'completed'])
|
||||
));
|
||||
|
||||
$mangaTitle = $job->context['mangaTitle'] ?? 'manga inconnu';
|
||||
$this->notification->sendSuccess(
|
||||
sprintf('Chapitre %s de "%s" scrappé avec succès', $chapter->chapterNumber, $mangaTitle)
|
||||
@@ -110,6 +117,11 @@ class ScrapingEventSubscriber implements EventSubscriberInterface
|
||||
#[AsMessageHandler]
|
||||
public function onChapterScrapingFailed(ChapterScrapingFailed $event): void
|
||||
{
|
||||
$this->hub->publish(new Update(
|
||||
'jobs/activity',
|
||||
json_encode(['type' => 'job.status_changed', 'jobId' => $event->getJobId(), 'status' => 'failed'])
|
||||
));
|
||||
|
||||
$this->logger->info('ChapterScrapingFailed reçu pour mangaId: ' . $event->getMangaId() . ', chapter: ' . $event->getChapterNumber());
|
||||
|
||||
$data = [
|
||||
|
||||
Reference in New Issue
Block a user