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>
2446 lines
60 KiB
JSON
2446 lines
60 KiB
JSON
{
|
|
"id": "0c432d14-a8db-4a0d-92bf-56153cc661e6",
|
|
"prevId": "9e6e7bd9-61c0-4fa2-826e-67a3d100f8d3",
|
|
"version": "7",
|
|
"dialect": "postgresql",
|
|
"tables": {
|
|
"public.catalog_items": {
|
|
"name": "catalog_items",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"tenant_id": {
|
|
"name": "tenant_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"categoria": {
|
|
"name": "categoria",
|
|
"type": "categoria_material",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"nombre": {
|
|
"name": "nombre",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"calidad": {
|
|
"name": "calidad",
|
|
"type": "calidad",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"precio_unit": {
|
|
"name": "precio_unit",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"unidad": {
|
|
"name": "unidad",
|
|
"type": "unidad_medida",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"descriptor_render": {
|
|
"name": "descriptor_render",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "''"
|
|
},
|
|
"es_default": {
|
|
"name": "es_default",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"sku": {
|
|
"name": "sku",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
}
|
|
},
|
|
"indexes": {
|
|
"catalog_tenant_idx": {
|
|
"name": "catalog_tenant_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "tenant_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
},
|
|
"catalog_tenant_sku_idx": {
|
|
"name": "catalog_tenant_sku_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "tenant_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
},
|
|
{
|
|
"expression": "sku",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"catalog_items_tenant_id_tenants_id_fk": {
|
|
"name": "catalog_items_tenant_id_tenants_id_fk",
|
|
"tableFrom": "catalog_items",
|
|
"tableTo": "tenants",
|
|
"columnsFrom": [
|
|
"tenant_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.conversacion_whatsapp": {
|
|
"name": "conversacion_whatsapp",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"rol": {
|
|
"name": "rol",
|
|
"type": "rol_mensaje",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"mensaje": {
|
|
"name": "mensaje",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"media_type": {
|
|
"name": "media_type",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"media_url": {
|
|
"name": "media_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"transcripcion_audio": {
|
|
"name": "transcripcion_audio",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {
|
|
"idx_conversacion_whatsapp_lead_id": {
|
|
"name": "idx_conversacion_whatsapp_lead_id",
|
|
"columns": [
|
|
{
|
|
"expression": "lead_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
},
|
|
"idx_conversacion_whatsapp_created_at": {
|
|
"name": "idx_conversacion_whatsapp_created_at",
|
|
"columns": [
|
|
{
|
|
"expression": "created_at",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"conversacion_whatsapp_lead_id_leads_id_fk": {
|
|
"name": "conversacion_whatsapp_lead_id_leads_id_fk",
|
|
"tableFrom": "conversacion_whatsapp",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.galeria_fotos": {
|
|
"name": "galeria_fotos",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"tenant_id": {
|
|
"name": "tenant_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"url": {
|
|
"name": "url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"titulo": {
|
|
"name": "titulo",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"orden": {
|
|
"name": "orden",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": 0
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {
|
|
"galeria_tenant_idx": {
|
|
"name": "galeria_tenant_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "tenant_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"galeria_fotos_tenant_id_tenants_id_fk": {
|
|
"name": "galeria_fotos_tenant_id_tenants_id_fk",
|
|
"tableFrom": "galeria_fotos",
|
|
"tableTo": "tenants",
|
|
"columnsFrom": [
|
|
"tenant_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.intentos_contacto": {
|
|
"name": "intentos_contacto",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"canal": {
|
|
"name": "canal",
|
|
"type": "canal_contacto",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"resultado": {
|
|
"name": "resultado",
|
|
"type": "resultado_contacto",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"completado": {
|
|
"name": "completado",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"numero_intento": {
|
|
"name": "numero_intento",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"duracion_seg": {
|
|
"name": "duracion_seg",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"intentado_at": {
|
|
"name": "intentado_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
},
|
|
"notas": {
|
|
"name": "notas",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"metadata": {
|
|
"name": "metadata",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
}
|
|
},
|
|
"indexes": {
|
|
"idx_intentos_contacto_lead_id": {
|
|
"name": "idx_intentos_contacto_lead_id",
|
|
"columns": [
|
|
{
|
|
"expression": "lead_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"intentos_contacto_lead_id_leads_id_fk": {
|
|
"name": "intentos_contacto_lead_id_leads_id_fk",
|
|
"tableFrom": "intentos_contacto",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.lead_calificacion": {
|
|
"name": "lead_calificacion",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"score": {
|
|
"name": "score",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"nivel": {
|
|
"name": "nivel",
|
|
"type": "nivel_calificacion",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"criterios": {
|
|
"name": "criterios",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"notas_agente": {
|
|
"name": "notas_agente",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"calificado_por": {
|
|
"name": "calificado_por",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"calificado_at": {
|
|
"name": "calificado_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {
|
|
"idx_lead_calificacion_lead_id": {
|
|
"name": "idx_lead_calificacion_lead_id",
|
|
"columns": [
|
|
{
|
|
"expression": "lead_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"lead_calificacion_lead_id_leads_id_fk": {
|
|
"name": "lead_calificacion_lead_id_leads_id_fk",
|
|
"tableFrom": "lead_calificacion",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
},
|
|
"lead_calificacion_calificado_por_users_id_fk": {
|
|
"name": "lead_calificacion_calificado_por_users_id_fk",
|
|
"tableFrom": "lead_calificacion",
|
|
"tableTo": "users",
|
|
"columnsFrom": [
|
|
"calificado_por"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "set null",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {
|
|
"lead_calificacion_lead_id_unique": {
|
|
"name": "lead_calificacion_lead_id_unique",
|
|
"nullsNotDistinct": false,
|
|
"columns": [
|
|
"lead_id"
|
|
]
|
|
}
|
|
},
|
|
"policies": {},
|
|
"checkConstraints": {
|
|
"lead_calificacion_score_check": {
|
|
"name": "lead_calificacion_score_check",
|
|
"value": "\"lead_calificacion\".\"score\" >= 0 AND \"lead_calificacion\".\"score\" <= 100"
|
|
}
|
|
},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.lead_estado_history": {
|
|
"name": "lead_estado_history",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"estado": {
|
|
"name": "estado",
|
|
"type": "lead_estado",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"changed_at": {
|
|
"name": "changed_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
},
|
|
"changed_by": {
|
|
"name": "changed_by",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"lead_estado_history_lead_id_leads_id_fk": {
|
|
"name": "lead_estado_history_lead_id_leads_id_fk",
|
|
"tableFrom": "lead_estado_history",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.lead_fotos": {
|
|
"name": "lead_fotos",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"url": {
|
|
"name": "url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"momento": {
|
|
"name": "momento",
|
|
"type": "foto_momento",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'antes'"
|
|
},
|
|
"zona": {
|
|
"name": "zona",
|
|
"type": "tipo_reforma",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"orden": {
|
|
"name": "orden",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": 0
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"lead_fotos_lead_id_leads_id_fk": {
|
|
"name": "lead_fotos_lead_id_leads_id_fk",
|
|
"tableFrom": "lead_fotos",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.lead_notas": {
|
|
"name": "lead_notas",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"zona": {
|
|
"name": "zona",
|
|
"type": "tipo_reforma",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"texto": {
|
|
"name": "texto",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"origen": {
|
|
"name": "origen",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'ep'"
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"lead_notas_lead_id_leads_id_fk": {
|
|
"name": "lead_notas_lead_id_leads_id_fk",
|
|
"tableFrom": "lead_notas",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.lead_pipeline_eventos": {
|
|
"name": "lead_pipeline_eventos",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"stage": {
|
|
"name": "stage",
|
|
"type": "pipeline_stage",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"occurred_at": {
|
|
"name": "occurred_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
},
|
|
"metadata": {
|
|
"name": "metadata",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"lead_pipeline_eventos_lead_id_leads_id_fk": {
|
|
"name": "lead_pipeline_eventos_lead_id_leads_id_fk",
|
|
"tableFrom": "lead_pipeline_eventos",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.leads": {
|
|
"name": "leads",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"tenant_id": {
|
|
"name": "tenant_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
},
|
|
"updated_at": {
|
|
"name": "updated_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
},
|
|
"nombre": {
|
|
"name": "nombre",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"telefono": {
|
|
"name": "telefono",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"email": {
|
|
"name": "email",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"provincia": {
|
|
"name": "provincia",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"tipo_reforma": {
|
|
"name": "tipo_reforma",
|
|
"type": "tipo_reforma",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"consent_privacidad": {
|
|
"name": "consent_privacidad",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"consent_contratacion": {
|
|
"name": "consent_contratacion",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"pipeline_stage": {
|
|
"name": "pipeline_stage",
|
|
"type": "pipeline_stage",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'form_completado'"
|
|
},
|
|
"estado": {
|
|
"name": "estado",
|
|
"type": "lead_estado",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'nuevo'"
|
|
},
|
|
"presupuesto_estimado": {
|
|
"name": "presupuesto_estimado",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"transcripcion": {
|
|
"name": "transcripcion",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"entidades": {
|
|
"name": "entidades",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"render_url": {
|
|
"name": "render_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"pdf_url": {
|
|
"name": "pdf_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"audio_url": {
|
|
"name": "audio_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"notas": {
|
|
"name": "notas",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"testimonio_solicitado_at": {
|
|
"name": "testimonio_solicitado_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"m2_suelo": {
|
|
"name": "m2_suelo",
|
|
"type": "double precision",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"altura_techo": {
|
|
"name": "altura_techo",
|
|
"type": "double precision",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"calidad_global": {
|
|
"name": "calidad_global",
|
|
"type": "calidad",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"estructural": {
|
|
"name": "estructural",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"anterior_a_2000": {
|
|
"name": "anterior_a_2000",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"cambio_distribucion": {
|
|
"name": "cambio_distribucion",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"material_selections": {
|
|
"name": "material_selections",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'{}'::jsonb"
|
|
},
|
|
"desglose_snapshot": {
|
|
"name": "desglose_snapshot",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"urgencia": {
|
|
"name": "urgencia",
|
|
"type": "urgencia",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"presupuesto_target": {
|
|
"name": "presupuesto_target",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"taste_text": {
|
|
"name": "taste_text",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"preferences_snapshot": {
|
|
"name": "preferences_snapshot",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"estado_wa": {
|
|
"name": "estado_wa",
|
|
"type": "estado_wa",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"canal_origen": {
|
|
"name": "canal_origen",
|
|
"type": "canal_origen",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"espacio": {
|
|
"name": "espacio",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"rango_m2": {
|
|
"name": "rango_m2",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"estilo": {
|
|
"name": "estilo",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"presupuesto_declarado": {
|
|
"name": "presupuesto_declarado",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"viable": {
|
|
"name": "viable",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"fotos_solicitadas_at": {
|
|
"name": "fotos_solicitadas_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
}
|
|
},
|
|
"indexes": {
|
|
"leads_tenant_created_idx": {
|
|
"name": "leads_tenant_created_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "tenant_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
},
|
|
{
|
|
"expression": "created_at",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
},
|
|
"leads_estado_idx": {
|
|
"name": "leads_estado_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "estado",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"leads_tenant_id_tenants_id_fk": {
|
|
"name": "leads_tenant_id_tenants_id_fk",
|
|
"tableFrom": "leads",
|
|
"tableTo": "tenants",
|
|
"columnsFrom": [
|
|
"tenant_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.plans": {
|
|
"name": "plans",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"slug": {
|
|
"name": "slug",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"nombre": {
|
|
"name": "nombre",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"precio_mensual": {
|
|
"name": "precio_mensual",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"leads_incluidos": {
|
|
"name": "leads_incluidos",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"features": {
|
|
"name": "features",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'[]'::jsonb"
|
|
},
|
|
"activo": {
|
|
"name": "activo",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": true
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {
|
|
"plans_slug_unique": {
|
|
"name": "plans_slug_unique",
|
|
"nullsNotDistinct": false,
|
|
"columns": [
|
|
"slug"
|
|
]
|
|
}
|
|
},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.precision_history": {
|
|
"name": "precision_history",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"estimated": {
|
|
"name": "estimated",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"final": {
|
|
"name": "final",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"delta_pct": {
|
|
"name": "delta_pct",
|
|
"type": "numeric(6, 2)",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"precision_history_lead_id_leads_id_fk": {
|
|
"name": "precision_history_lead_id_leads_id_fk",
|
|
"tableFrom": "precision_history",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.pricing_config": {
|
|
"name": "pricing_config",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"tenant_id": {
|
|
"name": "tenant_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"altura_techo_default": {
|
|
"name": "altura_techo_default",
|
|
"type": "double precision",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": 2.5
|
|
},
|
|
"factor_zona": {
|
|
"name": "factor_zona",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'{}'::jsonb"
|
|
},
|
|
"mano_obra": {
|
|
"name": "mano_obra",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'{}'::jsonb"
|
|
},
|
|
"extras": {
|
|
"name": "extras",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'{\"tuberias\":0,\"boletin\":0,\"distribucion\":0}'::jsonb"
|
|
},
|
|
"updated_at": {
|
|
"name": "updated_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"pricing_config_tenant_id_tenants_id_fk": {
|
|
"name": "pricing_config_tenant_id_tenants_id_fk",
|
|
"tableFrom": "pricing_config",
|
|
"tableTo": "tenants",
|
|
"columnsFrom": [
|
|
"tenant_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {
|
|
"pricing_config_tenant_id_unique": {
|
|
"name": "pricing_config_tenant_id_unique",
|
|
"nullsNotDistinct": false,
|
|
"columns": [
|
|
"tenant_id"
|
|
]
|
|
}
|
|
},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.sessions": {
|
|
"name": "sessions",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"user_id": {
|
|
"name": "user_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"token_hash": {
|
|
"name": "token_hash",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"expires_at": {
|
|
"name": "expires_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {
|
|
"sessions_user_idx": {
|
|
"name": "sessions_user_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "user_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"sessions_user_id_users_id_fk": {
|
|
"name": "sessions_user_id_users_id_fk",
|
|
"tableFrom": "sessions",
|
|
"tableTo": "users",
|
|
"columnsFrom": [
|
|
"user_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {
|
|
"sessions_token_hash_unique": {
|
|
"name": "sessions_token_hash_unique",
|
|
"nullsNotDistinct": false,
|
|
"columns": [
|
|
"token_hash"
|
|
]
|
|
}
|
|
},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.tenants": {
|
|
"name": "tenants",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"slug": {
|
|
"name": "slug",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"nombre_empresa": {
|
|
"name": "nombre_empresa",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"logo_url": {
|
|
"name": "logo_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"provincia": {
|
|
"name": "provincia",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"whatsapp_business": {
|
|
"name": "whatsapp_business",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"seo_title": {
|
|
"name": "seo_title",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"seo_description": {
|
|
"name": "seo_description",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"about_enabled": {
|
|
"name": "about_enabled",
|
|
"type": "boolean",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": false
|
|
},
|
|
"about_foto_url": {
|
|
"name": "about_foto_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"about_texto": {
|
|
"name": "about_texto",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"anios_experiencia": {
|
|
"name": "anios_experiencia",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"theme_preset": {
|
|
"name": "theme_preset",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'pizarra'"
|
|
},
|
|
"theme_color": {
|
|
"name": "theme_color",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"cif": {
|
|
"name": "cif",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"direccion": {
|
|
"name": "direccion",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"telefono": {
|
|
"name": "telefono",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"email": {
|
|
"name": "email",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"web": {
|
|
"name": "web",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"plan_id": {
|
|
"name": "plan_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"subscription_status": {
|
|
"name": "subscription_status",
|
|
"type": "subscription_status",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'trial'"
|
|
},
|
|
"envio_presupuesto": {
|
|
"name": "envio_presupuesto",
|
|
"type": "envio_presupuesto_mode",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'automatico'"
|
|
},
|
|
"trial_ends_at": {
|
|
"name": "trial_ends_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"stripe_customer_id": {
|
|
"name": "stripe_customer_id",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"tenants_plan_id_plans_id_fk": {
|
|
"name": "tenants_plan_id_plans_id_fk",
|
|
"tableFrom": "tenants",
|
|
"tableTo": "plans",
|
|
"columnsFrom": [
|
|
"plan_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "no action",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {
|
|
"tenants_slug_unique": {
|
|
"name": "tenants_slug_unique",
|
|
"nullsNotDistinct": false,
|
|
"columns": [
|
|
"slug"
|
|
]
|
|
}
|
|
},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.testimonio_fotos": {
|
|
"name": "testimonio_fotos",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"testimonio_id": {
|
|
"name": "testimonio_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"url": {
|
|
"name": "url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"orden": {
|
|
"name": "orden",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": 0
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {},
|
|
"foreignKeys": {
|
|
"testimonio_fotos_testimonio_id_testimonios_id_fk": {
|
|
"name": "testimonio_fotos_testimonio_id_testimonios_id_fk",
|
|
"tableFrom": "testimonio_fotos",
|
|
"tableTo": "testimonios",
|
|
"columnsFrom": [
|
|
"testimonio_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.testimonios": {
|
|
"name": "testimonios",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"tenant_id": {
|
|
"name": "tenant_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"nombre": {
|
|
"name": "nombre",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"contexto": {
|
|
"name": "contexto",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"rating": {
|
|
"name": "rating",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"texto": {
|
|
"name": "texto",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"estado": {
|
|
"name": "estado",
|
|
"type": "testimonio_estado",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'pendiente'"
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {
|
|
"testimonios_tenant_estado_idx": {
|
|
"name": "testimonios_tenant_estado_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "tenant_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
},
|
|
{
|
|
"expression": "estado",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
},
|
|
"testimonios_lead_idx": {
|
|
"name": "testimonios_lead_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "lead_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"testimonios_tenant_id_tenants_id_fk": {
|
|
"name": "testimonios_tenant_id_tenants_id_fk",
|
|
"tableFrom": "testimonios",
|
|
"tableTo": "tenants",
|
|
"columnsFrom": [
|
|
"tenant_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
},
|
|
"testimonios_lead_id_leads_id_fk": {
|
|
"name": "testimonios_lead_id_leads_id_fk",
|
|
"tableFrom": "testimonios",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "set null",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.users": {
|
|
"name": "users",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"email": {
|
|
"name": "email",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"password_hash": {
|
|
"name": "password_hash",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"nombre": {
|
|
"name": "nombre",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"role": {
|
|
"name": "role",
|
|
"type": "user_role",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'reformista'"
|
|
},
|
|
"tenant_id": {
|
|
"name": "tenant_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"status": {
|
|
"name": "status",
|
|
"type": "user_status",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'activo'"
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
},
|
|
"updated_at": {
|
|
"name": "updated_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {
|
|
"users_tenant_idx": {
|
|
"name": "users_tenant_idx",
|
|
"columns": [
|
|
{
|
|
"expression": "tenant_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"users_tenant_id_tenants_id_fk": {
|
|
"name": "users_tenant_id_tenants_id_fk",
|
|
"tableFrom": "users",
|
|
"tableTo": "tenants",
|
|
"columnsFrom": [
|
|
"tenant_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {
|
|
"users_email_unique": {
|
|
"name": "users_email_unique",
|
|
"nullsNotDistinct": false,
|
|
"columns": [
|
|
"email"
|
|
]
|
|
}
|
|
},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.visitas": {
|
|
"name": "visitas",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"tenant_id": {
|
|
"name": "tenant_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"fecha_propuesta": {
|
|
"name": "fecha_propuesta",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"fecha_confirmada": {
|
|
"name": "fecha_confirmada",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"estado": {
|
|
"name": "estado",
|
|
"type": "visita_estado",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'propuesta'"
|
|
},
|
|
"direccion": {
|
|
"name": "direccion",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"notas": {
|
|
"name": "notas",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
}
|
|
},
|
|
"indexes": {
|
|
"idx_visitas_lead_id": {
|
|
"name": "idx_visitas_lead_id",
|
|
"columns": [
|
|
{
|
|
"expression": "lead_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
},
|
|
"idx_visitas_tenant_id": {
|
|
"name": "idx_visitas_tenant_id",
|
|
"columns": [
|
|
{
|
|
"expression": "tenant_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"visitas_lead_id_leads_id_fk": {
|
|
"name": "visitas_lead_id_leads_id_fk",
|
|
"tableFrom": "visitas",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
},
|
|
"visitas_tenant_id_tenants_id_fk": {
|
|
"name": "visitas_tenant_id_tenants_id_fk",
|
|
"tableFrom": "visitas",
|
|
"tableTo": "tenants",
|
|
"columnsFrom": [
|
|
"tenant_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
},
|
|
"public.worker_jobs": {
|
|
"name": "worker_jobs",
|
|
"schema": "",
|
|
"columns": {
|
|
"id": {
|
|
"name": "id",
|
|
"type": "uuid",
|
|
"primaryKey": true,
|
|
"notNull": true,
|
|
"default": "gen_random_uuid()"
|
|
},
|
|
"lead_id": {
|
|
"name": "lead_id",
|
|
"type": "uuid",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"tipo": {
|
|
"name": "tipo",
|
|
"type": "job_tipo",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"estado_job": {
|
|
"name": "estado_job",
|
|
"type": "job_estado",
|
|
"typeSchema": "public",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "'pendiente'"
|
|
},
|
|
"payload": {
|
|
"name": "payload",
|
|
"type": "jsonb",
|
|
"primaryKey": false,
|
|
"notNull": true
|
|
},
|
|
"webhook_url": {
|
|
"name": "webhook_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"resultado_url": {
|
|
"name": "resultado_url",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"intentos": {
|
|
"name": "intentos",
|
|
"type": "integer",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": 0
|
|
},
|
|
"error_msg": {
|
|
"name": "error_msg",
|
|
"type": "text",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
},
|
|
"created_at": {
|
|
"name": "created_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": true,
|
|
"default": "now()"
|
|
},
|
|
"completed_at": {
|
|
"name": "completed_at",
|
|
"type": "timestamp with time zone",
|
|
"primaryKey": false,
|
|
"notNull": false
|
|
}
|
|
},
|
|
"indexes": {
|
|
"idx_worker_jobs_lead_id": {
|
|
"name": "idx_worker_jobs_lead_id",
|
|
"columns": [
|
|
{
|
|
"expression": "lead_id",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
},
|
|
"idx_worker_jobs_estado": {
|
|
"name": "idx_worker_jobs_estado",
|
|
"columns": [
|
|
{
|
|
"expression": "estado_job",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
},
|
|
"idx_worker_jobs_tipo": {
|
|
"name": "idx_worker_jobs_tipo",
|
|
"columns": [
|
|
{
|
|
"expression": "tipo",
|
|
"isExpression": false,
|
|
"asc": true,
|
|
"nulls": "last"
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"concurrently": false,
|
|
"method": "btree",
|
|
"with": {}
|
|
}
|
|
},
|
|
"foreignKeys": {
|
|
"worker_jobs_lead_id_leads_id_fk": {
|
|
"name": "worker_jobs_lead_id_leads_id_fk",
|
|
"tableFrom": "worker_jobs",
|
|
"tableTo": "leads",
|
|
"columnsFrom": [
|
|
"lead_id"
|
|
],
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onDelete": "cascade",
|
|
"onUpdate": "no action"
|
|
}
|
|
},
|
|
"compositePrimaryKeys": {},
|
|
"uniqueConstraints": {},
|
|
"policies": {},
|
|
"checkConstraints": {},
|
|
"isRLSEnabled": false
|
|
}
|
|
},
|
|
"enums": {
|
|
"public.calidad": {
|
|
"name": "calidad",
|
|
"schema": "public",
|
|
"values": [
|
|
"basica",
|
|
"media",
|
|
"premium"
|
|
]
|
|
},
|
|
"public.canal_contacto": {
|
|
"name": "canal_contacto",
|
|
"schema": "public",
|
|
"values": [
|
|
"formulario",
|
|
"whatsapp",
|
|
"llamada"
|
|
]
|
|
},
|
|
"public.canal_origen": {
|
|
"name": "canal_origen",
|
|
"schema": "public",
|
|
"values": [
|
|
"formulario_web",
|
|
"whatsapp",
|
|
"llamada",
|
|
"referido",
|
|
"anuncio"
|
|
]
|
|
},
|
|
"public.categoria_material": {
|
|
"name": "categoria_material",
|
|
"schema": "public",
|
|
"values": [
|
|
"suelo",
|
|
"pared",
|
|
"pintura",
|
|
"mobiliario"
|
|
]
|
|
},
|
|
"public.envio_presupuesto_mode": {
|
|
"name": "envio_presupuesto_mode",
|
|
"schema": "public",
|
|
"values": [
|
|
"automatico",
|
|
"revision"
|
|
]
|
|
},
|
|
"public.estado_wa": {
|
|
"name": "estado_wa",
|
|
"schema": "public",
|
|
"values": [
|
|
"sin_enviar",
|
|
"enviado",
|
|
"entregado",
|
|
"leido",
|
|
"fallido"
|
|
]
|
|
},
|
|
"public.foto_momento": {
|
|
"name": "foto_momento",
|
|
"schema": "public",
|
|
"values": [
|
|
"antes",
|
|
"despues"
|
|
]
|
|
},
|
|
"public.job_estado": {
|
|
"name": "job_estado",
|
|
"schema": "public",
|
|
"values": [
|
|
"pendiente",
|
|
"procesando",
|
|
"completado",
|
|
"error"
|
|
]
|
|
},
|
|
"public.job_tipo": {
|
|
"name": "job_tipo",
|
|
"schema": "public",
|
|
"values": [
|
|
"analisis_fotos",
|
|
"render",
|
|
"presupuesto_ia"
|
|
]
|
|
},
|
|
"public.lead_estado": {
|
|
"name": "lead_estado",
|
|
"schema": "public",
|
|
"values": [
|
|
"nuevo",
|
|
"contactado",
|
|
"visita_agendada",
|
|
"presupuesto_enviado",
|
|
"ganado",
|
|
"perdido"
|
|
]
|
|
},
|
|
"public.nivel_calificacion": {
|
|
"name": "nivel_calificacion",
|
|
"schema": "public",
|
|
"values": [
|
|
"A",
|
|
"B",
|
|
"C",
|
|
"D"
|
|
]
|
|
},
|
|
"public.pipeline_stage": {
|
|
"name": "pipeline_stage",
|
|
"schema": "public",
|
|
"values": [
|
|
"form_completado",
|
|
"fotos_subidas",
|
|
"prellamada_enviada",
|
|
"llamada_completada",
|
|
"render_generado",
|
|
"presupuesto_generado",
|
|
"whatsapp_entregado"
|
|
]
|
|
},
|
|
"public.resultado_contacto": {
|
|
"name": "resultado_contacto",
|
|
"schema": "public",
|
|
"values": [
|
|
"exitoso",
|
|
"no_contesta",
|
|
"ocupado",
|
|
"rechaza",
|
|
"error_tecnico"
|
|
]
|
|
},
|
|
"public.rol_mensaje": {
|
|
"name": "rol_mensaje",
|
|
"schema": "public",
|
|
"values": [
|
|
"user",
|
|
"assistant",
|
|
"system"
|
|
]
|
|
},
|
|
"public.subscription_status": {
|
|
"name": "subscription_status",
|
|
"schema": "public",
|
|
"values": [
|
|
"trial",
|
|
"activo",
|
|
"cancelado",
|
|
"vencido"
|
|
]
|
|
},
|
|
"public.testimonio_estado": {
|
|
"name": "testimonio_estado",
|
|
"schema": "public",
|
|
"values": [
|
|
"pendiente",
|
|
"publicado",
|
|
"oculto"
|
|
]
|
|
},
|
|
"public.tipo_reforma": {
|
|
"name": "tipo_reforma",
|
|
"schema": "public",
|
|
"values": [
|
|
"cocina",
|
|
"bano",
|
|
"salon",
|
|
"comedor",
|
|
"integral",
|
|
"otro"
|
|
]
|
|
},
|
|
"public.unidad_medida": {
|
|
"name": "unidad_medida",
|
|
"schema": "public",
|
|
"values": [
|
|
"m2",
|
|
"ml",
|
|
"ud"
|
|
]
|
|
},
|
|
"public.urgencia": {
|
|
"name": "urgencia",
|
|
"schema": "public",
|
|
"values": [
|
|
"alta",
|
|
"media",
|
|
"baja"
|
|
]
|
|
},
|
|
"public.user_role": {
|
|
"name": "user_role",
|
|
"schema": "public",
|
|
"values": [
|
|
"reformista",
|
|
"admin"
|
|
]
|
|
},
|
|
"public.user_status": {
|
|
"name": "user_status",
|
|
"schema": "public",
|
|
"values": [
|
|
"activo",
|
|
"deshabilitado"
|
|
]
|
|
},
|
|
"public.visita_estado": {
|
|
"name": "visita_estado",
|
|
"schema": "public",
|
|
"values": [
|
|
"propuesta",
|
|
"confirmada",
|
|
"realizada",
|
|
"cancelada",
|
|
"reprogramada"
|
|
]
|
|
}
|
|
},
|
|
"schemas": {},
|
|
"sequences": {},
|
|
"roles": {},
|
|
"policies": {},
|
|
"views": {},
|
|
"_meta": {
|
|
"columns": {},
|
|
"schemas": {},
|
|
"tables": {}
|
|
}
|
|
} |