Phase 5: Projekt-/Media-/Plugin-API im Control Core (§23.1, §13.3)

- Projekte: CRUD + Activate (State-Store-Revision), §23.1/§24.2
- Medien: Import mit Duplikaterkennung (§13.3), Liste mit
  Missing-Markierung (§13.2)
- Plugins: Listing nach Lifecycle-Status gruppiert (§14.5),
  Enable mit Lifecycle-Advancement, 404 bei unbekanntem Plugin
- Art-Net-Status-Endpunkt (§23.1)
- Diagnostics erweitert um State-/Projekt-Revisionen (§28.2)
- Commands schreiben jetzt auch in den State-Store (§6.4)
- SQLite check_same_thread=False für FastAPI async handlers
- python-multipart für UploadFile hinzugefügt
- Discovery-Fix: Builtin-Plugins nach Kategorie-Unterverzeichnissen
  (generators/, filters/) durchsuchen statt nur Direktkinder
- 8 neue Integrationstests: Projekt-CRUD-Roundtrip, Activate,
  Media-Import mit Duplikat, Plugin-Listing (10+14 verifiziert),
  Enable-404, Diagnostics-Revisionen
- Gesamtsuite 557 grün, Ruff grün
This commit is contained in:
HMS MediaEngine Agent
2026-09-11 03:13:43 +02:00
parent bae05ea8ad
commit 82c79ec485
6 changed files with 384 additions and 14 deletions
@@ -94,7 +94,7 @@ class Database:
def open(self, integrity_check: bool = True) -> None:
"""Öffnet die DB: WAL, Foreign Keys, Busy-Timeout, Integritätscheck."""
self._path.parent.mkdir(parents=True, exist_ok=True)
self._conn = sqlite3.connect(self._path, timeout=5.0)
self._conn = sqlite3.connect(self._path, timeout=5.0, check_same_thread=False)
self._conn.execute("PRAGMA journal_mode=WAL") # §24.1
self._conn.execute("PRAGMA foreign_keys=ON") # §24.1
self._conn.execute("PRAGMA busy_timeout=5000")