Esquema y migraciones
Dónde está el esquema de verdad
En supabase/migrations/. Y solo ahí.
backend/schema.sql no es el esquemaHay un archivo backend/schema.sql que parece el esquema y no lo es: es un volcado parcial y
viejo. Si lo tomas como referencia vas a hablar de tablas que ya no existen y a ignorar la mitad de
las que sí. La fuente de verdad son las migraciones.
Cambiar el esquema
Nunca se toca la base a mano desde el panel de Supabase. Siempre una migración:
supabase migration new descripcion_del_cambio
# editar el archivo generado en supabase/migrations/
supabase db push --include-all
Al hacer merge a dev, el pipeline aplica las migraciones al proyecto de test antes de desplegar.
Al promover a main, lo mismo contra producción. El detalle está en
Operaciones.
Escribe siempre la primera línea del archivo como un comentario -- que explique el cambio: es lo
que aparece en la columna de descripción de la tabla de abajo.
Reglas
Migraciones idempotentes. create table if not exists, drop policy if exists antes de
create policy. Una migración que falla al reaplicarse bloquea el despliegue.
Nada de datos de un tenant concreto en una migración. Las migraciones son estructura y
catálogos globales (CIE-10, por ejemplo). Los datos de un cliente van por los scripts de alta de
backend/scripts/.
RLS en toda tabla nueva. El frontend accede a Supabase con la clave anónima y depende enteramente de RLS para el aislamiento entre tenants. Una tabla sin políticas es una fuga de datos entre clientes, no un descuido menor.
El backend se salta RLS. Usa la clave de servicio, así que cualquier consulta suya tiene que filtrar por tenant explícitamente. Aquí no hay red de seguridad.
Historial
supabase/migrations/*.sql al construir el sitio. No se edita a mano: se actualiza con yarn gen en docs/.| Fecha | Migración | Tablas que toca |
|---|---|---|
2026-11-16 | data import platform ============================================================================= | import_external_idsimport_job_errorsimport_jobsimport_mappingsimport_tenant_settings |
2026-11-15 | health list records document ============================================================================= | — |
2026-11-14 | bot quick messages Mensajes rápidos por bot | bot_quick_messages |
2026-11-13 | appointment substatus Agenda: sub-estados de cita (etiqueta con color encima del estado base) | scheduling_appointments |
2026-11-13 | agenda resource tags and indexes Agenda: etiquetas en los recursos e índices para tenants grandes | scheduling_resource_tagscrm_tags |
2026-11-12 | kiosk via installer ============================================================================= | kiosk_deviceskiosk_pairing_requests |
2026-11-11 | pedido examenes sexo y fecha ============================================================================= | — |
2026-11-11 | preparar documento con obligatorios ============================================================================= | — |
2026-11-11 | emitir con campos requeridos ============================================================================= | — |
2026-11-09 | permiso marca borrador ============================================================================= | — |
2026-11-08 | platform error events Registro de errores de plataforma: la traza de lo que les falla a los usuarios | platform_error_events |
2026-11-07 | marca borrador admin tenant ============================================================================= | — |
2026-11-06 | modelos por nodo --------------------------------------------------------------------------- | — |
2026-11-05 | bot subflows Biblioteca de subflujos por tenant: trozos de flujo reutilizables entre bots | bot_subflow_versionsbot_subflows |
2026-11-04 | membrete roto al guardar ============================================================================= | — |
2026-11-03 | certificados sin membrete duplicado ============================================================================= | — |
2026-11-02 | membretes incompletos ============================================================================= | — |
2026-11-02 | bot approvals ============================================================================= | bot_approvalsbot_turns |
2026-11-01 | membretes todos los tenants ============================================================================= | — |
2026-10-31 | membretes consultorios reaplicar ============================================================================= | — |
2026-10-30 | health record close ============================================================================= | — |
2026-10-29 | doc assets limite ============================================================================= | — |
2026-10-29 | membretes consultorios ============================================================================= | — |
2026-10-28 | base templates completas ============================================================================= | — |
2026-10-27 | template columns and catalog ============================================================================= | — |
Mostrando 25 de 224 migraciones. El esquema completo son 105 tablas creadas a lo largo de todo el historial.
Copiar producción a test
Existe un módulo de sincronización que copia datos de producción al entorno de test, accesible solo para superadmin y visible en los dos entornos. Está documentado en la sección correspondiente de Operaciones.