Zeitplan in der Oberflaeche einstellbar

Takt und Schalter der beiden Abgleiche standen in der Umgebung und liessen
sich nur mit einem Neustart aendern. Jetzt stehen sie unter Verwaltung ->
Zeitplan, je Lauf einzeln: ob er automatisch laeuft, in welchem Abstand, beim
Kaeufe-Abgleich zusaetzlich der seltenere Takt fuer ruhende Konten und ab
wann ein Konto als ruhend gilt, beim Forumslauf die Stunde, vor der nicht
gelaufen wird.

Die Abstaende stehen in Minuten - damit laesst sich alles ausdruecken -, und
daneben steht, was das in Stunden bedeutet, damit niemand im Kopf rechnet.
Unter einer Viertelstunde geht nicht: beide Abgleiche greifen auf Server zu,
die der Community gehoeren.

Aenderungen greifen sofort, ohne Neustart. Die Vorgaben sind die bisherigen
Werte, sie stehen in der Migration.

SCHEDULE_ENABLED und FORUM_SCAN_HOUR entfallen damit.
This commit is contained in:
2026-09-21 13:25:56 +02:00
parent db37d3388a
commit 6094e4eaef
14 changed files with 658 additions and 168 deletions
@@ -0,0 +1,22 @@
-- Der Zeitplan wird einstellbar. Bisher standen Takt und Schalter in der
-- Umgebung und liessen sich nur mit einem Neustart aendern.
CREATE TABLE IF NOT EXISTS "ScheduleSetting" (
"name" TEXT NOT NULL,
"enabled" BOOLEAN NOT NULL DEFAULT true,
"intervalMinutes" INTEGER NOT NULL DEFAULT 120,
"idleIntervalMinutes" INTEGER,
"idleAfterDays" INTEGER,
"onlyAfterHour" INTEGER,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ScheduleSetting_pkey" PRIMARY KEY ("name")
);
-- Die bisherigen Werte als Ausgangspunkt: Kaeufe alle zwei Stunden, ruhende
-- Konten alle sechs, ruhend ab drei Jahren; das Forum einmal taeglich,
-- fruehestens ab vier Uhr.
INSERT INTO "ScheduleSetting"
("name", "enabled", "intervalMinutes", "idleIntervalMinutes", "idleAfterDays", "onlyAfterHour")
VALUES
('gextension', true, 120, 360, 1095, NULL),
('forum', true, 1440, NULL, NULL, 4)
ON CONFLICT ("name") DO NOTHING;
+23
View File
@@ -506,3 +506,26 @@ model CharacterLink {
@@index([characterId])
}
/// Was der Zeitplan tun soll. Steht in der Datenbank statt in der Umgebung,
/// damit sich der Takt ändern lässt, ohne den Dienst neu zu starten.
model ScheduleSetting {
/// "gextension" oder "forum".
name String @id
enabled Boolean @default(true)
/// Abstand zwischen zwei Läufen, in Minuten.
intervalMinutes Int @default(120)
/// Nur beim Käufe-Abgleich: der seltenere Takt für Konten, bei denen lange
/// nichts gekauft wurde, und ab wann ein Konto als ruhend gilt.
idleIntervalMinutes Int?
idleAfterDays Int?
/// Nur beim Forumslauf: frühestens ab dieser Stunde. Damit lässt sich ein
/// täglicher Lauf in die Nacht legen, statt ihn irgendwann am Tag
/// loszuschicken.
onlyAfterHour Int?
updatedAt DateTime @updatedAt
}