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>
28 lines
922 B
YAML
28 lines
922 B
YAML
services:
|
|
_defaults:
|
|
autowire: true
|
|
autoconfigure: true
|
|
public: true
|
|
|
|
Symfony\Component\Messenger\MessageBusInterface:
|
|
class: 'App\Tests\Shared\Adapter\InMemoryMessageBus'
|
|
public: true
|
|
|
|
App\Domain\Scraping\Domain\Contract\Repository\ScrapingJobRepositoryInterface:
|
|
class: 'App\Tests\Domain\Scraping\Adapter\InMemoryScrapingJobRepository'
|
|
public: true
|
|
|
|
App\Domain\Scraping\Domain\Contract\Service\ImageStorageInterface:
|
|
class: 'App\Tests\Domain\Scraping\Adapter\InMemoryImageStorage'
|
|
public: true
|
|
|
|
App\Domain\Manga\Domain\Contract\Service\ImageProcessorInterface:
|
|
class: App\Tests\Domain\Manga\Adapter\InMemoryImageProcessor
|
|
public: true
|
|
|
|
# App\Domain\Reader\Domain\Contract\Repository\ChapterRepositoryInterface:
|
|
# class: App\Tests\Domain\Reader\Adapter\InMemoryChapterRepository
|
|
# public: true
|
|
|
|
|