docs: add project management structure
This commit is contained in:
18
project-management/requirements/stories/US_000001.md
Normal file
18
project-management/requirements/stories/US_000001.md
Normal file
@ -0,0 +1,18 @@
|
||||
ID: US_000001 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000001: Nutzerkonto per CLI deaktivieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich ein Nutzerkonto per CLI deaktivieren, damit der Zugriff sofort unterbunden wird.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein existierender Nutzer und Root-Rechte
|
||||
- When das Skript mit `disable` und optionalen Countdown/Sound-Parametern aufgerufen wird
|
||||
- Then das Konto ist gesperrt und ein aktiver Login wird erkannt
|
||||
- And bei aktivem Login wird eine Warnung/Countdown versendet und anschliessend abgemeldet
|
||||
- And ein Shutdown erfolgt nur, wenn der Nutzer zuvor eingeloggt war
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000001: Disable user countdown (Details bei Story-Start)
|
||||
17
project-management/requirements/stories/US_000002.md
Normal file
17
project-management/requirements/stories/US_000002.md
Normal file
@ -0,0 +1,17 @@
|
||||
ID: US_000002 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000002: Nutzerkonto per CLI aktivieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich ein Nutzerkonto per CLI aktivieren, damit sich der Nutzer wieder anmelden kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein existierender Nutzer und Root-Rechte
|
||||
- When das Skript mit `enable` aufgerufen wird
|
||||
- Then das Konto ist entsperrt und Login ist wieder moeglich
|
||||
- And es wird kein Shutdown ausgeloest
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000002: Enable user account (Details bei Story-Start)
|
||||
17
project-management/requirements/stories/US_000003.md
Normal file
17
project-management/requirements/stories/US_000003.md
Normal file
@ -0,0 +1,17 @@
|
||||
ID: US_000003 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000003: Health-Status abfragen
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich den Health-Status per API abfragen, damit ich den Service-Zustand sehe.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given der Service laeuft
|
||||
- When ein GET auf `/health` erfolgt
|
||||
- Then die Antwort enthaelt `status` mit dem Wert `ok`
|
||||
- And die Antwort enthaelt `dry_run` als Boolean
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000003: Health response payload (Details bei Story-Start)
|
||||
17
project-management/requirements/stories/US_000004.md
Normal file
17
project-management/requirements/stories/US_000004.md
Normal file
@ -0,0 +1,17 @@
|
||||
ID: US_000004 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000004: Verfuegbare Nutzer auflisten
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich verwaltbare Nutzer per API auflisten, damit ich ihren Login-Status sehe.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein autorisierter Admin-Login
|
||||
- When ein GET auf `/users` erfolgt
|
||||
- Then die Antwort ist eine Liste von Eintraegen mit `user` und `logged_in`
|
||||
- And die Liste enthaelt nur verwaltbare, nicht-root Nutzer
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000004: List users status (Details bei Story-Start)
|
||||
17
project-management/requirements/stories/US_000005.md
Normal file
17
project-management/requirements/stories/US_000005.md
Normal file
@ -0,0 +1,17 @@
|
||||
ID: US_000005 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000005: Nutzer per API deaktivieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich einen Nutzer per API deaktivieren, damit ich den Zugriff remote steuern kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein autorisierter Admin-Login und ein erlaubter Nutzer
|
||||
- When ein POST auf `/users/{username}/disable` mit optionalen Feldern `countdown`, `sound`, `message` erfolgt
|
||||
- Then die Antwort enthaelt `user`, `action` = `disable`, `dry_run`, `steps` und `logged_in`
|
||||
- And nicht erlaubte Nutzer werden mit 403 abgewiesen
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000005: API disable action (Details bei Story-Start)
|
||||
17
project-management/requirements/stories/US_000006.md
Normal file
17
project-management/requirements/stories/US_000006.md
Normal file
@ -0,0 +1,17 @@
|
||||
ID: US_000006 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000006: Nutzer per API aktivieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich einen Nutzer per API aktivieren, damit ich den Zugriff remote wieder erlaube.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein autorisierter Admin-Login und ein erlaubter Nutzer
|
||||
- When ein POST auf `/users/{username}/enable` erfolgt
|
||||
- Then die Antwort enthaelt `user`, `action` = `enable`, `dry_run`, `steps` und `logged_in`
|
||||
- And nicht erlaubte Nutzer werden mit 403 abgewiesen
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000006: API enable action (Details bei Story-Start)
|
||||
18
project-management/requirements/stories/US_000007.md
Normal file
18
project-management/requirements/stories/US_000007.md
Normal file
@ -0,0 +1,18 @@
|
||||
ID: US_000007 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000007: PAM-Login mit Token
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich mich per PAM-Login anmelden, damit ich ein Session-Token erhalte.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given `SKD_AUTH_MODE=pam` und gueltige Admin-Credentials
|
||||
- When ein POST auf `/login` mit Benutzername und Passwort erfolgt
|
||||
- Then die Antwort enthaelt `token` und `expires_in`
|
||||
- And ein Session-Cookie mit dem Token wird gesetzt
|
||||
- And der Login ist ohne OIDC-Konfiguration als Schnellstart moeglich
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000007: PAM login token (Details bei Story-Start)
|
||||
19
project-management/requirements/stories/US_000008.md
Normal file
19
project-management/requirements/stories/US_000008.md
Normal file
@ -0,0 +1,19 @@
|
||||
ID: US_000008 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000008: OIDC-Login Flow
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich mich per OIDC anmelden, damit ich ohne Passwort-Login zugreifen kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given `SKD_AUTH_MODE=oidc` und ein erreichbarer OIDC-Provider
|
||||
- When ein GET auf `/login/oidc/start` erfolgt
|
||||
- Then der Nutzer wird zum Provider umgeleitet und ein State-Cookie gesetzt
|
||||
- When der Provider auf `/login/oidc/callback` mit Code und State zurueckleitet
|
||||
- Then der State wird validiert und ein Session-Cookie gesetzt
|
||||
- And bei ungueltigem State erfolgt eine 400-Antwort
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000008: OIDC auth callback (Details bei Story-Start)
|
||||
20
project-management/requirements/stories/US_000009.md
Normal file
20
project-management/requirements/stories/US_000009.md
Normal file
@ -0,0 +1,20 @@
|
||||
ID: US_000009 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000009: Autorisierung und /me-Identitaet
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich autorisiert werden und meine Identitaet abrufen, damit API-Zugriffe nachvollziehbar sind.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein gueltiges Session-Token
|
||||
- When ein GET auf `/me` erfolgt
|
||||
- Then die Antwort enthaelt `user` und `auth_mode`
|
||||
- Given kein oder ungueltiges Token
|
||||
- When ein Zugriff auf geschuetzte Endpunkte erfolgt
|
||||
- Then der Zugriff wird mit 401/403 verweigert
|
||||
- And bei OIDC wird die Allowlist gegen `preferred_username`, `email` oder `sub` geprueft
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000009: Authorization /me gate (Details bei Story-Start)
|
||||
16
project-management/requirements/stories/US_000010.md
Normal file
16
project-management/requirements/stories/US_000010.md
Normal file
@ -0,0 +1,16 @@
|
||||
ID: US_000010 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000010: Index-Seite ausliefern
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich die Web-UI im Browser oeffnen, damit ich mich anmelden und Aktionen starten kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given der Service laeuft
|
||||
- When ein GET auf `/` erfolgt
|
||||
- Then die Antwort ist HTML aus dem Template-Verzeichnis
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000010: Serve UI template (Details bei Story-Start)
|
||||
17
project-management/requirements/stories/US_000011.md
Normal file
17
project-management/requirements/stories/US_000011.md
Normal file
@ -0,0 +1,17 @@
|
||||
ID: US_000011 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000011: Virtualenv und Abhaengigkeiten erstellen
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich eine virtuelle Umgebung erstellen, damit der Service reproduzierbar laeuft.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein verfuegbares Python-Executable
|
||||
- When `scripts/create_venv.sh` ausgefuehrt wird
|
||||
- Then eine `.venv` wird erstellt und aktiviert
|
||||
- And die Abhaengigkeiten aus `backend/requirements.txt` sind installiert
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000011: Provision venv deps (Details bei Story-Start)
|
||||
16
project-management/requirements/stories/US_000012.md
Normal file
16
project-management/requirements/stories/US_000012.md
Normal file
@ -0,0 +1,16 @@
|
||||
ID: US_000012 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000012: Service lokal starten
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich den Service lokal starten, damit ich die API ohne Systemd testen kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given eine vorhandene `.venv`
|
||||
- When `scripts/run.sh` ausgefuehrt wird
|
||||
- Then `uvicorn` startet die App `backend.app:app` auf dem konfigurierten Host/Port
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000012: Run uvicorn service (Details bei Story-Start)
|
||||
19
project-management/requirements/stories/US_000013.md
Normal file
19
project-management/requirements/stories/US_000013.md
Normal file
@ -0,0 +1,19 @@
|
||||
ID: US_000013 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000013: Service installieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich den Service installieren, damit er als Systemdienst laeuft.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given sudo-Rechte und ein Zielpfad
|
||||
- When `scripts/install.sh` ausgefuehrt wird
|
||||
- Then der Service-User/-Group existiert oder wird erstellt
|
||||
- And das Projekt wird ins Install-Verzeichnis synchronisiert
|
||||
- And eine Env-Datei wird aus `env.example` erstellt, falls sie fehlt
|
||||
- And eine Systemd-Unit wird geschrieben und der Service gestartet
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000013: Install service setup (Details bei Story-Start)
|
||||
18
project-management/requirements/stories/US_000014.md
Normal file
18
project-management/requirements/stories/US_000014.md
Normal file
@ -0,0 +1,18 @@
|
||||
ID: US_000014 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000014: Service aktualisieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich den Service aktualisieren, damit Updates schnell eingespielt werden.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein vorhandenes Repo-Checkout
|
||||
- When `scripts/update.sh` ausgefuehrt wird
|
||||
- Then das Repo wird auf den Ziel-Branch aktualisiert
|
||||
- And die Abhaengigkeiten werden in der venv aktualisiert
|
||||
- And der Systemdienst wird neu gestartet
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000014: Update service refresh (Details bei Story-Start)
|
||||
18
project-management/requirements/stories/US_000015.md
Normal file
18
project-management/requirements/stories/US_000015.md
Normal file
@ -0,0 +1,18 @@
|
||||
ID: US_000015 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000015: Remote-Deployment durchfuehren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich auf ein Zielsystem deployen, damit das Projekt remote aktualisiert wird.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein Host-Eintrag in `deploy_hosts.yml` oder JSON-Konfig
|
||||
- When `scripts/deploy.sh <host>` ausgefuehrt wird
|
||||
- Then das Projekt wird als Archiv gepackt und auf den Host kopiert
|
||||
- And der Inhalt wird im Install-Verzeichnis entpackt und Rechte werden gesetzt
|
||||
- And Abhaengigkeiten werden installiert und der Service neu gestartet
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000015: Remote deploy package (Details bei Story-Start)
|
||||
20
project-management/requirements/stories/US_000016.md
Normal file
20
project-management/requirements/stories/US_000016.md
Normal file
@ -0,0 +1,20 @@
|
||||
ID: US_000016 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000016: OIDC-Client registrieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich einen OIDC-Client registrieren, damit der Login-Flow konfiguriert werden kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given `SKD_OIDC_ISSUER` und `OIDC_INITIAL_ACCESS_TOKEN` sind gesetzt
|
||||
- When `scripts/register_oidc_client.sh` ausgefuehrt wird
|
||||
- Then ein Registrierungsrequest wird an den Provider gesendet
|
||||
- And Client-ID und Client-Secret werden ausgegeben
|
||||
- And bei HTTP-Fehler wird mit Fehlermeldung abgebrochen
|
||||
- And die Redirect-URI ist exakt `https://<device-host>[:port]/login/oidc/callback` (keine Wildcards)
|
||||
- And bei Host/Port-Aenderung erfolgt eine Neuregistrierung mit neuen Credentials
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000016: OIDC client register (Details bei Story-Start)
|
||||
16
project-management/requirements/stories/US_000017.md
Normal file
16
project-management/requirements/stories/US_000017.md
Normal file
@ -0,0 +1,16 @@
|
||||
ID: US_000017 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000017: Systemd-Unit im Repo
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich eine Systemd-Unit im Repo haben, damit der Service standardisiert betrieben werden kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given die Datei `systemd/skd.service` existiert
|
||||
- When die Unit inspiziert wird
|
||||
- Then sie enthaelt Description, User/Group, WorkingDirectory, EnvironmentFile, ExecStart und Restart-Policy
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000017: Systemd unit template (Details bei Story-Start)
|
||||
19
project-management/requirements/stories/US_000018.md
Normal file
19
project-management/requirements/stories/US_000018.md
Normal file
@ -0,0 +1,19 @@
|
||||
ID: US_000018 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000018: Konfigurations-Templates verfuegbar
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich Konfigurationsvorlagen im Repo haben, damit Installationen konsistent sind.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given `env.example` liegt im Root-Verzeichnis
|
||||
- When die Datei geprueft wird
|
||||
- Then sie enthaelt SKD-Konfigurationswerte fuer Auth und Defaults
|
||||
- Given `deploy_hosts.yml` liegt im Root-Verzeichnis
|
||||
- When die Datei geprueft wird
|
||||
- Then sie enthaelt eine Host-Liste mit Name, Host, User, Port, Install-Dir und Service-Parametern
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000018: Config templates ready (Details bei Story-Start)
|
||||
16
project-management/requirements/stories/US_000019.md
Normal file
16
project-management/requirements/stories/US_000019.md
Normal file
@ -0,0 +1,16 @@
|
||||
ID: US_000019 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000019: Deployment-Archiv vorhanden
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich ein Deployment-Archiv im Repo haben, damit ich manuell ausrollen kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given `sk_deploy.zip` liegt im Root-Verzeichnis
|
||||
- When das Archiv geoeffnet wird
|
||||
- Then es enthaelt das Projekt fuer die manuelle Bereitstellung
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000019: Deployment zip artifact (Details bei Story-Start)
|
||||
18
project-management/requirements/stories/US_000020.md
Normal file
18
project-management/requirements/stories/US_000020.md
Normal file
@ -0,0 +1,18 @@
|
||||
ID: US_000020 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000020: Makefile-Automation bereitstellen
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich Standard-Targets fuer Installation, Start/Stop und Updates haben, damit Betriebsablaeufe vereinfacht werden.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given ein Makefile im Root-Verzeichnis
|
||||
- When die Targets `install`, `up`, `down`, `uninstall`, `update` ausgefuehrt werden
|
||||
- Then die entsprechenden Service-Aktionen werden aufgerufen
|
||||
- And `healthcheck` und `token` stehen als Hilfs-Targets bereit
|
||||
- And `healthcheck` prueft nur die Erreichbarkeit von `/health` ohne Auth-Anforderung
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000020: Makefile ops targets (Details bei Story-Start)
|
||||
20
project-management/requirements/stories/US_000021.md
Normal file
20
project-management/requirements/stories/US_000021.md
Normal file
@ -0,0 +1,20 @@
|
||||
ID: US_000021 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000021: Konfiguration per ENV steuern
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich Konfigurationen per ENV setzen, damit Verhalten und Defaults steuerbar sind.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given Umgebungsvariablen aus `env.example`
|
||||
- When der Service startet
|
||||
- Then Auth- und Session-Settings werden aus ENV geladen (`SKD_AUTH_MODE`, `SKD_AUTH_SECRET`, `SKD_TOKEN_TTL_SECONDS`, `SKD_AUTH_ALLOWED_USERS`, `SKD_AUTH_ALLOWED_GROUPS`, `SKD_AUTH_PAM_SERVICE`, `SKD_SESSION_COOKIE_NAME`, `SKD_SESSION_COOKIE_SECURE`, `SKD_OIDC_STATE_COOKIE_NAME`)
|
||||
- And OIDC-Settings werden aus ENV geladen (`SKD_OIDC_ISSUER`, `SKD_OIDC_CLIENT_ID`, `SKD_OIDC_CLIENT_SECRET`, `SKD_OIDC_REDIRECT_URI`, `SKD_OIDC_SCOPES`)
|
||||
- And Allowlist/Defaults werden aus ENV geladen (`SKD_ALLOWED_USERS`, `SKD_DEFAULT_COUNTDOWN`, `SKD_DEFAULT_SOUND`, `SKD_NOTIFY_TIMEOUT`, `SKD_DRY_RUN`)
|
||||
- And Sound/Notify-Pfade sind ueber ENV ueberschreibbar (`SKD_SOUND_PLAYER`, `SKD_SOUND_FILE`, `SKD_NOTIFY_SEND_PATH`)
|
||||
- And der OIDC Issuer entspricht der externen URL des Providers
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000021: ENV settings defaults (Details bei Story-Start)
|
||||
19
project-management/requirements/stories/US_000022.md
Normal file
19
project-management/requirements/stories/US_000022.md
Normal file
@ -0,0 +1,19 @@
|
||||
ID: US_000022 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000022: Web-UI Aktionen ausfuehren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Admin moechte ich mich im Web-UI anmelden, Nutzer laden und Aktionen ausfuehren, damit ich keine CLI benoetige.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given die Web-UI ist erreichbar
|
||||
- When ich mich per PAM oder OIDC anmelde
|
||||
- Then der Session-Status wird angezeigt
|
||||
- When ich Nutzer lade und eine Aktion sende
|
||||
- Then die Aktionsergebnisse (Steps/Status) werden als Text angezeigt
|
||||
- And Fehlerantworten werden als Text angezeigt
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000022: UI login and actions (Details bei Story-Start)
|
||||
17
project-management/requirements/stories/US_000023.md
Normal file
17
project-management/requirements/stories/US_000023.md
Normal file
@ -0,0 +1,17 @@
|
||||
ID: US_000023 | Version: 0.1.0 | Status: Final
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000023: Runbook und Security-Hinweise dokumentieren
|
||||
|
||||
Status: Done
|
||||
|
||||
Als Operator moechte ich eine klare Betriebs- und Security-Dokumentation haben, damit der Service sicher betrieben werden kann.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given das README im Root-Verzeichnis
|
||||
- When ich es lese
|
||||
- Then ich finde Abschnitte zu Quick Start, Configuration, Running, Updates und Deployment
|
||||
- And Security Hardening ist als eigener Abschnitt beschrieben
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000023: README runbook notes (Details bei Story-Start)
|
||||
22
project-management/requirements/stories/US_000024.md
Normal file
22
project-management/requirements/stories/US_000024.md
Normal file
@ -0,0 +1,22 @@
|
||||
ID: US_000024 | Version: 0.1.0 | Status: Draft
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# US_000024: Watchtower Theme fuer Web-UI
|
||||
|
||||
Status: Zurueckgestellt
|
||||
|
||||
Als Admin moechte ich das Watchtower-Design verwenden, damit die Web-UI dem vereinbarten Dark-Mode-Branding entspricht.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- Given die Web-UI wird aus dem Template ausgeliefert
|
||||
- When das UI geladen wird
|
||||
- Then das Watchtower-Theme praegt Farben, Typografie und Kontraste der UI
|
||||
- And die Theme-Assets liegen unter `assets/` in einer klaren Design-Struktur (z.B. `assets/design/`)
|
||||
- And das Theme nutzt die bereitgestellten Dateien `tokens_watchtower.css` und `theme_watchtower.css`
|
||||
- And ein Hintergrundrauschen (`bg-noise`) ist sichtbar
|
||||
|
||||
## Notizen
|
||||
- Assets sind unter `assets/design/` abgelegt (noch nicht eingebunden).
|
||||
|
||||
## Task-Platzhalter
|
||||
- TASK_000024: Apply Watchtower theme (Details bei Story-Start)
|
||||
Reference in New Issue
Block a user