Sembrar planes y usuarios demo (admin + owner logueable)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ import * as schema from './schema';
|
||||
import { eq, sql } from 'drizzle-orm';
|
||||
import { computeBudget } from '../budget';
|
||||
import type { BudgetInputs } from '../budget/types';
|
||||
import { hashPassword } from '../lib/auth/password';
|
||||
|
||||
const connectionString = process.env.DATABASE_URL;
|
||||
if (!connectionString) {
|
||||
@@ -283,9 +284,52 @@ async function main() {
|
||||
|
||||
console.log('Limpiando datos previos...');
|
||||
await db.execute(
|
||||
sql`TRUNCATE TABLE ${schema.precisionHistory}, ${schema.leadPipelineEventos}, ${schema.leadEstadoHistory}, ${schema.leadFotos}, ${schema.leads}, ${schema.tenants} RESTART IDENTITY CASCADE`
|
||||
sql`TRUNCATE TABLE ${schema.precisionHistory}, ${schema.leadPipelineEventos}, ${schema.leadEstadoHistory}, ${schema.leadFotos}, ${schema.leads}, ${schema.sessions}, ${schema.users}, ${schema.plans}, ${schema.tenants} RESTART IDENTITY CASCADE`
|
||||
);
|
||||
|
||||
console.log('Sembrando planes...');
|
||||
const [, pro] = await db
|
||||
.insert(schema.plans)
|
||||
.values([
|
||||
{
|
||||
slug: 'starter',
|
||||
nombre: 'Starter',
|
||||
precioMensual: 2900,
|
||||
leadsIncluidos: 5,
|
||||
features: ['5 leads procesados / mes', '3 €/lead extra', 'Hasta 100 contactos', 'Branding básico'],
|
||||
},
|
||||
{
|
||||
slug: 'pro',
|
||||
nombre: 'Pro',
|
||||
precioMensual: 7900,
|
||||
leadsIncluidos: 15,
|
||||
features: [
|
||||
'15 leads procesados / mes',
|
||||
'2,50 €/lead extra',
|
||||
'White-label completo',
|
||||
'Sub-flujo licencia urbanística',
|
||||
'Integraciones Holded/Stel',
|
||||
'Soporte prioritario',
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: 'business',
|
||||
nombre: 'Business',
|
||||
precioMensual: 19900,
|
||||
leadsIncluidos: 50,
|
||||
features: [
|
||||
'50 leads procesados / mes',
|
||||
'2 €/lead extra',
|
||||
'Usuarios ilimitados',
|
||||
'API',
|
||||
'Multi-zona',
|
||||
'Custom price book',
|
||||
'Dashboard analytics',
|
||||
],
|
||||
},
|
||||
])
|
||||
.returning();
|
||||
|
||||
console.log('Creando tenant "Reformas Ejemplo"...');
|
||||
const [tenant] = await db
|
||||
.insert(schema.tenants)
|
||||
@@ -294,9 +338,30 @@ async function main() {
|
||||
nombreEmpresa: 'Reformas Ejemplo',
|
||||
provincia: 'Madrid',
|
||||
whatsappBusiness: '+34 600 000 000',
|
||||
planId: pro.id,
|
||||
subscriptionStatus: 'trial',
|
||||
trialEndsAt: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000),
|
||||
})
|
||||
.returning();
|
||||
|
||||
console.log('Creando usuarios demo (admin + owner)...');
|
||||
await db.insert(schema.users).values([
|
||||
{
|
||||
email: 'admin@reformix.es',
|
||||
passwordHash: await hashPassword('AdminReformix2026!'),
|
||||
nombre: 'Admin Reformix',
|
||||
role: 'admin',
|
||||
tenantId: null,
|
||||
},
|
||||
{
|
||||
email: 'demo@reformas-ejemplo.es',
|
||||
passwordHash: await hashPassword('DemoReformix2026!'),
|
||||
nombre: 'Reformas Ejemplo',
|
||||
role: 'reformista',
|
||||
tenantId: tenant.id,
|
||||
},
|
||||
]);
|
||||
|
||||
console.log(`Insertando ${SEED_LEADS.length} leads...`);
|
||||
for (const l of SEED_LEADS) {
|
||||
const createdAt = new Date(Date.now() - l.daysAgo * 24 * 60 * 60 * 1000);
|
||||
|
||||
Reference in New Issue
Block a user