Files
ProxLedger/docs/issues/025-einstellungen.md
florian.wildeandClaude Opus 5 d416f3869a feat(einstellungen): Betriebswerte im Dashboard einstellbar (#025)
Vier Bereiche unter Einstellungen -> System: Adresse und Agent,
Kaufmaennisches, Sicherheit sowie Firma und Darstellung. Alles liegt als
eine JSON-Zeile in der Tabelle Einstellung; fehlende Felder bekommen ihren
Vorgabewert, eine kaputte Zeile legt den Betrieb nicht lahm.

Die Werte wirken auch wirklich: Die Dashboard-Adresse und der Melderhythmus
landen im ausgelieferten Einzeiler und im systemd-Timer (live geprueft),
der Steuersatz in neuen Rechnungspositionen, die Sitzungsdauer im Token,
die Firmenangaben im Kopf der PDF-Dateien.

Nebenbei geschlossen: die OIDC-Luecke aus #024. Erlaubte Domaenen und ein
Schalter gegen automatisch angelegte Konten. Dazu raeumt der Worker nachts
nach den eingestellten Fristen auf - der juengste Report je Host bleibt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 23:58:30 +02:00

2.6 KiB
Raw Permalink Blame History

#025 Einstellungen im Dashboard

Status: erledigt Meilenstein: v0.16.0 Labels: backend, ui Geschätzt: 5 h Tatsächlich: 1 h 10 min

Ziel

Werte, die heute im Quelltext oder in der Umgebung stehen, sollen sich im Dashboard ändern lassen – allen voran die Dashboard-Adresse, die im Installations-Einzeiler landet.

Aufgaben

  • Typisierter Einstellungsdienst mit Vorgaben und Prüfung (zod), alles in einer JSON-Zeile
  • Oberfläche unter Einstellungen → System mit vier Bereichen
  • Adresse und Agent: Dashboard-Adresse, Melderhythmus, Streuung, Selbstaktualisierung
  • Kaufmännisches: Währung, Steuersatz, Zahlungsziel, Aufschlag
  • Sicherheit: Sitzungsdauer, Anmeldeversuche, OIDC-Domänen, Konten anlegen, Aufbewahrungsfristen
  • Firma und Darstellung: Name, Anschrift, E-Mail, Zeitzone
  • Werte wirksam machen (nicht nur speichern)
  • Nächtliches Aufräumen nach den Aufbewahrungsfristen
  • Tests und Handbuchkapitel

Wo die Werte wirken

Einstellung Wirkt in
Dashboard-Adresse /install.sh, /agent.sh, Benachrichtigungen
Rhythmus, Streuung, Selbstaktualisierung erzeugte systemd-Timer und agent.conf
Steuersatz neue Rechnungspositionen (Einkauf und Verkauf)
Zahlungsziel vorgeschlagenes Fälligkeitsdatum
Aufschlag vorgeschlagener Verkaufspreis aus dem Einkaufspreis
Sitzungsdauer Gültigkeit des Tokens und Lebensdauer des Cookies
Anmeldeversuche Ratenbremse der Anmeldung
OIDC-Domänen, Konten anlegen mitOidcAnmelden – schließt die in #024 vermerkte Lücke
Aufbewahrungsfristen nächtlicher Lauf im Worker (03:30)
Firma, Zeitzone Kopf und Datum der PDF-Ausgaben

Entscheidungen

  • Eine JSON-Zeile statt vieler Schlüssel: Speichern ist ein Schreibvorgang, fehlende Felder bekommen ihren Vorgabewert, und eine kaputte Zeile legt den Betrieb nicht lahm – dann gelten die Vorgaben.
  • Zehn Sekunden Zwischenspeicher: Die Werte werden bei fast jeder Anfrage gebraucht, ändern sich aber selten. Eine Änderung ist trotzdem sofort spürbar.
  • APP_SECRET und DATABASE_URL bleiben in der Umgebung; beide werden vor dem ersten Datenbankzugriff gebraucht.
  • „Stumm nach X Tagen“ bewusst weggelassen: Das steht schon als Schwellwert bei den Warnregeln. Zwei Stellen für denselben Wert wären eine Fehlerquelle.
  • Währung und Zeitzone wirken vorerst nur serverseitig (PDF, CSV, Benachrichtigungen). Die Browseransicht rechnet weiterhin fest in Euro und Europe/Berlin – das nachzuziehen heißt, die Formatierung durch alle Client-Komponenten zu reichen, und gehört in einen eigenen Schritt.