04 abr 2025·8 min de lectura

Borradores vs registros publicados: patrones de versionado compatibles con aprobaciones

Aprende los patrones de registros en borrador vs publicados para apps de negocio: modelos prácticos de versionado, aprobaciones, despliegues seguros y errores comunes a evitar.

Borradores vs registros publicados: patrones de versionado compatibles con aprobaciones

Por qué importan los borradores y los registros publicados en las aplicaciones de negocio

La mayoría de las aplicaciones de negocio cambian con frecuencia: los precios se actualizan, las políticas se revisan, los formularios se ajustan y las reglas evolucionan a medida que el equipo aprende. El problema es que no todos los cambios deberían activarse en vivo en el momento en que alguien pulsa Guardar. Una etapa de borrador crea un lugar seguro para trabajar, y una etapa publicada protege lo que los clientes y compañeros usan cada día.

La idea central detrás de los registros en borrador frente a los publicados es simple: separar “lo que estamos editando” de “lo que está en uso ahora”. Esa separación hace posibles las aprobaciones. También reduce el estrés, porque los editores pueden hacer una primera pasada desordenada sin temer que una actualización a medias rompa un flujo de pago o confunda al equipo de ventas.

En la mayoría de las apps, versionarás dos tipos de cosas:

  • Contenido: texto, imágenes, preguntas frecuentes, artículos de ayuda, descripciones de productos, plantillas de correo
  • Configuración: precios, reglas de descuento, campos de formulario, documentos requeridos, reglas de enrutamiento, permisos

Editar datos en vivo es donde los equipos suelen sufrir. Un número equivocado puede publicar el precio incorrecto. Un campo eliminado puede romper el envío de un formulario. Un cambio en una regla puede enviar solicitudes a la cola equivocada o bloquear a usuarios legítimos.

Un ejemplo realista: alguien actualiza un registro de “Plan” para cambiar precios y límites, pero olvida actualizar una lista relacionada de “Características”. Si esa edición se publica, los clientes ven una discrepancia de inmediato y los tickets de soporte empiezan a acumularse.

No necesitas un sistema complicado desde el primer día. Empieza con un modelo simple: un borrador, una versión publicada y una acción clara de “Publicar”. Cuando lo superes, puedes añadir estados más ricos (como “En revisión”) y funciones como programación y reversión.

Si construyes en una plataforma no-code como AppMaster, esta separación es más fácil de aplicar porque el modelo de datos, la lógica de negocio y la UI pueden reflejar las mismas reglas de aprobación.

Términos clave: borrador, publicado y estados de aprobación

Cuando la gente habla de “borrador vs registros publicados”, suele referirse a una cosa simple: la versión que alguien está editando no es la misma versión que deberían ver tus usuarios.

Estos son los estados que aparecen con más frecuencia en las apps de negocio:

  • Borrador: una versión en progreso. Puede cambiar muchas veces y suele ser visible solo para el autor y los revisores.
  • Publicado: la versión en vivo. Es lo que ven los usuarios finales en la interfaz, lo que usan las reglas de negocio y lo que pueden enviar las integraciones.
  • Archivado: una versión retirada guardada por historial. No debe editarse ni mostrarse por defecto, pero puede usarse para auditorías o para volver atrás.
  • Programado: aprobado (o pendiente de aprobación) pero configurado para publicarse en un momento específico, por ejemplo el lunes que viene a las 9:00.
  • Rechazado: revisado y declinado. No está en vivo y debería llevar una razón para que el autor lo corrija.

“Publicado” debe definirse en tu app, no asumirse. En muchos sistemas, publicado significa que se cumplen las tres cosas: es visible en las pantallas destinadas al cliente, es la versión que se usa cuando la app aplica reglas (como elegibilidad, precios o enrutamiento) y es la versión que se utiliza al enviar mensajes o sincronizar datos con herramientas como email/SMS o sistemas de pago.

Un simple indicador Activo a menudo no basta. No puede expresar “aprobado pero programado”, “rechazado pero guardado como referencia” o “actualmente en vivo, pero existe un nuevo borrador”. También falla cuando necesitas exactamente una versión en vivo, además de una forma limpia de volver atrás.

Finalmente, sé claro sobre los roles:

  • Editores (autores) pueden crear y actualizar borradores.
  • Aprobadores pueden publicar, programar o rechazar.
  • Admins pueden anular en emergencias y gestionar permisos.

En AppMaster, estos estados suelen vivir como campos en tu modelo de datos (Data Designer), mientras que los pasos de aprobación y permisos se aplican en la lógica de Business Process.

Qué suele necesitar versionado: contenido y configuración

Todo lo que pueda cambiar lo que los usuarios ven o cómo se comporta tu app es candidato a versionado. El objetivo es simple: hacer ediciones de forma segura, obtener aprobación cuando haga falta y solo entonces dejar que los cambios estén en vivo. Esa es la razón práctica por la que los equipos adoptan registros en borrador y publicados.

Contenido que se beneficia de borradores

El contenido es el punto de partida obvio porque las ediciones son frecuentes y, por lo general, de bajo riesgo. Ejemplos típicos incluyen artículos del centro de ayuda, mensajes de onboarding y páginas visibles al cliente que marketing o soporte necesitan actualizar sin ingeniería.

Algunos elementos de contenido que suelen necesitar un paso de aprobación:

  • Artículos de ayuda o FAQ
  • Plantillas de email y SMS (incluyendo mensajes transaccionales)
  • Tablas de precios y descripciones de planes
  • Flujos de onboarding y consejos dentro de la app
  • Texto legal como fragmentos de términos o textos de consentimiento

Incluso el contenido “simple” puede ser sensible cuando afecta facturación, cumplimiento o promesas al cliente. Un error tipográfico en un correo de restablecimiento de contraseña puede disparar tickets de soporte rápidamente.

Configuración que se beneficia de borradores (y por qué es más arriesgada)

Los cambios de configuración pueden ser más arriesgados que el contenido porque cambian resultados, no solo palabras. Un pequeño ajuste a una regla, permiso o formulario puede bloquear usuarios, exponer datos o romper un flujo de trabajo.

Configuraciones comunes que merecen versionado y aprobación:

  • Feature flags y ajustes de despliegue
  • Reglas de negocio (descuentos, elegibilidad, validaciones)
  • Definiciones de formularios (campos, flags de requerido, lógica)
  • Matrices de permisos y accesos por rol
  • Pasos de automatización y reglas de enrutamiento

Por ejemplo, cambiar una matriz de permisos en un panel de admin puede otorgar por accidente acceso a datos de clientes. Si construyes en una plataforma como AppMaster, estos registros de “config” suelen impulsar la lógica del backend y el comportamiento de la UI, así que tratarlos primero como borradores es un modo más seguro por defecto.

Los requisitos de auditoría también cambian el diseño. Si necesitas probar quién aprobó qué y cuándo, querrás aprobaciones almacenadas, marcas temporales e historial de versiones, no solo “borrador actual” y “publicado actual”.

Tres modelos de datos comunes que puedes usar

No hay una única mejor forma de manejar borradores y registros publicados. El modelo adecuado depende de cuán estrictas sean las aprobaciones, la frecuencia de cambios y la importancia de auditoría y reversión.

Patrón A: un único registro con un campo Status (más PublishedAt). Mantienes una fila por ítem y añades campos como Status (Draft, InReview, Published) y PublishedAt. Cuando un editor cambia el ítem, está editando la misma fila, y la app decide qué mostrar según el estado y las marcas temporales. Es lo más sencillo de construir, pero puede volverse confuso si necesitas ver exactamente qué se publicó la semana pasada.

Patrón B: tablas separadas para borradores y publicados (o colecciones). Guardas los borradores en un lugar y los ítems publicados en otro. Publicar copia el borrador aprobado a la tabla publicada. La lectura es muy rápida y clara porque la app en vivo solo consulta la tabla publicada, pero ahora tienes dos esquemas que mantener sincronizados.

Patrón C: versiones inmutables con un puntero a la versión publicada actual. Cada edición crea una nueva fila de versión (Versión 1, 2, 3) y el ítem principal apunta a la versión publicada actual. Publicar es solo mover el puntero. Esto es ideal para historial y reversión, pero añade un join más a la mayoría de las lecturas.

Una guía rápida para elegir:

  • Elige Patrón A cuando necesites velocidad y simplicidad, y la reversión sea rara.
  • Elige Patrón B cuando las lecturas en vivo deban ser simples y seguras, y puedas tolerar duplicación.
  • Elige Patrón C cuando necesites fuerte auditabilidad, reversión fácil o aprobaciones múltiples.
  • Si el rendimiento es crítico, prueba las rutas de lectura temprano (especialmente para el Patrón C).

En herramientas como AppMaster, estos modelos se traducen bien a un esquema PostgreSQL en el Data Designer, así que puedes empezar simple y evolucionar hacia un versionado más fuerte sin reescribir toda la app.

Cómo modelar versiones: IDs, historial y rastro de auditoría

Sal en vivo en tus términos
Publica tu app preparada para aprobaciones en la nube o exporta el código fuente cuando lo necesites.
Desplegar ahora

Un buen modelo de versionado separa “qué es la entidad” de “qué revisión está en vivo”. Esto es el núcleo de borradores vs publicados: quieres una identidad estable para el registro y, además, un rastro de cambios que pueda revisarse y aprobarse.

Empieza eligiendo una clave única que siga siendo significativa fuera de la base de datos. Para un artículo de ayuda puede ser un slug, para una regla de precios puede ser un código y para datos sincronizados puede ser un ID externo. Mantén esa clave estable a través de todas las versiones para que otras partes de la app siempre sepan con qué registro tratan.

IDs: ID de registro estable + ID de versión

Un patrón común es usar dos tablas (o entidades): una para el “registro” (ID estable, clave única) y otra para las “versiones del registro” (muchas filas por registro). El registro apunta a la versión publicada actual (y opcionalmente a la última versión en borrador). Esto facilita mostrar ambas cosas: “lo que está en vivo” y “lo que se está preparando”.

Para cada versión, añade campos que permitan revisar sin suposiciones:

  • número de versión (o una revisión incremental)
  • creado por, creado en
  • aprobado por, aprobado en
  • estado (borrador, en revisión, aprobado, rechazado, publicado)
  • resumen del cambio (texto corto)

Historial y rastro de auditoría: aprobaciones, comentarios y evidencias

Las aprobaciones deben ser datos de primera clase, no solo un cambio de estado. Guarda quién aprobó qué y por qué, con comentarios opcionales. Si necesitas aprobaciones en varios pasos, guarda un log de aprobaciones vinculado a la versión (una fila por decisión).

La localización y los adjuntos requieren cuidado extra. Evita almacenar imágenes o archivos “directamente en el registro” sin versionado. En su lugar, adjúntalos a la versión para que los borradores puedan usar nuevos recursos sin sobrescribir lo que está en vivo. Para traducciones, o bien almacena campos localizados por versión (una versión contiene todas las locales) o guarda filas de versión por idioma, pero elige uno y sé consistente.

En AppMaster puedes modelar esto con claridad en el Data Designer (PostgreSQL) y hacer que los cambios de estado se apliquen desde un Business Process para que solo las versiones aprobadas puedan publicarse.

Paso a paso: un flujo de aprobación simple que funciona

La mayoría de los flujos de aprobación se reducen a una idea: tu app mantiene dos realidades a la vez. Los registros en borrador frente a los publicados permiten que la gente haga cambios de forma segura, mientras que clientes y compañeros siguen viendo la última versión aprobada.

Aquí tienes un flujo de cinco pasos sencillo que puedes aplicar a páginas, plantillas, tablas de precios, feature flags o cualquier otro dato del tipo “no romper producción”.

  1. Crear un borrador. Empieza desde cero o clona la última versión publicada. Clonar suele ser más seguro porque conserva campos obligatorios y valores por defecto.
  2. Editar y validar. Permite que los editores actualicen el borrador y luego ejecuta comprobaciones antes de avanzar: campos obligatorios, límites de longitud, formato y una vista previa que se parezca a la pantalla real.
  3. Enviar para aprobación y bloquear. Cuando se envía el borrador, congela las partes que no deben cambiar (a menudo el contenido en sí) y permite solo correcciones menores (como notas de ortografía). Guarda quién lo envió y cuándo.
  4. Aprobar y publicar. Un aprobador cambia el “puntero publicado” a la nueva versión o copia los campos del borrador al registro publicado. También registra quién lo aprobó, la hora exacta y notas de publicación.
  5. Revertir. Si algo sale mal, vuelve a apuntar al puntero publicado a una versión anterior o restaura la instantánea publicada previa. Mantén la reversión rápida y con permisos.

Un detalle pequeño que evita muchos problemas: decide qué campos son editables en cada etapa (Borrador, En revisión, Aprobado). Por ejemplo, puedes permitir una URL de prueba en modo Borrador, pero bloquearla tras la sumisión.

Si lo construyes en AppMaster, los estados y bloqueos pueden vivir en tu modelo de datos y las reglas de aprobación en un Business Process visual para que la misma lógica se ejecute siempre, sin importar quién pulse el botón.

Comportamiento de publicación: programación, conflictos y reversión

Convierte el patrón en una app
Convierte tu checklist de aprobación en pantallas y procesos funcionales sin codificar cada vez.
Probar el generador

La publicación es donde un buen flujo de aprobación puede fallar. El objetivo es simple: los cambios aprobados salgan en vivo cuando esperas, sin sorpresas para editores o usuarios.

Publicar ahora vs programar

“Publicar ahora” es sencillo, pero programar necesita reglas claras. Guarda la hora de publicación en un estándar único (normalmente UTC) y siempre muestra a los editores la hora local que esperan. Añade un pequeño margen (por ejemplo, un minuto) entre “aprobado” y “en vivo” para que los jobs en segundo plano tengan tiempo de actualizar caches e índices de búsqueda.

Si tienes varias regiones o equipos, decide qué significa “medianoche”. Un cambio programado a las 00:00 en Nueva York es distinto a las 00:00 en Londres. Una zona horaria clara en la UI evita la mayoría de errores.

Conflictos: evitar que la gente se sobrescriba mutuamente

Los conflictos ocurren cuando dos personas editan el mismo borrador o aprueban dos borradores diferentes para el mismo registro. Las soluciones comunes son bloqueo u comprobaciones optimistas.

  • Bloqueo: cuando alguien abre un borrador, márcalo como “en edición” y muestra quién lo tiene.
  • Comprobaciones optimistas: guarda un número de versión y bloquea el guardado si la versión cambió desde que el editor la cargó.
  • Reglas de fusión: permite fusionar solo campos seguros (como texto) y fuerza elección manual para campos de riesgo (como precios o permisos).

Esto es especialmente importante con borradores vs publicados, donde la versión publicada es la fuente de verdad para los usuarios.

Qué experimentan los usuarios en vuelo

Incluso con datos perfectos, los usuarios pueden no ver los cambios al instante. Las páginas pueden estar en cache, las sesiones pueden durar horas y procesos de larga ejecución (como cobros, onboarding o exportaciones masivas) pueden depender de la configuración anterior.

Un enfoque práctico es “leer mediante el puntero publicado”: los usuarios siempre leen la versión marcada como actual, y publicar solo cambia ese puntero. Si necesitas un despliegue seguro, retrasa la actualización de caches hasta después de que el puntero cambie y mantiene las sesiones estables evitando cambiar campos requeridos a mitad de flujo.

Reversión y mantener historial sin desorden

Revertir debería ser aburrido: cambia el puntero publicado de vuelta a la versión anterior. Mantén versiones antiguas para auditoría y comparación, pero escóndelas de las pantallas diarias. Muestra solo el borrador actual, la versión publicada actual y un panel de “historial” con las últimas versiones y quién las aprobó.

En AppMaster, esto se refleja bien con registros de “versión” separados y una referencia única a la “versión publicada actual”, de modo que tu UI siga siendo simple mientras tus datos permanecen trazables.

Escenario de ejemplo: actualizar un portal de clientes de forma segura

Da a los equipos un editor seguro
Crea una interfaz interna donde los editores preparen cambios y los aprobadores publiquen con confianza.
Crear panel de administración

Un caso común es un portal de clientes que muestra una lista de verificación de onboarding para nuevos clientes. La checklist incluye pasos como aceptar términos, subir documentos y configurar la facturación. Legal quiere aprobar cualquier cambio de redacción antes de que esté en vivo.

Tu editor crea una nueva versión en borrador de la checklist. La versión publicada permanece en su lugar, así que los clientes siguen viendo el texto aprobado mientras se prepara el nuevo borrador. Este es el beneficio central de los borradores vs publicados: puedes trabajar en progreso sin cambiar lo que dependen los usuarios reales.

En el borrador, el editor actualiza un paso de "Subir ID" a "Subir documento de identidad con foto emitido por el gobierno" y añade una nota sobre retención de datos. También cambia el orden de los pasos para que "Aceptar términos" vaya primero.

Legal revisa el borrador y deja comentarios en elementos concretos. Por ejemplo: "Reemplazar 'ID con foto' por 'identificación válida con fotografía'" y "Eliminar la promesa de que los documentos se borran en 30 días; nuestra política es 90 días." Durante la revisión, alguien también detecta un error importante: una regla en el borrador marca la checklist como completa cuando solo se suben 2 de 3 documentos. Eso habría permitido que clientes avanzaran sin las comprobaciones de cumplimiento.

Tras aplicar las correcciones, el borrador se aprueba y se publica. Publicar intercambia lo que lee el portal: la nueva versión se convierte en el registro publicado y la versión publicada anterior pasa a ser la versión previa (guardada para revertir si hace falta).

Lo que ven los clientes sigue siendo predecible:

  • Antes de publicar: el portal muestra la checklist antigua y las reglas de completado anteriores.
  • Después de publicar: el portal muestra la nueva redacción, el nuevo orden y el requisito de completado corregido.

Si algo sigue fuera de lugar después del lanzamiento, puedes volver rápidamente publicando la versión aprobada previa, sin reconstruir todo el portal.

Errores comunes y trampas en las que caen los equipos

La forma más rápida de romper la confianza en un flujo de aprobación es permitir que la gente edite el registro en vivo “solo esta vez”. Empieza como un atajo, luego alguien olvida revertir un cambio de prueba y los clientes ven texto a medias o una regla rota. Si implementas borradores vs publicados, haz que sea imposible editar la versión publicada excepto mediante una acción de publicación.

Otro problema común es duplicar registros sin una clave raíz estable. Si duplicas un registro para crear un borrador pero no conservas un identificador “root” consistente (como ContentKey, PolicyKey, PriceListKey), se multiplican los duplicados. Los resultados de búsqueda muestran varios ítems “iguales”, las integraciones no saben cuál es la actual y los informes se vuelven poco fiables.

Las aprobaciones sin rastro de auditoría también son frágiles. Cuando algo sale mal, “quién cambió qué” se convierte en una suposición. Incluso un registro simple de enviado por, aprobado por, marcas temporales y una nota corta evita largas discusiones y ayuda en la formación.

A menudo se omiten las validaciones hasta después de publicar. Eso es arriesgado para plantillas, reglas de negocio o lógica de precios donde un pequeño error puede tener gran impacto. Valida los borradores antes de que puedan enviarse y valida de nuevo justo antes de publicar (porque los datos relacionados pueden haber cambiado).

Finalmente, los equipos olvidan los datos “satélite” que deben moverse con el registro principal: traducciones, adjuntos, reglas de permisos, enlaces de categoría y feature flags. El borrador se ve correcto en una pantalla, pero la experiencia en vivo queda incompleta.

Lista rápida para evitar trampas:

  • Bloquea las ediciones directas a registros publicados (usa roles y reglas de API)
  • Mantén una clave raíz estable entre versiones para evitar duplicados
  • Almacena un log de auditoría para acciones de envío/aprobación/publicación
  • Ejecuta validaciones en el borrador y otra vez al publicar
  • Publica objetos relacionados juntos (traducciones, archivos, permisos)

Si construyes en una plataforma no-code como AppMaster, estas protecciones se mapean bien a campos de estado, tablas de versión y a un Business Process que obliga a “publicar solo vía flujo de trabajo”.

Lista de comprobación rápida antes de lanzar un flujo de aprobación

Protege tu portal de clientes
Actualiza checklists y reglas visibles para el cliente de forma segura mientras los usuarios ven la última versión aprobada.
Construir portal

Antes de desplegar una configuración de borrador vs publicados, repasa las cosas que más fallan. Estas comprobaciones se centran menos en la apariencia y más en mantener los datos seguros cuando la gente real empieza a usar el flujo.

Cinco comprobaciones que te ahorran problemas

  • Haz que “¿qué está en vivo ahora?” tenga una respuesta en un solo paso. En la práctica, eso significa que cada consulta consumidora puede apuntar a la versión publicada actual sin ordenar, adivinar ni filtros complejos.
  • Dale a los revisores una vista previa verdadera. Un revisor debe poder ver el borrador exactamente como lo verían los usuarios, pero sin que sea accesible desde la app pública o el portal del cliente.
  • Planea una reversión que sea un interruptor, no una reparación. Si se cuela un mal cambio, debes poder volver a la versión publicada previa cambiando un puntero o estado, no editando campos a mano.
  • Captura evidencia de aprobación. Registra quién aprobó, cuándo lo hizo y qué aprobó (número de versión o ID de versión). Esto importa para auditorías y para responsabilidad básica.
  • Restringe quién puede publicar. Editar un borrador no es lo mismo que publicarlo. Asegúrate de que solo los roles adecuados puedan publicar y que tanto tu API como la UI lo hagan cumplir.

Una prueba práctica: pide a un compañero que cree un borrador, solicite aprobación y luego intente publicarlo desde una cuenta que no debería tener permisos. Si funciona aunque sea una vez, hay una brecha.

Si lo construyes en AppMaster, trata la publicación como un paso separado en el Business Process con comprobaciones de roles y mantiene la selección de “versión publicada” en un solo lugar (un campo, una regla). Así tu web, apps móviles y backend estarán en sincronía cuando un cambio salga en vivo.

Próximos pasos: implementar el patrón en tu app con riesgo mínimo

Elige un lugar para empezar, no todo el sistema. Un buen primer candidato es algo que cambie con frecuencia pero sea fácil de probar, como plantillas de email, artículos del centro de ayuda o una tabla de reglas de precios. Aprenderás más con un flujo bien hecho que intentando forzar borradores vs publicados en todas las tablas a la vez.

Escribe quién puede hacer qué antes de construir. Manténlo simple y haz que la opción por defecto sea segura. Para la mayoría de equipos, tres roles son suficientes: editor (crea borradores), revisor (verifica contenido y reglas) y publicador (lo pone en vivo). Si una persona cumple varios roles está bien, pero la app debe registrar qué acción ocurrió y cuándo.

Agrega comprobaciones ligeras desde el inicio para no publicar sorpresas. Validaciones básicas (campos obligatorios, rangos de fechas, referencias rotas) previenen la mayoría de los lanzamientos malos. La vista previa es igual de importante: da a los revisores una forma de ver qué cambiará antes de aprobar, especialmente en páginas visibles al cliente.

Aquí tienes un plan de despliegue pequeño y de bajo riesgo:

  • Implementa el patrón para una entidad y una pantalla.
  • Añade permisos por roles para editar, aprobar y publicar.
  • Construye un paso de vista previa y una lista corta de validación.
  • Haz un piloto con un grupo pequeño de usuarios y datos reales.
  • Expande a la siguiente entidad solo después de corregir el primer lote de feedback.

Si quieres avanzar rápido sin codificar cada pantalla de admin, una plataforma no-code puede ayudar. Por ejemplo, AppMaster te permite modelar datos, construir una UI de administración y añadir lógica de aprobación con flujos visuales, luego generar apps listas para producción cuando estés listo para lanzar.

Finalmente, planifica tu primer lanzamiento como un simulacro. Elige un alcance estrecho, fija criterios de éxito (tiempo hasta aprobar, número de reversiones, errores detectados en revisión) y solo entonces escala el patrón a más contenido y configuración.

Fácil de empezar
Crea algo sorprendente

Experimente con AppMaster con plan gratuito.
Cuando esté listo, puede elegir la suscripción adecuada.

Empieza