feat: триггер schedule для автоматизаций — ежедневный запуск по МСК
- планировщик server/workers/automation-scheduler.ts (тик 60 сек, все организации)
- защита от дублей: automations.last_scheduled_run_at (миграция 0065), catch-up в пределах суток
- UI: выбор триггера 'По расписанию' и времени запуска в Automations.tsx
- MCP: create_automation/update_automation принимают trigger 'schedule'
- triggerData: { trigger: 'schedule', scheduledAt }
This commit is contained in:
@@ -7,6 +7,7 @@ import { pushService } from "./services/push.service";
|
||||
import { notificationService } from "./services/notification.service";
|
||||
import { webPushService } from "./services/web-push.service";
|
||||
import { startMedScheduleWorker } from "./medschedule/worker";
|
||||
import { startAutomationScheduler } from "./workers/automation-scheduler";
|
||||
import { storage } from "./storage";
|
||||
import type { ReminderRecipient } from "@shared/schema";
|
||||
import { db, withSuperAdmin } from "./db"; // lazy proxy — safe at module load; throws on first use if DATABASE_URL missing
|
||||
@@ -1028,6 +1029,10 @@ async function runStartupDataPatches() {
|
||||
startMedScheduleWorker();
|
||||
log('MedSchedule worker started');
|
||||
|
||||
// Start automation scheduler (schedule-trigger automations, daily at configured MSK time)
|
||||
startAutomationScheduler();
|
||||
log('Automation scheduler started');
|
||||
|
||||
// Clean up duplicate subscriptions then backfill defaults for existing users
|
||||
(async () => {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user