Commit Graph

30 Commits

Author SHA1 Message Date
ext.jeremy.guillot@maxicoffee.domains
5ed303612a feat: migrer vers Symfony 8, PHP 8.4 et les dépendances majeures associées
- PHP 8.3 → 8.4 (Dockerfile + composer.json)
- Symfony 7.0 → 8.0 (tous les composants symfony/*)
- API Platform 3.x → 4.x : migration openapiContext → openapi: new Operation(...)
- Doctrine DBAL 3 → 4 : suppression use_savepoints, replace prepare/executeQuery
- Doctrine ORM 2.x → 3.x : ClassMetadataInfo → ClassMetadata, setParameters → setParameter
- Doctrine Bundle 2.x → 3.x, Fixtures Bundle 3.x → 4.x
- zenstruck/foundry 1.x → 2.x : ModelFactory → PersistentObjectFactory, getDefaults → defaults
- phpmd/phpmd 2.x → 3.x-dev (seule version supportant Symfony 8)
- phparkitect 0.3 → 0.8 : NotDependsOnTheseNamespaces prend un array
- symfony/mercure-bundle 0.3 → 0.4, symfony/monolog-bundle 3 → 4
- Suppression de runtime/frankenphp-symfony (intégré nativement dans symfony/runtime 8)
- worker.Caddyfile : suppression de APP_RUNTIME (détection automatique Symfony 8)
- Routes errors.xml/wdt.xml/profiler.xml → .php (Symfony 8 supprime le XML)
- Types::ARRAY → Types::JSON dans Entity/Manga.php (DBAL 4 retire array type)
- Suppression de src/Schedule.php (doublon vide avec MonitoringSchedule)
- Tests : hydra:Collection → Collection, hydra:member → member (API Platform 4)
2026-03-26 17:55:12 +01:00
ext.jeremy.guillot@maxicoffee.domains
5a0888eb28 refactor: supprimer tout le code legacy MVC/Twig/Stimulus
Supprime toutes les couches pré-DDD pour ne garder que l'architecture
hexagonale (src/Domain/), les entités Doctrine et le front Vue.js SPA.

Supprimé :
- src/Controller/ (9 controllers Twig, garde SecurityController)
- src/Service/, src/Message/, src/MessageHandler/ (services et messages legacy)
- src/Manager/, src/Twig/, src/Form/ (UI legacy)
- src/Event/, src/EventListener/, src/EventSubscriber/QueueStatusSubscriber
- src/Client/MangadexClient.php (doublon du Domain)
- src/Interface/, src/Factory/, src/DataFixtures/, src/Scheduler/MainSchedule
- templates/ (tous sauf vue/ et base retiré — SecurityController = pur JSON)
- assets/controllers/ (20 Stimulus controllers), app.js, bootstrap.js, controllers.json

Modifié :
- config/routes.yaml : suppression du chargement des controllers legacy
- config/packages/messenger.yaml : suppression des routes legacy
- config/services.yaml : suppression des bindings legacy + entrées Domain\Import fantômes
- webpack.config.js : suppression entry 'app' et enableStimulusBridge
- src/Entity/Chapter.php : suppression #[Broadcast] (Turbo Streams legacy)

Déplacé :
- src/Factory/*.php → tests/Factory/ (namespace App\Tests\Factory)
2026-03-26 17:00:46 +01:00
ext.jeremy.guillot@maxicoffee.domains
ca8791cc0d feat(system): page Status avec endpoint API Platform et composants Vue
- Nouveau domaine System/Domain/Model/SystemStatus (value object)
- QueryHandler agrégeant métriques mangas, chapitres, jobs (global/24h/7j), stockage et sources
- Endpoint GET /api/system/status via API Platform (singleton)
- Calcul de l'espace disque par RecursiveDirectoryIterator sur public/images
- Page Vue /system/status avec 6 cards (Mangas, Chapitres, Jobs, Stockage, Sources, Système)
- Nettoyage du router : suppression des PlaceholderComponent et routes placeholder
- Sidebar : suppression des entrées sans page réelle
2026-03-17 22:04:48 +01:00
ext.jeremy.guillot@maxicoffee.domains
fa035bfbfa refactor(scraping): job PENDING dès le POST HTTP, handler sans Doctrine
- ScrapingJob: mangaId/chapterNumber/sourceId optionnels (nullable) pour
  permettre la création en PENDING sans lookup DB dans le StateProcessor
- ScrapeChapter: ajoute jobId (pré-généré par le StateProcessor)
- ScrapeChapterStateProcessor: crée et persiste le job PENDING avant
  dispatch; injecte JobRepositoryInterface uniquement
- ScrapeChapterHandler: supprime EntityManagerInterface, beginTransaction/
  commit/rollback; charge le job existant via jobId, complete() sur succès
  seulement, fail() si toutes les sources échouent
- ScrapeChapterHandlerTest: pré-crée le job, passe jobId dans la commande,
  supprime le mock EntityManagerInterface
- ScrapeChapterTest: accès aux messages via static InMemoryMessageBus,
  vérifie la présence du jobId dans la commande dispatchée
2026-03-17 15:33:20 +01:00
156d2eea37 Merge branch 'main' into feature/notification-system 2026-03-12 18:56:20 +01:00
ext.jeremy.guillot@maxicoffee.domains
e5c319db79 fix: amélioration du système de notifications
- Correction de l'affichage du texte dans le toast (suppression de w-0/truncate)
- Déplacement des toasts en bas à gauche avec animation slide depuis la gauche
- Inversion de l'ordre des éléments : bouton fermeture > texte > icône > bande couleur
- Fix timing : ChapterScrapingStarted synchrone pour notif "démarrage" avant le scraping
- Ajout make notify-test pour tester les 4 types de notifications

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 18:55:15 +01:00
ext.jeremy.guillot@maxicoffee.domains
2a8b6bc397 feat: deploy optimisation
All checks were successful
Deploy / deploy (push) Successful in 3m23s
2026-03-11 21:56:23 +01:00
ext.jeremy.guillot@maxicoffee.domains
c311cfe80c refactor(scraping): DDD refactoring — stockage images individuelles
Le domaine Scraping ne génère plus d'archives CBZ ni ne modifie les
entités du domaine Manga directement. Il scrape, stocke les images
individuellement, et émet un événement partagé.

- Suppression : CbzGeneratorInterface, CbzGenerator, CbzGenerationRequest,
  CbzPath, CbzGenerationException
- Suppression : save() de ChapterRepositoryInterface (Scraping)
- Suppression : cbzPath du modèle Chapter (Scraping)
- Ajout : ImageStorageInterface + LocalImageStorage
  (stockage dans {MANGA_DATA_PATH}/pages/{chapterId}/)
- ScrapeChapterHandler utilise ImageStorage au lieu du générateur CBZ

- ChapterScraped déplacé dans Domain/Shared/Domain/Event/
  avec jobId, chapterId, pagesDirectory, pageCount
- Routing Messenger ajouté

- Ajout : ChapterScrapedEventListener + ChapterScrapedMessageHandler
  pour mettre à jour Chapter.pagesDirectory via le Repository Manga

- LegacyChapterRepository en dual-mode :
  pagesDirectory en priorité, fallback cbzPath (backward compat)
- Requêtes prev/next : filtrent pagesDirectory IS NOT NULL OR cbzPath IS NOT NULL
- ChapterContext expose pagesDirectory

- phparkitect.php : App\Domain\Shared\Domain\Event autorisé dans
  les couches Application (correction violations pré-existantes
  ChapterImported/VolumeImported + nouvelle ChapterScraped)

- 218/218 tests passent (+3 nouveaux)
- InMemoryImageStorage créé pour les tests unitaires

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 20:52:16 +01:00
ext.jeremy.guillot@maxicoffee.domains
58f68541f4 fix: composer.lock sync
Some checks failed
Build and Deploy / deploy (push) Failing after 1s
2026-02-08 21:56:38 +01:00
ext.jeremy.guillot@maxicoffee.domains
f472e250eb fix: composer.lock sync
Some checks failed
Build and Deploy / deploy (push) Failing after 0s
2026-02-08 21:54:59 +01:00
ext.jeremy.guillot@maxicoffee.domains
3170a7c60e feat: analyse import + all tests fixed 2025-10-15 16:14:15 +02:00
ext.jeremy.guillot@maxicoffee.domains
8d14676656 feat: amélioration de la gestion des messages dans le Makefile avec la séparation des commandes et des événements. Mise à jour des services pour intégrer un nouvel EventDispatcher et réorganisation des imports dans les fichiers concernés. Gestion des exceptions ajoutée dans le provider Mangadex pour une meilleure robustesse. 2025-08-01 15:14:12 +02:00
ext.jeremy.guillot@maxicoffee.domains
00d63dffeb feat: ajout de la fonctionnalité de monitoring des mangas, incluant l'activation et la désactivation du suivi, la synchronisation des chapitres, et la mise à jour de l'API pour gérer ces nouvelles actions. Création de nouveaux composants Vue pour le rafraîchissement des chapitres et l'affichage des notifications. Intégration de tests unitaires pour valider le bon fonctionnement de ces fonctionnalités. 2025-07-22 15:57:25 +02:00
ext.jeremy.guillot@maxicoffee.domains
7a05934116 feat: ajout de la fonctionnalité de conversion de fichiers de bande dessinée, permettant la conversion de fichiers CBR en CBZ. Intégration d'un service de conversion, d'une API pour gérer les téléchargements, et mise en place de validations pour les fichiers uploadés. Tests unitaires ajoutés pour garantir le bon fonctionnement de cette nouvelle fonctionnalité. 2025-07-14 16:44:18 +02:00
ext.jeremy.guillot@maxicoffee.domains
32b4e4fbb2 feat: ajout de la gestion des sources de contenu avec des commandes et des gestionnaires pour l'importation, la mise à jour et l'exportation, ainsi que la création des ressources API correspondantes. 2025-06-26 23:24:13 +02:00
ext.jeremy.guillot@maxicoffee.domains
4dc6e5cfab fix: preferred chapter fix 2025-06-26 14:51:00 +02:00
ext.jeremy.guillot@maxicoffee.domains
75f8e1686c feat: ajout de la gestion des sources préférées pour les mangas, incluant la récupération et la configuration des sources via l'API, ainsi que l'intégration d'une modale pour l'interface utilisateur. 2025-06-20 15:33:54 +02:00
ext.jeremy.guillot@maxicoffee.domains
d7ccc1e603 feat: ajout de la gestion des jobs avec création, récupération et filtrage via l'API, incluant des entités et des mappers pour les échecs et les jobs 2025-03-29 15:15:14 +01:00
ext.jeremy.guillot@maxicoffee.domains
55945adc53 feat: Reader beginning 2025-02-16 16:15:42 +01:00
ext.jeremy.guillot@maxicoffee.domains
879b8fa2dc feat: endpoint FetchMangaChapters et tests 2025-02-11 18:00:49 +01:00
ext.jeremy.guillot@maxicoffee.domains
e3d380eadd feat: GetMangaList endpoint + tests + test db 2025-02-10 19:21:14 +01:00
ext.jeremy.guillot@maxicoffee.domains
0374ab0e46 feat: scraping endpoints, job persistence, firsts unit tests, legacy entities usage 2025-02-07 11:56:51 +01:00
ext.jeremy.guillot@maxicoffee.domains
6bc3696190 feat: firsts endpoints and firsts tests 2025-02-05 16:54:13 +01:00
Jérémy Guillot
ff59aa5d77 Added:
- Monitoring chapters
- possibilities for ToolBarButton.html.twig to have tailwind classes see ChapterListToolbar.php
- Makefile scheduler command
- Makefile make:message command
2024-07-20 19:40:48 +02:00
Jérémy Guillot
54c581b229 Added:
- turbo + code adaptation
- cover & thumbnails download
2024-07-06 21:25:07 +02:00
Jérémy Guillot
586ebdb126 Added:
- AdditionnalData for buttons
- refresh manga metadata and chapters
2024-07-05 19:03:16 +02:00
Jérémy Guillot
f88fa2c232 Added:
- Messenger, Mercure
- chapter download flow (lelscan only)
2024-06-13 18:08:35 +02:00
Jérémy Guillot
c46e1a0a5c - trop de trucs d'un coup... je vais faire attention ensuite ^^' 2024-06-10 13:57:50 +02:00
Jérémy Guillot
291e85338a - Portage des fonctionnalités de la branche main
- Ajout de node et npm dans la Dockerfile

- Ajout des Factories et Fixtures

- Ajout de npm-install dans Make install
2024-06-03 19:41:24 +02:00
Jérémy Guillot
bddcdd6823 refonte 2024-06-03 17:36:22 +02:00