Integra el esquema "reformix-full" del equipo de forma ADITIVA, sin tocar los enums ni columnas existentes de la app (una sola DB, Drizzle es el dueño): - Enums nuevos: estado_wa, canal_contacto, canal_origen, resultado_contacto, rol_mensaje, job_tipo, job_estado, nivel_calificacion, visita_estado. - Tablas nuevas: conversacion_whatsapp, intentos_contacto, lead_calificacion (score 0-100 + nivel A/B/C/D), visitas, worker_jobs (cola async de los workers de fotos/render/presupuesto). Referencian nuestros leads/users/tenants. - Columnas nuevas en leads (nullable, las rellena el bot/Luisa): estado_wa, canal_origen, espacio, rango_m2, estilo, presupuesto_declarado, viable, fotos_solicitadas_at. - Migración 0010 + db-schema/schema.sql regenerado. El bot/n8n escribe estas tablas en la DB única y usa nuestros leads (creados solo desde el form web). Pendiente: alinear valores de lead_estado/pipeline_stage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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
(Drizzle ORM) y los cambios se aplican con migraciones en drizzle/.
Este archivo es una foto generada a partir de ese schema.
Para cambiar el modelo de datos
- Edita
src/db/schema.ts. - Genera la migración:
npx drizzle-kit generate - Aplícala:
npx drizzle-kit migrate - Regenera esta foto (ver abajo).
Regenerar schema.sql
cd mvp/b2c
npm run db:export
Levantar una base de datos local desde cero con este SQL
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
exportno incluye datos semilla (tenant de ejemplo, catálogo, planes). Para eso usa el seed del proyecto si existe, o inserta los registros base manualmente.