Files
Mangarr/TASK.md
2026-03-14 00:36:19 +01:00

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'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