4.4 KiB
4.4 KiB
Alterações — 08/11/2025
Concluído
- Agenda (Resumo & Calendário) — nova rota
/agenda(AppShell + Tabs) com filtros persistentes (AgendaFilters), visão Resumo com KPIs por status/SLA e cards por seção, e Calendário mensal com eventos coloridos por SLA. Dataset derivado emsrc/lib/agenda-utils.tsnormaliza tickets Convex → blocos (upcoming, overdue, unscheduled, completed) e gera eventos sintéticos até conectarmos ao modelo definitivo de agendamentos. - Sidebar & navegação — link “Agenda” habilitado no
AppSidebar, replicando permissões das páginas de tickets. - Datas de admissão/desligamento —
use-local-time-zone+Calendaratualizados; todos os fluxos (novo ticket, edição dentro do ticket, portal) aplicam o mesmo picker e normalizam valores em UTC, eliminando o deslocamento -1/-2 dias para nascimento e início. - Layout dos campos personalizados — seção “Editar campos personalizados” reutiliza o grid/style do modal de criação, mantendo labels compactos, espaçamento consistente e colunas responsivas semelhantes ao layout do portal.
- CSAT no ticket individual —
ticket-csat-card.tsxmantém a experiência para colaboradores, mas oculta a avaliação/“Obrigado pelo feedback!” de agentes/gestores. Também bloqueia o card inteiro para agentes (somente admins visualizam a nota rapidamente). - Toast global —
src/lib/toast-patch.tshigieniza títulos/descrições removendo pontuação final (!,., reticências). Patch tipado evitaanye replica o comportamento em todos os métodos (success,error,loading,promise, etc.). - Linha do tempo mais útil — mutations de campos personalizados ignoram saves sem alteração e registram apenas os campos realmente modificados, reduzindo spam como “Campos personalizados atualizados (Nome do solicitante, …)” quando nada mudou.
- SLA por categoria/prioridade
- Convex: tabela
categorySlaSettings, helpers (categorySlas.ts) e drawer na UI de categorias permitem definir alvos por prioridade (resposta/solução, modo business/calendar, pausas e alert threshold). - Tickets: snapshot (
ticket.slaSnapshot) no momento da criação inclui regra aplicada;computeSlaDueDatestrata horas úteis (08h–18h, seg–sex) e calendário corrido; status respeita pausas configuradas, comslaPausedAt/slaPausedMsebuild*CompletionPatch. - Front-end:
ticket-details-paneleticket-summary-headerexibem badges de SLA (on_track/at_risk/breached/met) com due dates;sla-utils.tscentraliza cálculo para UI. - Prisma: modelo
Ticketagora persisteslaSnapshot, due dates e estado de pausa; migration20251108042551_add_ticket_sla_fieldsaplicada e client regenerado.
- Convex: tabela
- Polyfill de performance —
src/lib/performance-measure-polyfill.tsprevineperformance.measurenegativo em browsers/server; importado emapp/layout.tsx. - Admin auth fallback — páginas server-side (
/admin,/admin/users) tratam bancos recém-criados ondeAuthUserainda não existe, exibindo cards vazios em vez do crashAuthUser table does not exist. - Chips de admissão/desligamento —
convex/tickets.tsgaranteformTemplateLabelcom fallback nas labels configuradas (ex.: “Admissão de colaborador”), corrigindo etiquetas sem acentuação na listagem/título do ticket. - listTicketForms otimizada — handler faz uma única leitura por tabela (templates, campos, configurações) e filtra em memória para o usuário/empresa atual. Remove o fan-out (3 queries x template) que excedia 1 s e derrubava o websocket com erro 1006/digest 500.
Observações e próximos passos
- Agenda ainda usa eventos mockados (derivados de due dates). Integrar ao modelo real de
TicketSchedulequando estiver pronto (drag & drop, eventos por agente e digest diário). - SLA business-hours está fixo em 08h–18h (BR). Precisamos conectar com calendários por fila/categoria + feriados/expediente custom.
- Drawer de SLA nas categorias carece de validações finas (ex.: impedir negativos, tooltips com modo escolhido) e feedback de sucesso/erro.
- Relatórios/backlog ainda não consomem o snapshot Prisma recém-adicionado; alinhar APIs que leem tickets direto do banco.
Testes & build
bun run lint,bun run testebun run buildpassam (webpack e prisma generate); Convex queries relacionadas foram atualizadas para manter índices consistentes.