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
