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>
44 lines
1 KiB
TypeScript
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
|