Dados de demonstração corrompem dados reais
Um vendedor quer mostrar para um prospect. Ele entra no tenant de produção e cria um evento falso. Relatórios reais o consideram. A reconciliação real o contabiliza. Vergonha real vem em seguida.
Seed & Reset
Um framework de seed-packs para demonstrações de vendas, ambientes de QA e onboarding de clientes — com uma barreira de segurança hard-coded que torna impossível executar seeds em um cliente real. Dados realistas, desmontagem reversível, auditoria completa.
Dados de demonstração, dados de QA e dados de onboarding têm a mesma exigência: parecer reais, comportar-se como reais e nunca, jamais, contaminar um tenant de produção. Demonstrações é construído em torno dessa barreira em primeiro lugar.
Um vendedor quer mostrar para um prospect. Ele entra no tenant de produção e cria um evento falso. Relatórios reais o consideram. A reconciliação real o contabiliza. Vergonha real vem em seguida.
Os dados de teste que todo mundo entrega são obviamente sintéticos — todos os nomes são "Test User 1", as datas são 2023, os orçamentos são US$ 1. Os prospects perdem o interesse em segundos.
Um engenheiro de QA precisa de um ambiente de teste limpo. O script de reset é um documento do Notion com 47 passos. Metade dos passos não se aplica mais. O ambiente nunca é realmente resetado.
Novos clientes abrem o produto e encontram um tenant vazio. Não sabem onde clicar. Não sabem como o valor se parece. O primeiro login é a pior experiência.
Cada capacidade torna os seed-packs código de primeira classe — versionados, reproduzíveis, reversíveis e rastreáveis. QA, vendas e onboarding bebem da mesma fonte.
Cada seed-pack declara seu id, versão, módulos cobertos e funções idempotentes de apply / plan. Pacotes são código de primeira classe, não um amontoado de fixtures SQL.
O pacote event-agency-starter entrega 12 fornecedores, 5 eventos, 15 deals, 3 orçamentos, 5 ordens de serviço, 8 reservas — nomes realistas, custos realistas, datas realistas. Uma demonstração que parece uma demonstração.
Cada linha criada é marcada em platform.seed_rows com o pack id + application id. A desmontagem é determinística — sem linhas órfãs, sem limpeza manual.
Cada apply/reset verifica organizations.is_production. Nenhum caminho do código da aplicação consegue executar seeds em um cliente real. Nunca.
Cada pacote tem uma função plan que prevê o que seria criado — contagens por tabela, linhas de exemplo, totais esperados. Dry-run é uma operação de primeira classe, não um chute.
As aplicações de seed são registradas em platform.seed_applications com o autor, timestamp, versão do pacote e contagens. QA reproduz bugs reexecutando o mesmo seed. Demonstrações de vendas ficam marcadas e rastreáveis.
Um único pacote pode semear deals de Vendas, itens de linha de Orçamento, fornecedores de Fornecedores, ordens de serviço de Despacho e reservas de Espaços — tudo em uma só transação, com os links entre módulos preservados.
Aplicar um pacote exige digitar exatamente o slug da org de destino. Resetar exige o mesmo. Proteção foot-gun para admins com pressa.
Seguro por padrão
Seed-packs não podem ser executados em um tenant de produção — nem por engano, nem por override, nem por ninguém. A barreira de segurança fica no nível do código e no nível dos dados.
lib/seeds/safety.ts::assertNotProduction(orgId) é chamado antes de cada escrita. Se organizations.is_production = true, o pacote dá throw. Nenhum caminho do código da aplicação consegue burlar a verificação.
Tenants de clientes reais têm is_production = true. Tenants de demonstração e QA não têm. O módulo Demonstrações é totalmente desativado em orgs de produção via feature flag — duplo bloqueio rígido, cinto e suspensórios.
A plataforma está no ar. Solicite uma demo para ver o módulo Demos em ação.
Parte de uma plataforma de 13 módulos que se adapta à sua operação. Sem compromisso.