"""Plattengesundheit im Homelab (Ausbauplan „Später“, Punkt 18, seit 26.09.2026): die Platten des Proxmox-Hosts (Ausführer, stündlich im Bericht) und die des NAS (SNMP, services/homelab/nas_snmp.py), bewertet mit kern/platten.py. Der Wächter meldet nur, was schlecht ist oder schlechter wird; „Zur Kenntnis genommen“ macht die heutigen Fehlerzähler zur neuen Ausgangslage. """ from kern import platten as kern_platten from services.homelab import kanal, nas_snmp def host_platten() -> list[dict]: host = ((kanal.bericht() or {}).get("bericht") or {}).get("host") or {} return [kern_platten.aus_proxmox(e.get("disk") or {}, e.get("smart")) for e in host.get("platten") or [] if isinstance(e, dict) and isinstance(e.get("disk"), dict)] def lage() -> dict: """Für GET /api/homelab/platten.""" nas = nas_snmp.stand() platten = kern_platten.bewertet(host_platten() + list(nas.get("platten") or [])) return {"platten": platten, "nas": {"eingerichtet": nas["eingerichtet"], "ok": nas.get("ok", False), "detail": nas.get("detail"), "system": nas.get("system")}} def hinnehmen(pid: str) -> dict: return kern_platten.hinnehmen(pid, host_platten() + list(nas_snmp.stand().get("platten") or [])) def pruefe_platten_gesundheit() -> list: """Für den Wächter (Rolle homelab).""" from services.waechter import Befund, _aktion befunde = [] for p in lage()["platten"]: if p["stufe"] == "ok": continue fehler = any("→" in s for s in p["saetze"]) befunde.append(Befund( id=f"platte:{p['id']}", stufe=p["stufe"], titel=kern_platten.befund_titel(p), text="; ".join(p["saetze"]) + ". Die Daten darauf sichern und die Platte bald ersetzen, wenn es weiter " "schlechter wird.", quelle=p["id"].split(":")[0] if p["id"].startswith("nas:") else "pve", aktionen=[_aktion("hinnehmen", "Zur Kenntnis genommen", platte=p["id"])] if fehler else [], sofort=True)) return befunde