aktueller stand
This commit is contained in:
@@ -6,6 +6,8 @@ const SETTINGS_FILE = path.join(CONFIG_DIR, 'admin-settings.json');
|
||||
|
||||
const DEFAULT_SETTINGS = {
|
||||
scheduleCron: '*/10 7-22 * * *',
|
||||
pickupFallbackCron: '0 7,12,17,22 * * *',
|
||||
pickupWindowOffsetsMinutes: [-1, -0.5, 0, 0.5, 1, 1.5],
|
||||
randomDelayMinSeconds: 10,
|
||||
randomDelayMaxSeconds: 120,
|
||||
initialDelayMinSeconds: 5,
|
||||
@@ -53,6 +55,23 @@ function sanitizeNumber(value, fallback) {
|
||||
return fallback;
|
||||
}
|
||||
|
||||
function sanitizeNumberArray(value, fallback) {
|
||||
if (Array.isArray(value)) {
|
||||
const cleaned = value
|
||||
.map((entry) => Number(entry))
|
||||
.filter((entry) => Number.isFinite(entry));
|
||||
return cleaned.length > 0 ? cleaned : fallback;
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
const cleaned = value
|
||||
.split(',')
|
||||
.map((entry) => Number(entry.trim()))
|
||||
.filter((entry) => Number.isFinite(entry));
|
||||
return cleaned.length > 0 ? cleaned : fallback;
|
||||
}
|
||||
return fallback;
|
||||
}
|
||||
|
||||
function sanitizeIgnoredSlots(slots = []) {
|
||||
if (!Array.isArray(slots)) {
|
||||
return DEFAULT_SETTINGS.ignoredSlots;
|
||||
@@ -109,6 +128,11 @@ function readSettings() {
|
||||
const parsed = JSON.parse(raw);
|
||||
return {
|
||||
scheduleCron: parsed.scheduleCron || DEFAULT_SETTINGS.scheduleCron,
|
||||
pickupFallbackCron: parsed.pickupFallbackCron || DEFAULT_SETTINGS.pickupFallbackCron,
|
||||
pickupWindowOffsetsMinutes: sanitizeNumberArray(
|
||||
parsed.pickupWindowOffsetsMinutes,
|
||||
DEFAULT_SETTINGS.pickupWindowOffsetsMinutes
|
||||
),
|
||||
randomDelayMinSeconds: sanitizeNumber(parsed.randomDelayMinSeconds, DEFAULT_SETTINGS.randomDelayMinSeconds),
|
||||
randomDelayMaxSeconds: sanitizeNumber(parsed.randomDelayMaxSeconds, DEFAULT_SETTINGS.randomDelayMaxSeconds),
|
||||
initialDelayMinSeconds: sanitizeNumber(parsed.initialDelayMinSeconds, DEFAULT_SETTINGS.initialDelayMinSeconds),
|
||||
@@ -147,6 +171,11 @@ function writeSettings(patch = {}) {
|
||||
const current = readSettings();
|
||||
const next = {
|
||||
scheduleCron: patch.scheduleCron || current.scheduleCron,
|
||||
pickupFallbackCron: patch.pickupFallbackCron || current.pickupFallbackCron,
|
||||
pickupWindowOffsetsMinutes: sanitizeNumberArray(
|
||||
patch.pickupWindowOffsetsMinutes,
|
||||
current.pickupWindowOffsetsMinutes
|
||||
),
|
||||
randomDelayMinSeconds: sanitizeNumber(patch.randomDelayMinSeconds, current.randomDelayMinSeconds),
|
||||
randomDelayMaxSeconds: sanitizeNumber(patch.randomDelayMaxSeconds, current.randomDelayMaxSeconds),
|
||||
initialDelayMinSeconds: sanitizeNumber(patch.initialDelayMinSeconds, current.initialDelayMinSeconds),
|
||||
|
||||
Reference in New Issue
Block a user