feat: aggregate dashboard metrics server-side

This commit is contained in:
Esdras Renan 2025-11-17 13:48:59 -03:00
parent c3ee23f967
commit 3b0484a9ad
4 changed files with 641 additions and 198 deletions

View file

@ -3,12 +3,17 @@ import { api } from "./_generated/api"
const crons = cronJobs()
crons.interval(
"report-export-runner",
{ minutes: 15 },
api.reports.triggerScheduledExports,
{}
)
// Keep the handler available but only register it when explicitly enabled in Convex env.
const reportsCronEnabled = process.env.REPORTS_CRON_ENABLED === "true"
if (reportsCronEnabled) {
crons.interval(
"report-export-runner",
{ minutes: 15 },
api.reports.triggerScheduledExports,
{}
)
}
crons.daily(
"auto-pause-internal-lunch",

File diff suppressed because it is too large Load diff

View file

@ -726,4 +726,21 @@ export default defineSchema({
.index("by_tenant_company", ["tenantId", "companyId"])
.index("by_tenant_default", ["tenantId", "isDefault"])
.index("by_tenant", ["tenantId"]),
analyticsCache: defineTable({
tenantId: v.string(),
cacheKey: v.string(),
payload: v.any(),
expiresAt: v.number(),
_ttl: v.optional(v.number()),
})
.index("by_key", ["tenantId", "cacheKey"]),
analyticsLocks: defineTable({
tenantId: v.string(),
cacheKey: v.string(),
expiresAt: v.number(),
_ttl: v.optional(v.number()),
})
.index("by_key", ["tenantId", "cacheKey"]),
});