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:
@@ -689,4 +689,17 @@ export class ContentStorage extends DataTablesStorage {
|
||||
.where(and(eq(automations.id, id), eq(automations.organizationId, organizationId)));
|
||||
}
|
||||
|
||||
// Все активные schedule-автоматизации всех организаций (для планировщика, вызывать в withSuperAdmin)
|
||||
async getActiveScheduleAutomations(): Promise<Automation[]> {
|
||||
return db.select().from(automations)
|
||||
.where(and(eq(automations.trigger, 'schedule'), eq(automations.isActive, true)))
|
||||
.orderBy(asc(automations.id));
|
||||
}
|
||||
|
||||
async markAutomationScheduledRun(id: number): Promise<void> {
|
||||
await db.update(automations)
|
||||
.set({ lastScheduledRunAt: new Date() })
|
||||
.where(eq(automations.id, id));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user