# Esquema de la base de datos — Reformix B2C `schema.sql` es el **DDL consolidado** de toda la base de datos en su estado actual: 12 enums, 14 tablas, sus claves foráneas e índices. Sirve para que el equipo entienda, consulte y proponga cambios sobre el modelo de datos sin tener que leer las migraciones una a una. ## Tablas | Tabla | Para qué | | --- | --- | | `tenants` | Reformistas (multi-tenant; en el MVP solo "Reformas Ejemplo") | | `plans` | Planes de suscripción | | `users` / `sessions` | Auth del panel del reformista | | `leads` | Lead del cliente final + estado del funnel + resultado (presupuesto, render, transcripción) | | `lead_fotos` | Fotos que sube el cliente del espacio a reformar | | `lead_pipeline_eventos` | Traza de cada paso del pipeline (prellamada, llamada, render, presupuesto, WhatsApp) | | `lead_estado_history` | Historial de cambios de estado comercial del lead | | `catalog_items` | Catálogo de materiales del reformista (precio, calidad, unidad) — entrada del motor de presupuesto | | `pricing_config` | Config de precios del reformista (mano de obra, márgenes…) | | `precision_history` | Histórico de precisión de las estimaciones | | `galeria_fotos` | Galería de trabajos del reformista | | `testimonios` / `testimonio_fotos` | Reseñas con fotos | ## Importante: la fuente de la verdad es `src/db/schema.ts` **No edites `schema.sql` a mano.** El esquema real vive en [`src/db/schema.ts`](../src/db/schema.ts) (Drizzle ORM) y los cambios se aplican con migraciones en [`drizzle/`](../drizzle/). Este archivo es una **foto** generada a partir de ese schema. ### Para cambiar el modelo de datos 1. Edita `src/db/schema.ts`. 2. Genera la migración: `npx drizzle-kit generate` 3. Aplícala: `npx drizzle-kit migrate` 4. Regenera esta foto (ver abajo). ### Regenerar `schema.sql` ```bash cd mvp/b2c npm run db:export ``` ### Levantar una base de datos local desde cero con este SQL ```bash docker run --name reformix-pg -e POSTGRES_PASSWORD=reformix -e POSTGRES_DB=reformix -p 5432:5432 -d postgres:17 psql "postgresql://postgres:reformix@localhost:5432/reformix" -f db-schema/schema.sql ``` > El `export` no incluye datos semilla (tenant de ejemplo, catálogo, planes). Para eso usa > el seed del proyecto si existe, o inserta los registros base manualmente.