Deploy-Befunde gefixt: Disc-Typ-Verlust, giftiger Prescan-Cache, caps-Import
Ampel / ampel (push) Failing after 28s

- Pre-Scan verlor den erkannten Typ (BDs hiessen immer "DVD"): scan()
  reicht disc_type jetzt in die Zweige durch
- GIFTIG: Cache-Key nur aus Geraetepfad — die naechste Disc im selben
  Laufwerk haette die Metadaten der vorherigen geerbt. Key enthaelt jetzt
  einen Disc-Fingerabdruck (Label|Groesse)
- Worker-Faehigkeiten: import caps auf Modulebene — im worker_ready-Signal
  war /app nicht mehr im sys.path (ModuleNotFoundError im Deploy-Log)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-23 20:54:14 +02:00
parent b584cc29ad
commit 7652afe955
3 changed files with 26 additions and 8 deletions
+12 -2
View File
@@ -143,6 +143,16 @@ class PreScan:
"""Führe Pre-Scan durch."""
disc_type = self._detect_disc_type(device_path)
toc = self._read_toc(device_path, disc_type)
# Typ + Disc-Fingerabdruck (Label|Größe) an die Zweige durchreichen —
# der Typ ging vorher verloren (BDs hießen immer "DVD"), und der
# Cache-Key braucht den Fingerabdruck (sonst erbt die nächste Disc
# die Metadaten der vorherigen).
toc["disc_type"] = disc_type
try:
groesse = detection.disc_size_bytes(device_path)
except OSError:
groesse = 0
toc["fingerprint"] = f"{toc.get('title') or 'unbekannt'}|{groesse}"
if disc_type == "CD":
return self._scan_audio(device_path, toc)
@@ -214,7 +224,7 @@ class PreScan:
def _scan_audio(self, device_path: str, toc: Dict) -> PreScanResult:
"""Pre-Scan für Audio-CD."""
cache_key = generate_prescan_key(device_path, is_audio=True)
cache_key = generate_prescan_key(device_path, is_audio=True, fingerprint=toc.get("fingerprint", ""))
cached = get(cache_key)
if cached:
return PreScanResult(**cached)
@@ -267,7 +277,7 @@ class PreScan:
def _scan_video(self, device_path: str, toc: Dict) -> PreScanResult:
"""Pre-Scan für DVD/Blu-ray."""
cache_key = generate_prescan_key(device_path, is_audio=False)
cache_key = generate_prescan_key(device_path, is_audio=False, fingerprint=toc.get("fingerprint", ""))
cached = get(cache_key)
if cached:
return PreScanResult(**cached)