Rascunho vs registros publicados: padrões de versionamento compatíveis com aprovação
Aprenda padrões de rascunho vs registros publicados para apps de negócios: modelos práticos de versionamento, aprovações, implantações seguras e erros comuns a evitar.

Por que rascunho e registros publicados importam em apps de negócios
A maioria dos apps de negócios muda com frequência: preços são atualizados, políticas são revistas, formulários são ajustados e regras evoluem conforme a equipe aprende. O problema é que nem toda alteração deve entrar no ar assim que alguém clica em Salvar. Uma fase de rascunho cria um lugar seguro para trabalhar, e uma fase publicada protege aquilo em que clientes e colegas confiam diariamente.
A ideia central por trás de rascunho vs registros publicados é simples: separar “o que estamos editando” de “o que está em uso atualmente”. Essa separação torna possíveis as aprovações. Também reduz o estresse, porque editores podem fazer uma primeira versão imperfeita sem se preocupar que uma atualização pela metade quebre um fluxo de checkout ou confunda a equipe de vendas.
Na maioria dos apps, você vai versionar dois tipos de coisas:
- Conteúdo: texto, imagens, FAQs, artigos de ajuda, descrições de produto, templates de e-mail
- Configuração: preços, regras de desconto, campos de formulário, documentos obrigatórios, regras de roteamento, permissões
Editar dados ao vivo é onde equipes se queimam. Um número errado pode publicar o preço equivocado. Um campo removido pode quebrar um envio de formulário. Uma mudança de regra pode enviar requisições para a fila errada ou bloquear usuários legítimos.
Um exemplo realista: alguém atualiza um registro de “Plano” para mudar preços e limites, mas esquece de atualizar a lista relacionada de “Recursos”. Se essa edição ficar ao vivo, clientes veem um desencontro imediatamente e tickets de suporte começam a se acumular.
Você não precisa de um sistema complicado desde o primeiro dia. Comece com um modelo simples: um rascunho, uma versão publicada e uma ação clara de “Publicar”. Quando crescer, você pode adicionar estados mais ricos (como “Em revisão”) e recursos como agendamento e rollback.
Se você constrói em uma plataforma no-code como AppMaster, essa separação é mais fácil de aplicar porque o modelo de dados, a lógica de negócio e a UI podem refletir as mesmas regras de aprovação.
Termos-chave: rascunho, publicado e estados de aprovação
Quando as pessoas dizem “rascunho vs registros publicados”, geralmente querem dizer uma coisa simples: a versão que alguém está editando não é a mesma versão que seus usuários devem ver.
Aqui estão os estados que aparecem com mais frequência em apps de negócios:
- Rascunho: Uma versão em andamento. Pode mudar várias vezes e geralmente é visível apenas ao autor e revisores.
- Publicado: A versão ativa. É o que os usuários finais veem na UI, o que as regras de negócio usam e o que integrações podem enviar.
- Arquivado: Uma versão aposentada mantida para histórico. Não deve ser editada ou mostrada por padrão, mas pode ser usada para auditoria ou rollback.
- Agendado: Aprovado (ou pendente de aprovação) mas definido para ir ao ar em um horário específico, por exemplo, segunda-feira às 9:00.
- Rejeitado: Revisado e recusado. Não está ao vivo e deve trazer um motivo para que o autor possa corrigir.
“Publicado” deve ser definido na sua aplicação, não presumido. Em muitos sistemas, publicado significa que as três coisas seguintes são verdadeiras: é visível em telas voltadas ao cliente, é a versão usada quando sua app aplica regras (como elegibilidade, preços ou roteamento) e é a versão usada ao enviar mensagens ou sincronizar dados com ferramentas como e-mail/SMS ou sistemas de pagamento.
Uma simples flag Ativo frequentemente não é suficiente. Ela não consegue expressar “aprovado mas agendado”, “rejeitado mas mantido para referência” ou “atualmente ao vivo, mas existe um novo rascunho”. Também falha quando você precisa de exatamente uma versão ao vivo, além de um caminho claro para rollback.
Por fim, seja claro sobre papéis:
- Editores (autores) podem criar e atualizar rascunhos.
- Aprovadores podem publicar, agendar ou rejeitar.
- Admins podem sobrescrever em emergências e gerenciar permissões.
No AppMaster, esses estados normalmente vivem como campos no seu modelo de dados (Data Designer), enquanto os passos de aprovação e permissões são aplicados na sua lógica de Business Process.
O que geralmente precisa de versionamento: conteúdo e configuração
Tudo que pode mudar o que os usuários veem ou como sua app se comporta é candidato a versionamento. O objetivo é simples: fazer edições com segurança, obter aprovação quando necessário e só então deixar as mudanças irem ao ar. Essa é a razão prática pela qual equipes adotam rascunho vs registros publicados.
Conteúdo que se beneficia de rascunhos
Conteúdo é o ponto de partida óbvio porque edições são frequentes e geralmente de baixo risco. Exemplos típicos incluem artigos da central de ajuda, mensagens de onboarding e páginas voltadas ao cliente que marketing ou suporte precisam atualizar sem engenharia.
Alguns itens de conteúdo comuns que frequentemente precisam de uma etapa de aprovação:
- Artigos de ajuda ou FAQ
- Templates de e-mail e SMS (incluindo mensagens transacionais)
- Tabelas de preços e descrições de planos
- Fluxos de onboarding e dicas in-app
- Texto legal como trechos de termos ou textos de consentimento
Mesmo conteúdo “simples” pode ser sensível quando afeta cobrança, conformidade ou promessas ao cliente. Um erro em um e-mail de reset de senha pode disparar tickets de suporte rapidamente.
Configuração que se beneficia de rascunhos (e por que é mais arriscada)
Mudanças de configuração podem ser mais arriscadas que conteúdo porque alteram resultados, não só palavras. Um pequeno ajuste numa regra, permissão ou formulário pode bloquear usuários, expor dados ou quebrar um fluxo.
Configurações comuns que merecem versionamento e aprovação:
- Flags de recurso e configurações de rollout
- Regras de negócio (regras de desconto, elegibilidade, validações)
- Definições de formulários (campos, obrigatoriedade, lógica)
- Matrizes de permissões e acesso por função
- Passos de automação e regras de roteamento
Por exemplo, mudar uma matriz de permissões no painel admin pode conceder acidentalmente acesso a dados de clientes. Se você está construindo em uma plataforma como AppMaster, esses registros de “config” frequentemente dirigem a lógica de backend e o comportamento da UI, então tratá-los como rascunhos primeiro é um padrão mais seguro.
Requisitos de auditoria também mudam o design. Se você precisa provar quem aprovou o quê e quando, vai querer aprovações armazenadas, timestamps e histórico de versões, não apenas “rascunho atual” e “publicado atual”.
Três modelos de dados comuns que você pode usar
Não existe uma única melhor forma de lidar com rascunho vs registros publicados. O modelo certo depende de quão rigorosas são suas aprovações, com que frequência as mudanças ocorrem e quão importantes são auditoria e rollback.
Padrão A: um registro com um campo Status (mais PublishedAt). Você mantém uma linha por item e adiciona campos como Status (Draft, InReview, Published) e PublishedAt. Quando um editor muda o item, ele está editando a mesma linha, e a app decide o que mostrar com base no status e timestamps. É o mais simples de construir, mas pode ficar confuso se você precisar ver exatamente o que foi publicado na semana passada.
Padrão B: tabelas separadas para rascunho e publicado (ou coleções). Você armazena rascunhos em um lugar e itens publicados em outro. Publicar copia o rascunho aprovado para a tabela publicada. A leitura é muito rápida e clara porque a app ao vivo consulta apenas a tabela publicada, mas agora você tem dois esquemas para manter sincronizados.
Padrão C: versões imutáveis com um ponteiro para a versão publicada atual. Cada edição cria uma nova linha de versão (Versão 1, 2, 3), e o item principal aponta para a versão publicada atual. Publicar é só mover o ponteiro. Isso é ótimo para histórico e rollback, mas adiciona um join a mais na maioria das leituras.
Um jeito rápido de escolher:
- Escolha Padrão A quando você precisa de velocidade e simplicidade, e rollback é raro.
- Escolha Padrão B quando leituras ao vivo devem ser simples e seguras, e você tolera duplicação.
- Escolha Padrão C quando precisa de forte auditabilidade, rollback fácil ou múltiplas aprovações.
- Se desempenho for crítico, teste caminhos de leitura cedo (especialmente para o Padrão C).
Em ferramentas como AppMaster, esses modelos se mapeiam bem a um esquema PostgreSQL no Data Designer, então você pode começar simples e evoluir para um versionamento mais robusto sem reescrever toda a app.
Como modelar versões: IDs, histórico e trilha de auditoria
Um bom modelo de versionamento separa “o que a coisa é” de “qual revisão está no ar”. Esse é o cerne de rascunho vs registros publicados: você quer uma identidade estável para o registro, além de um rastro de alterações que possa ser revisado e aprovado.
Comece escolhendo uma chave única que permaneça significativa fora do banco de dados. Para um artigo de ajuda pode ser um slug, para uma regra de preço pode ser um código, e para dados sincronizados pode ser um ID externo. Mantenha essa chave estável entre todas as versões para que outras partes da app sempre saibam com qual registro estão lidando.
IDs: ID de registro estável + ID de versão
Um padrão comum é ter duas tabelas (ou duas entidades): uma para o “registro” (ID estável, chave única) e outra para “versões do registro” (várias linhas por registro). O registro aponta para a versão publicada atual (e opcionalmente para a última versão rascunho). Isso facilita mostrar ambos: “o que está ao vivo” e “o que está sendo preparado”.
Para cada versão, adicione campos que tornem a revisão possível sem palpites:
- número da versão (ou uma revisão incremental)
- criado por, criado em
- aprovado por, aprovado em
- status (draft, in review, approved, rejected, published)
- resumo da mudança (texto curto)
Histórico e trilha de auditoria: aprovações, comentários e evidências
Aprovações devem ser dados de primeira classe, não apenas uma troca de status. Armazene quem aprovou o quê e por quê, com comentários opcionais. Se você precisa de aprovação em múltiplas etapas, armazene um log de aprovação vinculado à versão (uma linha por decisão).
Localização e anexos precisam de cuidado extra. Evite armazenar imagens ou arquivos “diretamente no registro” sem versionamento. Em vez disso, anexe-os à versão para que rascunhos possam usar novos ativos sem sobrescrever o que está ao vivo. Para traduções, ou armazene campos localizados por versão (uma versão contém todos os idiomas) ou armazene linhas de versão por localidade, mas escolha uma e mantenha consistência.
No AppMaster, você pode modelar isso claramente no Data Designer (PostgreSQL) e aplicar as mudanças de estado em um Business Process para que só versões aprovadas possam se tornar publicadas.
Passo a passo: um fluxo de aprovação simples que funciona
A maioria dos fluxos de aprovação se baseia em uma ideia: sua app mantém duas realidades ao mesmo tempo. Rascunho vs registros publicados permite que as pessoas façam mudanças com segurança, enquanto clientes e colegas continuam vendo a última versão aprovada.
Aqui está um fluxo simples de cinco passos que você pode aplicar a páginas, templates, tabelas de preço, feature flags ou qualquer outro dado que “não deve quebrar produção”.
- Criar um rascunho. Comece do zero ou clone a versão publicada mais recente. Clonar é geralmente mais seguro porque carrega campos obrigatórios e valores padrão.
- Editar e validar. Permita que editores atualizem o rascunho e então rode checagens antes que ele possa avançar: campos obrigatórios, limites de tamanho, formatação e uma pré-visualização que pareça com a tela real.
- Enviar para aprovação e travar. Ao submeter, congele as partes que não devem mudar (frequentemente o conteúdo em si) e permita apenas pequenas correções (como notas de digitação). Armazene quem enviou e quando.
- Aprovar e publicar. Um aprovador ou altera o “ponteiro publicado” para a nova versão ou copia os campos do rascunho para o registro publicado. Também registre quem aprovou, o horário exato e notas de publicação.
- Rollback. Se algo der errado, reverta o ponteiro publicado para uma versão anterior ou restaure o snapshot publicado anterior. Mantenha o rollback rápido e protegido por permissões.
Um detalhe pequeno que evita muita dor: decida quais campos são editáveis em cada estágio (Rascunho, Em Revisão, Aprovado). Por exemplo, você pode permitir um “URL de teste” apenas em Rascunho, mas bloqueá-lo após a submissão.
Se você construir isso no AppMaster, os estados e locks podem viver no seu modelo de dados, e as regras de aprovação podem ficar num Business Process visual para que a mesma lógica seja executada sempre, não importa quem clique no botão.
Comportamento de publicação: agendamento, conflitos e rollback
A publicação é onde um bom fluxo de aprovação pode falhar. O objetivo é simples: mudanças aprovadas entram no ar quando você espera, sem surpresas para editores ou usuários.
Publicar agora vs agendar
“Publicar agora” é fácil, mas agendar precisa de regras claras. Armazene um horário de publicação em um padrão único (geralmente UTC) e sempre mostre aos editores o horário local que esperam. Adicione um pequeno buffer (por exemplo, um minuto) entre “aprovado” e “ao vivo” para que jobs em segundo plano tenham tempo de atualizar caches e índices de busca.
Se você tiver múltiplas regiões ou equipes, decida o que “meia-noite” significa. Uma mudança agendada para 00:00 em Nova York é um momento diferente de 00:00 em Londres. Um fuso horário claro na UI evita a maioria dos erros.
Conflitos: evitar que pessoas se sobrescrevam
Conflitos acontecem quando duas pessoas editam o mesmo rascunho ou aprovam dois rascunhos diferentes para o mesmo registro. Correções comuns são lock ou checagens otimistas.
- Locking: quando alguém abre um rascunho, marque como “em edição” e mostre quem o está editando.
- Checagens otimistas: armazene um número de versão e bloqueie o salvamento se a versão mudou desde que o editor carregou.
- Regras de merge: permita mesclar apenas campos seguros (como texto), e force escolha manual para campos arriscados (como preços ou permissões).
Isso é especialmente importante com rascunho vs registros publicados, onde a versão publicada é a fonte de verdade para os usuários.
O que usuários em voo experienciam
Mesmo com dados perfeitos, usuários podem não ver mudanças instantaneamente. Páginas podem estar em cache, sessões podem durar horas e processos de longa duração (como checkout, onboarding ou exportações em massa) podem depender da configuração antiga.
Uma abordagem prática é “ler pelo ponteiro publicado”: usuários sempre leem a versão marcada como atual, e publicar apenas troca esse ponteiro. Se precisar de rollout seguro, atrase a atualização do cache até depois da troca do ponteiro e mantenha sessões estáveis não mudando campos obrigatórios durante um fluxo.
Rollback e manter histórico sem bagunça
Rollback deve ser entediante: troque o ponteiro publicado de volta para a versão anterior. Mantenha versões antigas para auditoria e comparação, mas esconda-as das telas do dia a dia. Mostre apenas o rascunho atual, a versão publicada atual e um painel de histórico com as últimas versões e quem as aprovou.
No AppMaster, isso mapeia bem para registros de “versão” separados mais uma referência única para a “versão publicada atual”, assim sua UI permanece simples enquanto seus dados ficam rastreáveis.
Cenário de exemplo: atualizar um portal voltado ao cliente com segurança
Um caso comum é um portal de cliente que mostra uma checklist de onboarding para novos clientes. A checklist inclui passos como aceitar termos, enviar documentos e configurar cobrança. O jurídico quer aprovar qualquer alteração de texto antes dela entrar no ar.
Seu editor cria uma nova versão rascunho da checklist. A versão publicada permanece no lugar, então clientes continuam vendo o texto aprovado enquanto o novo rascunho é preparado. Este é o benefício central de rascunho vs registros publicados: você pode trabalhar em andamento sem mudar aquilo de que os usuários reais dependem.
No rascunho, o editor muda um passo de "Enviar ID" para "Enviar documento de identidade com foto emitido pelo governo" e adiciona uma nota sobre retenção de dados. Também muda a ordem dos passos para que "Aceitar termos" venha primeiro.
O jurídico revisa o rascunho e deixa comentários em itens específicos. Por exemplo: "Substituir 'documento com foto' por 'identificação válida com foto'" e "Remover a promessa de que documentos são apagados em 30 dias; nossa política é 90 dias." Durante essa revisão, alguém também encontra um erro importante: uma regra no rascunho marca a checklist como completa quando apenas 2 de 3 documentos foram enviados. Isso teria permitido que clientes prosseguissem antes das checagens de conformidade.
Depois de aplicar as edições, o rascunho é aprovado e publicado. Publicar troca o que o portal lê: a nova versão vira o registro publicado, e a versão publicada antiga vira a versão anterior (mantida para rollback).
O que os clientes veem permanece previsível:
- Antes da publicação: o portal mostra a checklist antiga e as regras antigas de conclusão.
- Depois da publicação: o portal mostra a nova redação, a nova ordem e a regra de conclusão corrigida.
Se algo ainda parecer errado após o lançamento, você pode rapidamente reverter republicando a versão aprovada anterior, sem reconstruir todo o portal.
Erros comuns e armadilhas que as equipes enfrentam
A maneira mais rápida de quebrar confiança em um fluxo de aprovação é permitir que pessoas editem o registro ao vivo “só desta vez”. Começa como um atalho, depois alguém esquece de reverter um teste e clientes veem texto pela metade ou uma regra quebrada. Se você está implementando rascunho vs registros publicados, torne impossível editar a versão publicada exceto por uma ação de publicação.
Outro problema comum é duplicar registros sem uma chave estável. Se você duplica um registro para criar um rascunho mas não mantém um identificador “raiz” consistente (como ContentKey, PolicyKey, PriceListKey), duplicatas se espalham. Resultados de busca mostram múltiplos itens “iguais”, integrações não conseguem dizer qual está atual e relatórios ficam pouco confiáveis.
Aprovações sem trilha de auditoria também são frágeis. Quando algo dá errado, “quem mudou o quê” vira suposição. Mesmo um log simples de submetido por, aprovado por, timestamps e uma nota curta de mudança evita longas discussões e ajuda no treinamento.
Validação frequentemente é pulada até depois da publicação. Isso é arriscado para templates, regras de negócio ou lógica de preço onde um pequeno erro pode ter grande impacto. Valide rascunhos antes de permitir submissão e valide novamente no momento da publicação (porque dados relacionados podem ter mudado).
Por fim, equipes esquecem os dados “satélites” que devem acompanhar o registro principal: traduções, anexos, regras de permissão, links de categoria e feature flags. O rascunho parece correto em uma tela, mas a experiência ao vivo fica incompleta.
Uma lista rápida para evitar armadilhas:
- Bloqueie edições diretas a registros publicados (use papéis e regras de API)
- Mantenha uma chave raiz estável entre versões para evitar duplicatas
- Armazene um log de auditoria para ações de submissão/aprovação/publicação
- Execute validação em rascunho e novamente na publicação
- Publique objetos relacionados juntos (traduções, arquivos, permissões)
Se você constrói em uma plataforma no-code como AppMaster, essas salvaguardas se mapeiam bem para campos de status, tabelas de versão e um Business Process que obriga a regra “só publicar via workflow”.
Checklist rápido antes de lançar um fluxo de aprovação
Antes de lançar uma solução de rascunho vs registros publicados, faça uma rápida verificação das coisas que mais quebram. Essas checagens são menos sobre polimento de UI e mais sobre manter dados seguros quando pessoas reais começarem a usar o fluxo.
Cinco checagens que salvam você depois
- Faça a pergunta “o que está ao vivo agora?” ter resposta em um passo. Na prática, isso significa que toda query consumidora pode apontar para a versão publicada atual sem ordenar, adivinhar ou filtros complexos.
- Dê aos revisores uma pré-visualização verdadeira. Um revisor deve ver o rascunho exatamente como os usuários veriam, mas sem que ele seja alcançável pelo app público ou portal do cliente.
- Planeje um rollback que seja uma troca, não um conserto manual. Se uma mudança ruim passar, você deve poder reverter para a versão publicada anterior mudando um ponteiro ou status, não editando campos à mão.
- Capture evidência de aprovação. Registre quem aprovou, quando aprovou e o que foi aprovado (número da versão ou ID da versão). Isso importa para auditorias e também para responsabilidade básica.
- Restrinja direitos de publicação. Editar um rascunho não é o mesmo que publicá-lo. Garanta que apenas as funções certas possam publicar e que sua API e UI apliquem isso.
Um teste prático rápido: peça a um colega para criar um rascunho, solicitar aprovação e então tentar publicar a partir de uma conta que não deveria ter permissão. Se funcionar mesmo uma vez, você tem uma falha.
Se estiver construindo isso no AppMaster, trate publicação como um passo separado de Business Process com checagens de função e mantenha a seleção da “versão publicada” em um só lugar (um campo, uma regra). Isso mantém seu web app, apps móveis e backend sincronizados quando uma mudança entra no ar.
Próximos passos: implemente o padrão no seu app com risco mínimo
Escolha um lugar para começar, não todo o sistema. Um bom primeiro candidato é algo que muda com frequência mas é fácil de testar, como templates de e-mail, artigos da central de ajuda ou uma tabela de regras de preço. Você vai aprender mais com um fluxo bem feito do que tentando aplicar rascunho vs registros publicados a todas as tabelas de uma vez.
Anote quem pode fazer o quê antes de construir qualquer coisa. Mantenha simples e faça o padrão seguro por default. Para a maioria das equipes, três papéis são suficientes: editor (cria rascunhos), revisor (verifica conteúdo e regras) e publicador (coloca no ar). Se uma pessoa acumular papéis, tudo bem, mas sua app deve ainda registrar qual ação ocorreu e quando.
Adicione checagens leves cedo para não publicar surpresas. Validações básicas (campos obrigatórios, intervalos de datas, referências quebradas) previnem a maioria dos lançamentos ruins. Pré-visualização é tão importante quanto validação: dê aos revisores uma forma de ver o que mudará antes de aprovar, especialmente para páginas voltadas ao cliente.
Aqui vai um plano de rollout pequeno e de baixo risco:
- Implemente o padrão para uma entidade e uma tela.
- Adicione permissões baseadas em papéis para editar, aprovar e publicar.
- Construa uma etapa de pré-visualização e um checklist de validação curto.
- Faça um piloto com um grupo pequeno de usuários e dados reais.
- Expanda para a próxima entidade só depois de corrigir o feedback inicial.
Se quiser avançar rápido sem codificar cada tela de admin, uma plataforma no-code pode ajudar. Por exemplo, AppMaster permite modelar dados, construir uma UI de admin e adicionar lógica de aprovação com fluxos visuais, depois gerar apps prontos para produção quando estiver pronto para lançar.
Por fim, planeje seu primeiro release como um exercício: escolha um escopo estreito, defina critérios de sucesso (tempo para aprovar, número de rollbacks, erros pegos na revisão) e só então escale o padrão para mais conteúdo e configurações.


