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:
|
||||
# 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,),
|
||||
|
||||
Reference in new issue
Block a user