4.8 KiB
4.8 KiB
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'externalIdest déjà en base - Response DTO
DiscoverMangaListResponseavec 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.vueavec grille de cards (réutiliserMangaCard.vueou créerDiscoverMangaCard.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.jsonou 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
- Version de l'application (depuis
- Response DTO
SystemStatusResponse - State Provider API Platform sur la route
GET /api/system/status
Frontend
- Page
StatusPage.vueavec 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
WorkerLogRepositoryInterfacedansSystem/Domain/Contract/Repository/ - Implémenter
DoctrineWorkerLogRepository(ou lecture des logs Monolog selon la stratégie retenue) dansInfrastructure/ - Query
GetWorkerLogsQueryavec 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.vueavec 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