Парсер: часы ночной паузы в настройках админки

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zabudko-ruandClaude Opus 5.5 committed 2026-10-26 00:33:07 +04:00
1 parent d32f37457b
commit 5470036a69
9 files changed
+95 -30

No files matched your search

+3 -3
View File
@@ -25,9 +25,9 @@ const ago = (from: Date, now: Date) => {
/** Что не так с парсером, или null, если всё в порядке. */
export async function parserProblem(db: Db, now = new Date()): Promise<string | null> {
// Ночью парсер спит по расписанию — это не простой.
if (isQuietHours(now)) return null;
const parser = await loadParserSettings(db);
// В ночную паузу парсер спит по расписанию — это не простой.
if (isQuietHours(parser, now)) return null;
const stall = STALL_MINUTES * 60_000;
if (!parser.enabled) {
const [row] = await db.select({ at: settings.updatedAt }).from(settings).where(eq(settings.key, 'parser'));
@@ -38,7 +38,7 @@ export async function parserProblem(db: Db, now = new Date()): Promise<string |
const [last] = await db.select({ at: parserRuns.startedAt }).from(parserRuns).orderBy(desc(parserRuns.id)).limit(1);
if (!last) return null;
// Простой считается с конца ночной паузы: последний проход был вечером, а утром парсер только проснулся.
const since = new Date(Math.max(last.at.getTime(), lastQuietEnd(now).getTime()));
const since = new Date(Math.max(last.at.getTime(), lastQuietEnd(parser, now)?.getTime() ?? 0));
return now.getTime() - since.getTime() >= stall ? `не запускался ${ago(last.at, now)}` : null;
}