1.6 KiB
1.6 KiB
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, e‑mail, avatar e equipes do solicitante no momento da abertura.
- assigneeSnapshot: nome, e‑mail, 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.