# Catalog & Media Architecture 1.39.0

## Ziel

Listings, Inventory und Media sind eigenständige native Module innerhalb des modularen Monolithen. Die Migration folgt dem Strangler-Prinzip: öffentliche CRUD-Routen und Sicherheitsverträge gehören den Modulen; bestehende Tabellen und kompatible Datenzugriffe für AI, Publishing, Quality und Dashboard bleiben zunächst erhalten.

## Modulgrenzen

### `vendoo.listings`

Besitzt Artikelkatalog und Papierkorb. Das Modul validiert alle schreibenden Payloads über eine Allowlist, bereinigt Rich-HTML, erzwingt Bearbeitungssperren und trennt Soft-Delete von endgültigem Löschen.

### `vendoo.inventory`

Besitzt Lagerorte und Bestandszuordnung. Lesende Übersichten benötigen Artikel-Leserechte; Änderungen benötigen `inventory.edit`. Bulk-Aktionen sind dedupliziert und auf 500 IDs begrenzt.

### `vendoo.media`

Besitzt Medienbibliothek und Upload-Dateien. Pfade werden normalisiert und innerhalb des Upload-Roots aufgelöst. Aktive Artikelreferenzen schützen Bilder vor Löschung.

## Dependency Injection

Die Modulindizes importieren keine Datenbankadapter. Der Server injiziert Repositories nach Initialisierung der Laufzeitpfade. Dadurch bleiben Modulgraph und Policy-Verträge ohne native SQLite-Bindings prüfbar.

## Kompatibilität

Die Endpunkte `/api/listings`, `/api/trash`, `/api/inventory/*` und `/api/media-library*` bleiben unverändert. `lib/db.mjs` bleibt vorübergehend als Kompatibilitätsschicht für noch nicht migrierte Module. Es findet keine Tabellenmigration und kein Datenreset statt.
