Zwei echte Anzeige-Bugs gefixt, Backend-Namen bereinigt

- debug_mode_until wurde beim Ablaufen nie geloescht - Auftragskatalog-
  Seite und Geraeteliste zeigten den Debug-Modus dadurch dauerhaft als
  aktiv an, auch Tage nach Ablauf (live an zwei echten Geraeten gefunden,
  abgelaufen am 02./09.09., trotzdem noch "aktiv" angezeigt).
  _health_felder_aus_row() liefert das Feld jetzt nur noch, wenn es
  tatsaechlich noch in der Zukunft liegt.
- fetch_unassigned_devices() (Flows "Unbestaetigte Geraete") hatte den
  archived_at-Filter nie bekommen, den fetch_devices_for_organization()/
  fetch_all_devices() schon hatten - bereits geloeschte Geraete ohne
  Zuweisung erschienen dadurch dauerhaft als offene Aufgabe.
- Migration 0040: Backend-Namen gekuerzt (Debian/Mint/Ubuntu statt
  "... (Golden Image) ..."), altes "mint"-Backend (vor dem Golden-Image-
  Pivot, keine Bereitstellungsvorlage nutzt es mehr) geloescht. "fedora"
  bewusst NICHT angefasst - echte Bereitstellungsvorlage+Zuweisungen
  haengen dran, siehe Rueckfrage an den Nutzer.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
This commit is contained in:
adminandClaude Sonnet 5 committed 2026-09-10 15:41:14 +02:00
1 parent f337718ec6
commit af6af03b43
2 files changed
+40 -2

No files matched your search

+17 -2
View File
@@ -1924,8 +1924,17 @@ GERAETE_HEALTH_SPALTEN_SQL = """d.debug_mode_until, d.health_disk_used_percent,
def _health_felder_aus_row(debug_mode_until, disk, ram, uptime, load1, load5, load15, collected_at) -> dict:
# Live gefunden (11.09.2026): debug_mode_until wird beim Ablaufen nie
# in der DB geloescht (agent_checkin() vergleicht nur zur Laufzeit
# gegen "jetzt", um das Poll-Intervall zu bestimmen - das bleibt
# korrekt) - aber die Kundenplattform-Anzeige (Auftragskatalog-Seite,
# Geraeteliste) pruefte bisher nur "ist das Feld gesetzt", nicht "liegt
# es noch in der Zukunft" - ein laengst abgelaufener Debug-Modus
# wurde dadurch dauerhaft als "noch aktiv" angezeigt. Hier an der
# Quelle gefiltert, damit kein Aufrufer das selbst wissen muss.
ist_noch_aktiv = debug_mode_until is not None and debug_mode_until > datetime.now(timezone.utc)
return {
"debug_mode_until": debug_mode_until.isoformat() if debug_mode_until is not None else None,
"debug_mode_until": debug_mode_until.isoformat() if ist_noch_aktiv else None,
"health": {
"disk_used_percent": disk,
"ram_used_percent": ram,
@@ -2930,6 +2939,12 @@ def fetch_unassigned_devices(organization_id: str):
"""
Geräte einer Organisation ohne Bereitstellungsvorlagen-Zuweisung - die
Kandidaten für die Neugerät-Bestätigung (ADR-0008) im Flows-Bereich.
Live gefunden (11.09.2026): fehlte bisher der "archived_at IS NULL"-
Filter, den fetch_devices_for_organization()/fetch_all_devices() schon
hatten - ein per "Gerät löschen" bereits archiviertes Gerät ohne
Zuweisung erschien dadurch dauerhaft als offene "unbestätigt"-Aufgabe,
obwohl es gar nicht mehr existiert.
"""
with get_database_connection() as conn:
@@ -2939,7 +2954,7 @@ def fetch_unassigned_devices(organization_id: str):
SELECT d.id, d.hostname, d.device_fingerprint, d.created_at
FROM devices d
LEFT JOIN assignments a ON a.device_id = d.id
WHERE d.organization_id = %s AND a.id IS NULL
WHERE d.organization_id = %s AND a.id IS NULL AND d.archived_at IS NULL
ORDER BY d.created_at
""",
(organization_id,),
@@ -0,0 +1,23 @@
BEGIN;
-- GUI-Umbau 11.09.2026 (Nutzer-Wunsch): kuerzere Backend-Namen ohne den
-- "(Golden Image)"-Zusatz, der seit ADR-0024 ohnehin fuer alle drei
-- aktiven Backends gilt und daher keine Unterscheidung mehr traegt.
UPDATE backends SET name = 'Debian' WHERE key = 'debian-image';
UPDATE backends SET name = 'Mint' WHERE key = 'mint-image';
UPDATE backends SET name = 'Ubuntu' WHERE key = 'ubuntu-image';
-- Das alte, VOR dem Golden-Image-Pivot (ADR-0024) genutzte "mint"-Backend
-- (nicht "mint-image") wird durch "mint-image" vollstaendig ersetzt und
-- hat aktuell keine einzige Bereitstellungsvorlage mehr - gefahrlos
-- loeschbar (blueprints.backend_id hat ON DELETE CASCADE, dort verwaiste
-- Alt-Blueprints verschwinden automatisch mit).
--
-- "fedora" bewusst NICHT geloescht in dieser Migration: es gibt eine
-- echte Bereitstellungsvorlage ("Schulcomputer (Fedora)", Default Lab)
-- mit RESTRICT-Fremdschluessel und historischen (archivierten) Geraete-
-- Zuweisungen - das braucht eine bewusste, separate Entscheidung, siehe
-- Rueckfrage an den Nutzer.
DELETE FROM backends WHERE key = 'mint';
COMMIT;