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>
2.6 KiB
2.6 KiB
#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_SECRETundDATABASE_URLbleiben 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.