sistema-de-chamados/convex/crons.ts
esdrasrenan 115c5128a6 Consolidate chat timeline events + auto-end inactive sessions
Timeline consolidation:
- Replace multiple LIVE_CHAT_STARTED/ENDED events with single LIVE_CHAT_SUMMARY
- Show total duration accumulated across all sessions
- Display session count (e.g., "23min 15s total - 3 sessoes")
- Show "Ativo" badge when session is active

Auto-end inactive chat sessions:
- Add cron job running every minute to check inactive sessions
- Automatically end sessions after 5 minutes of client inactivity
- Mark auto-ended sessions with "(encerrado por inatividade)" flag

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 14:44:34 -03:00

44 lines
1 KiB
TypeScript

import { cronJobs } from "convex/server"
import { api } from "./_generated/api"
const crons = cronJobs()
// 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,
{}
)
}
// Cleanup de policies USB pendentes por mais de 1 hora (sem flag, sempre ativo)
crons.interval(
"cleanup-stale-usb-policies",
{ minutes: 30 },
api.usbPolicy.cleanupStalePendingPolicies,
{}
)
// Encerrar sessoes de chat inativas por mais de 5 minutos (sempre ativo)
crons.interval(
"auto-end-inactive-chat-sessions",
{ minutes: 1 },
api.liveChat.autoEndInactiveSessions,
{}
)
export default crons