feat: show update service status in UI

This commit is contained in:
2026-01-15 11:06:54 +01:00
parent 55e452b6a2
commit f513d46d08
22 changed files with 351 additions and 2 deletions

View File

@ -22,6 +22,7 @@ Sicheres, remote steuerbares System zum Sperren/Entsperren lokaler Nutzerkonten.
| 15.01.2026 | 📝 Req | Doku-Overhaul mit neuer Struktur und Archivierung. |
| 15.01.2026 | 📝 Req | Externe Service-Links in der Doku ergaenzt. |
| 15.01.2026 | 📝 Req | Makefile als Einstieg in Doku aufgenommen. |
| 15.01.2026 | ⚙️ Code | Makefile restart-Target hinzugefuegt. |
## Epic-Backlog (Uebersicht)
### EPIC_000001: Legacy CLI Account Control (sk.sh)
@ -108,6 +109,8 @@ Sicheres, remote steuerbares System zum Sperren/Entsperren lokaler Nutzerkonten.
- [x] TASK_000034: UI rollback action
- [x] US_000043: Enrollment-Token per Script abrufen
- [x] TASK_000049: Script fuer Enrollment-Flow erstellen
- [x] US_000046: Update-Service Erreichbarkeit anzeigen
- [x] TASK_000055: Endpoint und UI fuer Update-Service Status
### EPIC_000009: Update Webservice (External Team)
- [ ] US_000026: Client bezieht Updates (Pull)
@ -138,6 +141,17 @@ Sicheres, remote steuerbares System zum Sperren/Entsperren lokaler Nutzerkonten.
- [x] TASK_000047: README und Audience-Split anpassen
- [x] TASK_000048: External Dependencies und Audience-Ergaenzungen
### EPIC_000013: System Telemetry im Dashboard
- [ ] US_000044: Systemmetriken im Dashboard anzeigen
- [ ] TASK_000050: Backend-Endpoint fuer Systemmetriken
- [ ] TASK_000051: UI-Kacheln im Dashboard (System Information)
### EPIC_000014: Login-Zeitfenster und Parent-Control Regeln
- [ ] US_000045: Regeln fuer Login-Zeitfenster definieren und durchsetzen
- [ ] TASK_000052: Regelmodell und Speicherung definieren
- [ ] TASK_000053: Login-Pruefung und Enforcement
- [ ] TASK_000054: Admin-UI fuer Regeln und Scheduler
## Offene Risiken / Abhaengigkeiten
- Betrieb erfordert Root/sudo und lokale System-Tools (notify-send, sound player, uvicorn).
- OIDC-Validierung blockiert bis IdP bereit und Service laeuft.

View File

@ -45,3 +45,4 @@ Ermoegliche einen robusten Client-Update-Flow mit Verifikation und Rollback.
- US_000032: Update-Logs im Web-UI anzeigen
- US_000033: Rollback im Web-UI anstossen
- US_000043: Enrollment-Token per Script abrufen
- US_000046: Update-Service Erreichbarkeit anzeigen

View File

@ -0,0 +1,38 @@
ID: EPIC_000013 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# EPIC_000013: System Telemetry im Dashboard
## Beschreibung
Anzeige von Systemmetriken (CPU, RAM, GPU, Netzwerk) fuer Operatoren im Web-Dashboard.
## Ziel / Business Value
Schneller Ueberblick ueber Systemzustand und Last ohne externe Tools.
## Mission Statement
Stelle aktuelle Telemetriedaten im Dashboard bereit, aktualisiert in kurzen Intervallen.
## Business Value & Metriken
- Operatoren erkennen Engpaesse sofort.
- Erfolgsmetrik: Metriken aktualisieren sich alle 5 Sekunden im UI.
## In-Scope
- API liefert aktuelle CPU/RAM/GPU/Netzwerkwerte.
- Web-UI zeigt Kacheln in einem "System Information" Container.
## Out-of-Scope
- Langzeit-Historie oder Trend-Analysen.
- Alerting oder Threshold-Management.
## High-Level Akzeptanzkriterien
- CPU als Gesamt-% angezeigt.
- RAM: Total und Usage %.
- GPU: VRAM Total und Usage % (falls GPU vorhanden).
- Netzwerk: aktuelle RX/TX in Mbps.
## Technische Constraints & Risiken
- GPU-Metriken sind hardware-/driver-abhaengig.
- Netzwerkwerte benoetigen Delta-Berechnung ueber Zeitfenster.
## Zugeordnete User Stories
- US_000044: Systemmetriken im Dashboard anzeigen

View File

@ -0,0 +1,42 @@
ID: EPIC_000014 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# EPIC_000014: Login-Zeitfenster und Parent-Control Regeln
## Beschreibung
Admins definieren Zeitfenster pro Nutzer, in denen Login erlaubt ist. Beim Login wird
geprueft, ob der Zeitpunkt erlaubt ist; andernfalls erfolgt Hinweis, Konto wird deaktiviert
und der Rechner heruntergefahren. Beim Systemstart wird geprueft, welche Nutzer sich anmelden duerfen.
## Ziel / Business Value
Verlaessliche Einhaltung von Nutzungszeiten ohne manuelle Eingriffe.
## Mission Statement
Stelle regelbasierte Login-Beschraenkungen bereit, die zentral verwaltbar und systemweit
durchsetzbar sind.
## Business Value & Metriken
- Reduzierte manuelle Sperren.
- Erfolgsmetrik: Verbotene Logins werden zu 100% blockiert.
## In-Scope
- Regeln pro Nutzer (erlaubte Zeitfenster).
- Automatische Aktivierung/Deaktivierung nach Regeln.
- Durchsetzung bei Login und beim Systemstart.
## Out-of-Scope
- Historische Reports oder Nutzungsstatistiken.
- MFA oder externe Auth-Systeme.
## High-Level Akzeptanzkriterien
- Ohne Regel ist Login erlaubt.
- Mit Regel wird Login nur in erlaubten Zeitfenstern zugelassen.
- Bei Verbot: Hinweis, Konto wird deaktiviert, Shutdown wird gestartet.
- Optional: Konto wird nach Zeitfenster automatisch wieder aktiviert.
## Technische Constraints & Risiken
- Zeit- und Zeitzonenhandling.
- Durchsetzung erfordert Hook in Auth/Login-Prozess.
## Zugeordnete User Stories
- US_000045: Regeln fuer Login-Zeitfenster definieren und durchsetzen

View File

@ -0,0 +1,20 @@
ID: US_000044 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# US_000044: Systemmetriken im Dashboard anzeigen
Als User moechte ich die aktuelle CPU-, GPU-, RAM- und Netzwerkauslastung sehen,
damit ich den Systemzustand schnell bewerten kann.
## Akzeptanzkriterien
- Given ich bin im Dashboard eingeloggt
- When die System Information Kacheln angezeigt werden
- Then sehe ich CPU Gesamt-Auslastung in Prozent
- And RAM Total sowie Usage in Prozent
- And GPU VRAM Total sowie Usage in Prozent (falls GPU vorhanden)
- And Netzwerk RX/TX als aktuelle Mbps
- And die Werte aktualisieren sich alle 5 Sekunden
## Task-Platzhalter
- TASK_000050: Backend-Endpoint fuer Systemmetriken
- TASK_000051: UI-Kacheln im Dashboard (System Information)

View File

@ -0,0 +1,33 @@
ID: US_000045 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# US_000045: Regeln fuer Login-Zeitfenster definieren und durchsetzen
Als Administrator moechte ich Regeln definieren, in welchen Zeitfenstern sich ein Nutzer
anmelden darf, damit Parent-Control verbindlich umgesetzt wird.
## Akzeptanzkriterien
- Given ein Nutzer hat keine Regel
- When er sich anmeldet
- Then ist Login erlaubt
- Given ein Nutzer hat eine Regel mit erlaubten Zeitfenstern
- When er sich ausserhalb dieser Zeiten anmeldet
- Then erhaelt er einen Hinweis
- And das Konto wird deaktiviert
- And der Rechner wird heruntergefahren
- Given das Geraet startet
- When Regeln existieren
- Then wird geprueft, welche Nutzer anmelden duerfen
- And gesperrte Nutzer bleiben deaktiviert
- And Nutzer ohne Auto-Reaktivierung bleiben gesperrt, auch wenn ein Zeitfenster startet
- Given eine Regel erlaubt automatische Reaktivierung
- When ein Zeitfenster beginnt
- Then wird das Konto automatisch wieder aktiviert
## Task-Platzhalter
- TASK_000052: Regelmodell und Speicherung definieren
- TASK_000053: Login-Pruefung und Enforcement
- TASK_000054: Admin-UI fuer Regeln und Scheduler

View File

@ -0,0 +1,17 @@
ID: US_000046 | Version: 0.2.1 | Status: Done
By: Codex (GPT-5)
# US_000046: Update-Service Erreichbarkeit anzeigen
Als Admin moechte ich sehen, ob der Update-Service erreichbar ist und welche URL aktiv ist,
damit ich erkenne, ob das Geraet gegen Dev oder Prod konfiguriert ist.
## Akzeptanzkriterien
- Given ich bin im Update-Dashboard eingeloggt
- When der Statusbereich angezeigt wird
- Then sehe ich die konfigurierte Update-Service URL
- And einen Online/Offline-Status basierend auf Erreichbarkeit
- And die Anzeige aktualisiert sich bei Status-Refresh
## Task-Platzhalter
- TASK_000055: Endpoint und UI fuer Update-Service Status

View File

@ -0,0 +1,19 @@
ID: TASK_000050 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# TASK_000050: Backend-Endpoint fuer Systemmetriken
## Outcome
API liefert aktuelle CPU/RAM/GPU/Netzwerkdaten in einem Payload.
## Story-Bezug
US_000044
## Beschreibung
- Endpoint (z.B. `GET /system/metrics`) mit Auth.
- CPU Gesamt-%, RAM total + usage %, GPU VRAM total + usage % (fallback wenn nicht vorhanden).
- Netzwerk RX/TX in Mbps via Delta ueber 5s Fenster.
## Definition of Done (DoD)
- Endpoint antwortet in <1s.
- Payload klar dokumentiert.

View File

@ -0,0 +1,18 @@
ID: TASK_000051 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# TASK_000051: UI-Kacheln im Dashboard (System Information)
## Outcome
Dashboard zeigt System Information Container mit Kacheln fuer CPU/RAM/GPU/Netzwerk.
## Story-Bezug
US_000044
## Beschreibung
- UI-Container "System Information" mit Kacheln.
- Polling alle 5 Sekunden.
- Fallback-Text, wenn GPU nicht vorhanden.
## Definition of Done (DoD)
- UI aktualisiert Werte ohne Page-Reload.

View File

@ -0,0 +1,19 @@
ID: TASK_000052 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# TASK_000052: Regelmodell und Speicherung definieren
## Outcome
Ein persistentes Regelmodell fuer Login-Zeitfenster und Auto-Reaktivierung.
## Story-Bezug
US_000045
## Beschreibung
- Regelstruktur (User, erlaubte Zeitfenster pro Tag, Wochentage, Auto-Reaktivierung).
- Speicherort (Datei/DB), Format und Validierung.
- Zeitzonen-Handling definieren (lokale Systemzeit).
## Definition of Done (DoD)
- Regelmodell dokumentiert.
- Persistenzstrategie festgelegt.

View File

@ -0,0 +1,18 @@
ID: TASK_000053 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# TASK_000053: Login-Pruefung und Enforcement
## Outcome
Login wird anhand der Regeln geprueft und bei Verbot durchgesetzt (Hinweis, Sperre, Shutdown).
## Story-Bezug
US_000045
## Beschreibung
- Hook in Login-Flow (PAM am OS).
- Hinweistext definieren.
- Deaktivierung und Shutdown-Logik ausloesen.
## Definition of Done (DoD)
- Login-Blockade funktioniert bei Verbot.

View File

@ -0,0 +1,19 @@
ID: TASK_000054 | Version: 0.2.1 | Status: Draft
By: Codex (GPT-5)
# TASK_000054: Admin-UI fuer Regeln und Scheduler
## Outcome
Admins koennen Regeln verwalten; ein Scheduler aktiviert Nutzer bei erlaubten Zeiten.
## Story-Bezug
US_000045
## Beschreibung
- UI: Regeln anlegen/aktualisieren/loeschen.
- Scheduler: Pruefung beim Boot (Systemstart) und regelmaessig.
- Auto-Reaktivierung umsetzen (ausser Regel sagt nein).
## Definition of Done (DoD)
- UI verwaltet Regeln.
- Scheduler aktiviert Nutzer entsprechend Regeln.

View File

@ -0,0 +1,17 @@
ID: TASK_000055 | Version: 0.2.1 | Status: Done
By: Codex (GPT-5)
# TASK_000055: Endpoint und UI fuer Update-Service Status
## Outcome
UI zeigt Update-Service URL und Erreichbarkeit; Backend liefert Status.
## Story-Bezug
US_000046
## Beschreibung
- `GET /update/service-status` liefert URL, Reachability, Status-Code.
- UI zeigt Status im Update-Bereich.
## Definition of Done (DoD)
- Statusanzeige funktioniert auch bei Fehlern (Offline).