import { cronJobs } from "convex/server" import { api } from "./_generated/api" const crons = cronJobs() // ============================================================================= // CRON JOBS DESABILITADOS PARA REDUZIR USO DE MEMORIA // ============================================================================= // Os cron jobs do Convex criam registros em _scheduled_job_logs que acumulam // versoes em memoria (o Convex self-hosted carrega TODAS as versoes em RAM). // // Esses jobs foram movidos para endpoints HTTP em /api/cron/* e devem ser // chamados via N8N ou outro scheduler externo: // // - POST /api/cron/chat-cleanup (substitui auto-end-inactive-chat-sessions) // - POST /api/cron/usb-cleanup (substitui cleanup-stale-usb-policies) // // Autenticacao: Bearer token no header Authorization (usar CRON_SECRET ou REPORTS_CRON_SECRET) // ============================================================================= // Flags to keep heavy jobs disabled until the Convex backend stabilizes. const reportsCronEnabled = process.env.REPORTS_CRON_ENABLED === "true" const autoPauseCronEnabled = process.env.AUTO_PAUSE_ENABLED === "true" if (reportsCronEnabled) { crons.interval( "report-export-runner", { minutes: 15 }, api.reports.triggerScheduledExports, {} ) } if (autoPauseCronEnabled) { crons.daily( "auto-pause-internal-lunch", { hourUTC: 15, minuteUTC: 0 }, api.tickets.pauseInternalSessionsForLunch, {} ) } // DESABILITADO - Movido para /api/cron/usb-cleanup (chamado via N8N) // crons.interval( // "cleanup-stale-usb-policies", // { minutes: 30 }, // api.usbPolicy.cleanupStalePendingPolicies, // {} // ) // DESABILITADO - Movido para /api/cron/chat-cleanup (chamado via N8N) // crons.interval( // "auto-end-inactive-chat-sessions", // { minutes: 1 }, // api.liveChat.autoEndInactiveSessions, // {} // ) export default crons