feat: enforce visit scheduling ux

This commit is contained in:
Esdras Renan 2025-11-18 19:59:27 -03:00
parent 6473e8d40f
commit 72a4748a81
6 changed files with 160 additions and 36 deletions

View file

@ -267,6 +267,15 @@ function buildTimelineMessage(type: string, payload: Record<string, unknown> | n
const sessionText = sessionDuration ? formatDurationMs(sessionDuration) : null
const categoryName = p.categoryName as string | undefined
const subcategoryName = p.subcategoryName as string | undefined
const formatVisitDate = (value: unknown): string | null => {
if (typeof value === "number" || typeof value === "string") {
const date = new Date(value)
if (!Number.isNaN(date.getTime())) {
return format(date, "dd MMM yyyy HH:mm", { locale: ptBR })
}
}
return null
}
switch (type) {
case "STATUS_CHANGED":
@ -323,8 +332,29 @@ function buildTimelineMessage(type: string, payload: Record<string, unknown> | n
}
case "MANAGER_NOTIFIED":
return "Gestor notificado"
case "VISIT_SCHEDULED":
return "Visita agendada"
case "VISIT_SCHEDULED": {
const visitDate =
(p.visitDate as unknown) ?? p.scheduledFor ?? p.scheduledAt ?? p.to ?? null
const formatted = formatVisitDate(visitDate)
return formatted ? `Visita agendada para ${formatted}` : "Visita agendada"
}
case "VISIT_SCHEDULE_CHANGED": {
const nextVisit =
(p.visitDate as unknown) ?? p.scheduledFor ?? p.scheduledAt ?? p.to ?? null
const previousVisit =
p.previousVisitDate ??
p.previousScheduledFor ??
p.previousScheduledAt ??
p.from ??
null
const formattedNext = formatVisitDate(nextVisit)
const formattedPrevious = formatVisitDate(previousVisit)
if (formattedNext) {
const suffix = formattedPrevious ? ` (antes: ${formattedPrevious})` : ""
return `Data da visita alterada para ${formattedNext}${suffix}`
}
return "Data da visita alterada"
}
case "CSAT_RECEIVED":
return "CSAT recebido"
case "CSAT_RATED":