import { pool } from '../db.js'; import crypto from 'crypto'; /** * 📝 Applications Seeder * * Creates realistic job applications with candidates like: * - Ana Silva (Senior Full Stack Developer) * - Carlos Santos (Designer UX/UI) * - Maria Oliveira (Product Manager) */ const candidateProfiles = [ { name: 'Ana Silva', email: 'ana.silva@email.com', phone: '+55 11 99999-1111', whatsapp: '+55 11 99999-1111', message: 'Tenho 5 anos de experiência como desenvolvedora Full Stack, trabalhando com React, Node.js e PostgreSQL. Busco uma posição desafiadora onde possa crescer profissionalmente.', resume_url: 'https://cdn.gohorsejobs.com/docs/ana_silva_cv.pdf', }, { name: 'Carlos Santos', email: 'carlos.santos@email.com', phone: '+55 11 98888-2222', whatsapp: '+55 11 98888-2222', message: 'Designer UX/UI com 3 anos de experiência em produtos digitais. Especialista em Figma, Design Systems e pesquisa com usuários. Portfolio: behance.net/carlossantos', resume_url: 'https://cdn.gohorsejobs.com/docs/carlos_santos_portfolio.pdf', }, { name: 'Maria Oliveira', email: 'maria.oliveira@email.com', phone: '+55 21 97777-3333', whatsapp: '+55 21 97777-3333', message: 'Product Manager com 4 anos de experiência em startups tech. Certificada em Scrum e experiência com metodologias ágeis. Busco liderar produtos inovadores.', resume_url: 'https://cdn.gohorsejobs.com/docs/maria_oliveira_resume.pdf', }, { name: 'Pedro Costa', email: 'pedro.costa@email.com', phone: '+55 11 96666-4444', whatsapp: '+55 11 96666-4444', message: 'Desenvolvedor Backend com experiência em Go, Python e microsserviços. Apaixonado por performance e arquitetura de sistemas.', resume_url: 'https://cdn.gohorsejobs.com/docs/pedro_costa_cv.pdf', }, { name: 'Juliana Ferreira', email: 'juliana.ferreira@email.com', phone: '+55 11 95555-5555', whatsapp: '+55 11 95555-5555', message: 'Data Scientist com mestrado em Machine Learning. Experiência com Python, TensorFlow e análise de dados em larga escala.', resume_url: 'https://cdn.gohorsejobs.com/docs/juliana_ferreira_cv.pdf', }, ]; const statuses = ['pending', 'reviewed', 'shortlisted', 'rejected', 'hired']; export async function seedApplications() { console.log('📝 Seeding applications...'); try { // Get jobs const jobsRes = await pool.query('SELECT id, title FROM jobs LIMIT 20'); const jobs = jobsRes.rows; if (jobs.length === 0) { console.log(' ⚠️ No jobs found, skipping applications'); return; } let totalApps = 0; // Create applications - each candidate applies to multiple jobs for (let i = 0; i < candidateProfiles.length; i++) { const candidate = candidateProfiles[i]; // Each candidate applies to 3-5 random jobs const numApplications = 3 + (i % 3); for (let j = 0; j < numApplications && j < jobs.length; j++) { const job = jobs[(i + j) % jobs.length]; const appId = crypto.randomUUID(); const status = statuses[(i + j) % statuses.length]; // Calculate a random date in the past 30 days const daysAgo = Math.floor(Math.random() * 30); const createdAt = new Date(); createdAt.setDate(createdAt.getDate() - daysAgo); await pool.query(` INSERT INTO applications (id, job_id, name, email, phone, whatsapp, message, resume_url, status, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) ON CONFLICT (id) DO NOTHING `, [ appId, job.id, candidate.name, candidate.email, candidate.phone, candidate.whatsapp, `${candidate.message}\n\nInteressado na vaga: ${job.title}`, candidate.resume_url, status, createdAt, createdAt ]); totalApps++; } } console.log(` ✓ ${totalApps} applications criadas`); console.log(` 👤 Candidatos: Ana Silva, Carlos Santos, Maria Oliveira, Pedro Costa, Juliana Ferreira`); } catch (error) { console.error(' ❌ Error seeding applications:', error.message); throw error; } }