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.