Genera db-schema/schema.sql (DDL completo: 12 enums, 14 tablas, FKs e índices) a partir del schema Drizzle, para que el equipo pueda consultar y proponer cambios sobre el modelo de datos sin leer las migraciones una a una. - db-schema/schema.sql: foto del esquema actual (drizzle-kit export) - db-schema/README.md: qué es cada tabla, cómo cambiar el modelo y cómo regenerar/levantar la BD desde este SQL - package.json: script db:export para regenerar la foto Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
2.3 KiB
Markdown
54 lines
2.3 KiB
Markdown
# 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.
|