sistema-de-chamados/docs/ticket-snapshots.md

1.6 KiB
Raw Blame History

Ticket snapshots e histórico

Este projeto agora preserva o “lastro” de dados sensíveis em tickets através de snapshots gravados no momento da criação e atualizações chave:

  • requesterSnapshot: nome, email, avatar e equipes do solicitante no momento da abertura.
  • assigneeSnapshot: nome, email, avatar e equipes do responsável atribuído.
  • companySnapshot: nome, slug e flag isAvulso da empresa associada ao ticket.

Benefícios

  • Tickets continuam exibindo nome do solicitante/empresa mesmo após exclusões ou renomeações.
  • Comentários já utilizavam authorSnapshot; a lógica foi mantida e ampliada para tickets.

Fluxos atualizados

  • Criação de ticket: snapshots do solicitante, responsável inicial (se houver) e da empresa são persistidos.
  • Reatribuição e início de atendimento: atualizam o assigneeSnapshot.
  • Exclusão de usuário: preenche requesterSnapshot de todos os tickets onde a pessoa é solicitante, antes da remoção.
  • Exclusão de empresa: preenche companySnapshot de tickets vinculados, antes da remoção.

Consultas e hidratação

  • Resolvers de lista e detalhes de tickets passaram a usar os snapshots como fallback quando o documento relacionado não existe mais (sem “Solicitante não encontrado”, salvo ausência total de dados).

Índices novos

  • tickets.by_tenant_requester: otimiza buscas por histórico de um solicitante.

Backfill

  • Há uma mutation de migração para preenchimento retroativo de snapshots: convex.migrations.backfillTicketSnapshots.
  • Execute com um tenant por vez (e opcionalmente um limite) se necessário.