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>
37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import { SystemFormular } from "@/components/einstellungen/SystemFormular";
|
||
import { ContentHeader } from "@/components/layout/ContentHeader";
|
||
import { Card } from "@/components/ui/Card";
|
||
import { APP_VERSION } from "@/lib/version";
|
||
import { einstellungen } from "@/server/einstellungen";
|
||
|
||
export const metadata = { title: "System" };
|
||
|
||
export default async function SystemSeite() {
|
||
const werte = await einstellungen();
|
||
|
||
return (
|
||
<>
|
||
<ContentHeader titel="System" brotkrumen={[{ titel: "Einstellungen" }, { titel: "System" }]} />
|
||
<div className="app-content">
|
||
<div className="container-fluid">
|
||
<SystemFormular werte={werte} appUrl={process.env.APP_URL ?? ""} />
|
||
|
||
<Card titel="Systeminformationen" rahmen="keiner">
|
||
<dl className="row mb-0">
|
||
<dt className="col-4 fw-normal text-body-secondary">Version</dt>
|
||
<dd className="col-8">{APP_VERSION}</dd>
|
||
<dt className="col-4 fw-normal text-body-secondary">Zeitzone des Servers</dt>
|
||
<dd className="col-8">{Intl.DateTimeFormat().resolvedOptions().timeZone}</dd>
|
||
<dt className="col-4 fw-normal text-body-secondary">Nur in der Umgebung</dt>
|
||
<dd className="col-8">
|
||
<code>APP_SECRET</code> und <code>DATABASE_URL</code> – beide werden gebraucht, bevor
|
||
die Datenbank gelesen werden kann.
|
||
</dd>
|
||
</dl>
|
||
</Card>
|
||
</div>
|
||
</div>
|
||
</>
|
||
);
|
||
}
|