# TASK.md — Tâches à venir ## [Feature] Découvrir — Suggestions de mangas via MangaDex **Objectif :** Page "Découvrir" qui propose des mangas populaires/récents depuis l'API MangaDex, en excluant ceux déjà présents en base (comparaison via `externalId` = ID MangaDex). ### Backend - [ ] **Consulter la doc API MangaDex** pour identifier le(s) endpoint(s) pertinents (mangas populaires, récemment mis à jour, tendances…) et les paramètres disponibles (filtres langue, statut, contentRating, etc.) - [ ] **Étendre le client MangaDex existant** pour exposer le(s) nouvel(aux) endpoint(s) identifiés (nouveau(x) méthode(s) dans le client + adapter le contrat d'interface si besoin) - [ ] Query `GetDiscoverMangaListQuery` + handler qui appelle le client MangaDex et filtre les résultats dont l'`externalId` est déjà en base - [ ] Response DTO `DiscoverMangaListResponse` avec les champs nécessaires à l'affichage (id MangaDex, titre, couverture, genres, statut…) - [ ] State Provider API Platform sur la route `GET /api/manga/discover` ### Frontend - [ ] Page `DiscoverPage.vue` avec grille de cards (réutiliser `MangaCard.vue` ou créer `DiscoverMangaCard.vue`) - [ ] Composable TanStack Query `useDiscoverMangaList` - [ ] Route Vue Router `/discover` - [ ] Entrée dans la Sidebar --- ## [Domain] Créer le domaine "System" **Objectif :** Poser la structure DDD hexagonale du nouveau domaine `System` qui servira de socle aux fonctionnalités Status et Logs. - [ ] Créer l'arborescence `src/Domain/System/Domain/`, `Application/`, `Infrastructure/` - [ ] Créer l'arborescence frontend `assets/vue/app/domain/system/` - [ ] Vérifier la conformité avec `phparkitect.php` (ajouter le domaine si nécessaire) --- ## [Feature] System — Page "Status" **Objectif :** Page de monitoring affichant l'état général de l'application. ### Backend - [ ] Query `GetSystemStatusQuery` + handler qui agrège : - Version de l'application (depuis `composer.json` ou variable d'env) - Statut des services critiques (base de données, Messenger workers, stockage) - Poids total des images (scan du dossier `IMAGE_DATA_PATH`) - Poids total des CBZ (scan du dossier `MANGA_DATA_PATH`) - Liens / chemins vers les dossiers de stockage configurés - [ ] Response DTO `SystemStatusResponse` - [ ] State Provider API Platform sur la route `GET /api/system/status` ### Frontend - [ ] Page `StatusPage.vue` avec sections (Général, Stockage, Services) - [ ] Composable TanStack Query `useSystemStatus` - [ ] Route Vue Router `/system/status` --- ## [Feature] System — Page "Logs" **Objectif :** Page de consultation des logs d'erreur des workers Messenger, avec filtres. ### Backend - [ ] Définir le contrat `WorkerLogRepositoryInterface` dans `System/Domain/Contract/Repository/` - [ ] Implémenter `DoctrineWorkerLogRepository` (ou lecture des logs Monolog selon la stratégie retenue) dans `Infrastructure/` - [ ] Query `GetWorkerLogsQuery` avec paramètres de filtrage (date début/fin, source, niveau, worker/transport) + handler - [ ] Response DTO `WorkerLogListResponse` (liste paginée) - [ ] State Provider API Platform sur la route `GET /api/system/logs` ### Frontend - [ ] Page `LogsPage.vue` avec tableau paginé + panneau de filtres - [ ] Filtres disponibles : plage de dates, source (transport Messenger), niveau d'erreur, manga associé (source préférée) - [ ] Composable TanStack Query `useWorkerLogs` (avec paramètres de filtre réactifs) - [ ] Route Vue Router `/system/logs` --- ## [UI] Simplifier l'affichage overview des mangas **Objectif :** Améliorer l'ergonomie de la page d'accueil mangas en simplifiant l'affichage et en ajoutant des raccourcis rapides vers les actions courantes. ### Vue table - [ ] **Raccourcis actions rapides** : dans chaque ligne de la table, ajouter un menu d'actions (icônes ou dropdown) permettant d'ouvrir directement les modales : éditer le manga, gérer les sources, lancer un scrape, supprimer - [ ] **Colonne statut de lecture** : afficher le statut (en cours / terminé / abandonné…) directement dans la ligne sans ouvrir la modale - [ ] **Colonne dernière activité** : date du dernier chapitre scrapé ou lu - [ ] **Raccourci ouverture rapide** : clic sur le titre ouvre le reader / detail page directement ### Vue grille (MangaCard) - [ ] **Overlay actions** : au survol d'une card, afficher des boutons d'action rapide superposés (éditer, sources, scrape) - [ ] **Badge statut source préférée** : indicateur visuel si la source préférée est configurée ou non ### Modales accessibles - [ ] **Modale "Éditer manga"** : accessible depuis la table (icône crayon) et la card (overlay) - [ ] **Modale "Gérer sources"** : accessible depuis la table et la card - [ ] **Confirmation scrape rapide** : déclencher un scrape depuis la liste sans naviguer vers le détail ---