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:
1 parent
f337718ec6
commit
af6af03b43
2 files changed
+40
-2
No files matched your search
@@ -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:
|
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 {
|
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": {
|
"health": {
|
||||||
"disk_used_percent": disk,
|
"disk_used_percent": disk,
|
||||||
"ram_used_percent": ram,
|
"ram_used_percent": ram,
|
||||||
@@ -2930,6 +2939,12 @@ def fetch_unassigned_devices(organization_id: str):
|
|||||||
"""
|
"""
|
||||||
Geräte einer Organisation ohne Bereitstellungsvorlagen-Zuweisung - die
|
Geräte einer Organisation ohne Bereitstellungsvorlagen-Zuweisung - die
|
||||||
Kandidaten für die Neugerät-Bestätigung (ADR-0008) im Flows-Bereich.
|
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:
|
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
|
SELECT d.id, d.hostname, d.device_fingerprint, d.created_at
|
||||||
FROM devices d
|
FROM devices d
|
||||||
LEFT JOIN assignments a ON a.device_id = d.id
|
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
|
ORDER BY d.created_at
|
||||||
""",
|
""",
|
||||||
(organization_id,),
|
(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;
|
||||||
Reference in new issue
Block a user