Files
MikrotikManager/lib/scheduler-settings.ts
T
Denozordec 43ab17b253
Docker images / prepare-release (push) Successful in 6s
Docker images / backend-image (push) Successful in 2m13s
Docker images / frontend-image (push) Successful in 2m11s
Docker images / updater-image (push) Successful in 50s
Docker images / notify-webhook (push) Has been skipped
Docker images / publish-release (push) Successful in 8s
feat(scheduler): добавить расписание бэкапов и автообновление сертификатов
2026-05-12 21:46:11 +07:00

95 lines
3.8 KiB
TypeScript

/** Типы и подписи для UI планировщика / страницы «Сбор данных» (совпадают с ответами API). */
/** Последний ключ — движок оповещений (читает БД после коллекторов; см. описание `alert_engine`). */
export const SCHEDULER_JOB_KEYS = [
"traffic",
"servers_rest_ping",
"uptime_resources",
"uptime_ping",
"uptime_speed",
"internet_path",
"gre_bgp",
"certificates_renew",
"backups",
"alert_engine",
] as const
export type SchedulerJobKey = (typeof SCHEDULER_JOB_KEYS)[number]
export const SCHEDULER_JOB_LABELS: Record<string, string> = {
traffic: "Трафик",
servers_rest_ping: "Серверы: REST API",
uptime_resources: "Uptime: ресурсы",
uptime_ping: "Uptime: ping",
uptime_speed: "Uptime: speed",
internet_path: "Internet Path",
gre_bgp: "GRE + BGP",
certificates_renew: "Сертификаты: автообновление",
backups: "Бэкапы",
alert_engine: "Оповещения",
}
/** Кратко — для раскрытой карточки прогона и подсказок. */
export const SCHEDULER_JOB_DESCRIPTIONS: Record<string, string> = {
traffic: "Опрос интерфейсов RouterOS, запись сэмплов трафика в SQLite.",
servers_rest_ping:
"Проверка доступности каталога серверов: GET /system/identity (RouterOS REST), замер задержки без полного опроса.",
uptime_resources: "CPU, память, температура и др. метрики с устройств.",
uptime_ping: "ICMP-пинг по настроенным пробам мониторинга.",
uptime_speed: "Фоновые btest / speed-пробы между узлами (при включённых пробах).",
internet_path: "Снимок данных для карты интернет-маршрута на dashboard (WAN/JH/EN, route+runtime, speed-пробы).",
gre_bgp:
"Опрос GRE-туннелей и BGP-сессий на включённых серверах, запись сэмплов в SQLite для движка оповещений.",
certificates_renew:
"Проверка сертификатов, выпущенных через UI, и автообновление через ACME DNS-01 (Cloudflare) до истечения срока.",
backups:
"Плановые бэкапы RouterOS по расписанию со страницы «Бэкапы»; тик планировщика раз в минуту.",
alert_engine:
"Оценка правил по данным из SQLite (сэмплы пишут джобы сбора, в т.ч. «GRE + BGP» и «Серверы: REST API»).",
}
export interface CollectorSettingsDto {
enabled: boolean
intervalSec: number
probeIntervalSec?: number
speedIntervalSec?: number
retentionDays: number
lastCollectedAt: string | null
lastDurationMs: number | null
lastError: string | null
collectorRunning?: boolean
}
export interface SchedulerJobStatusDto {
jobKey: string
enabled: boolean
intervalSec: number
running: boolean
lastFinishedAt: string | null
lastStatus: string | null
lastDurationMs: number | null
lastError: string | null
}
export interface SchedulerStatusDto {
jobs: SchedulerJobStatusDto[]
}
export interface UptimeSettingsDto extends CollectorSettingsDto {
resourcesEnabled?: boolean
pingEnabled?: boolean
speedEnabled?: boolean
scheduler?: SchedulerStatusDto
}
export interface SchedulerRunRowDto {
id: string
jobKey: string
startedAt: string
finishedAt: string
status: string
error: string | null
durationMs: number
/** JSON снимка результатов прогона (серверы, пробы, speed и т.д.) */
resultJson?: string | null
}