# #004 Katalog: Distributionen und Profile als Daten **Status:** erledigt **Meilenstein:** v0.2.0 **Labels:** feature, katalog **Geschätzt:** 5 h **Tatsächlich:** 0 h 09 min ## Ziel YAML-Katalog laden, validieren, in die DB synchronisieren, in der GUI ansehen und deaktivieren. ## Aufgaben - [x] zod-Schemas für `catalog/distros` und `catalog/profiles` - [x] Debian 12/13, Ubuntu 22.04/24.04/26.04 (URLs/Prüfsummen geprüft am 2026-10-12) - [x] Prüfsummen-Parser für beide Zeilenformate; LXC-Musterauflösung mit Versionssortierung - [x] Sync beim worker-Start (Upsert, Aktiv-Schalter bleibt), fehlerhafte Datei überspringen + melden - [x] Katalog-Seite (Distributionen, Profile, aktiv/inaktiv) ## Akzeptanzkriterien - [x] Unit-Tests für Schema, Sync und Muster ## Abhängigkeiten #001 ## Notizen / Entscheidungen - Profile `base`, `docker`, `zabbix-agent` liegen als Daten schon im Katalog; ihre Umsetzung in Shell folgt mit dem Adapter (#005). - Zusätzliche Felder gegenüber der Vorgabe: `os` (id, version_id, codename – für Repo-URLs in Profilen), `arch`, `vm.bios`, `vm.min_disk_gb`. - Unbekannte YAML-Schlüssel sind ein Fehler; Dateiname und `id` müssen übereinstimmen. - Verschwundene Einträge werden markiert (`entferntAm`), nicht gelöscht – Aufträge verweisen später darauf. - Ein eigenes Profil mit gleicher id wie ein Katalogprofil gewinnt; der Abgleich meldet den Konflikt. - Abgleich unter Advisory-Lock, weil app und worker beim Start gleichzeitig abgleichen.