import { pool } from '../db.js'; import crypto from 'crypto'; /** * 🎯 ACME Corporation - Fornecedora Oficial do Coiote desde 1949 * * "Se não explodir, não é ACME!" ™ * * Sede: Deserto de Mojave, Monument Valley, ou onde quer que o Papa-Léguas esteja. * Endereço: Acme Corporation, Estrada do Deserto s/n, USA (entrega instantânea por catapulta) */ // 69 vagas com humor tech para a ACME Corp const acmeJobTemplates = [ // === Desenvolvimento & Engenharia (jobs 1-20) === { title: 'Engenheiro de Software de Foguetes Portáteis', skills: ['C++', 'Propulsão', 'Não Explodir'], salaryRange: [15000, 25000], desc: 'Desenvolver sistema de ignição que funcione ANTES de o usuário olhar para baixo.' }, { title: 'Desenvolvedor Full Stack de Armadilhas', skills: ['React', 'Node.js', 'Física Cartoon'], salaryRange: [12000, 20000], desc: 'Criar UIs intuitivas para armadilhas que nunca funcionam conforme planejado.' }, { title: 'Arquiteto de Sistemas de Catapultas', skills: ['AWS', 'Kubernetes', 'Balística'], salaryRange: [18000, 30000], desc: 'Projetar infraestrutura escalável para lançamento de coiotes a longas distâncias.' }, { title: 'Dev Backend de Buracos Portáteis', skills: ['Python', 'Geometria Não-Euclidiana', 'ACME SDK'], salaryRange: [14000, 22000], desc: 'Implementar API REST para buracos que funcionam em qualquer superfície, exceto quando você precisa.' }, { title: 'Frontend Engineer de Pedidos por Catálogo', skills: ['Vue.js', 'UX', 'Entrega Instantânea'], salaryRange: [10000, 16000], desc: 'Redesenhar o catálogo ACME para checkout em menos de 3 segundos.' }, { title: 'Engenheiro de QA de Produtos Explosivos', skills: ['Selenium', 'Sobrevivência', 'Primeiros Socorros'], salaryRange: [8000, 40000], desc: 'Testar produtos ACME. Seguro de vida incluso. Alta rotatividade.' }, { title: 'DevOps de Entregas Instantâneas', skills: ['Docker', 'Teletransporte', 'CI/CD'], salaryRange: [14000, 22000], desc: 'Garantir que produtos cheguem em 0.3 segundos, mesmo no meio do deserto.' }, { title: 'Desenvolvedor de TNT Inteligente', skills: ['IoT', 'Sensores', 'Detonação Remota'], salaryRange: [16000, 26000], desc: 'Programar TNT com IA que sabe quando NÃO explodir (feature request do Coiote).' }, { title: 'Engenheiro de Gravidade Seletiva', skills: ['Física Quântica', 'Cartoon Logic', 'Go'], salaryRange: [20000, 35000], desc: 'Desenvolver algoritmo que faz a gravidade funcionar apenas quando conveniente.' }, { title: 'Programador de Placas de Penhascos', skills: ['React Native', 'GPS', 'Sinalização'], salaryRange: [9000, 14000], desc: 'Criar app que avisa "olhe para baixo" no momento certo.' }, { title: 'SRE de Catapultas Gigantes', skills: ['Prometheus', 'Grafana', 'Elasticidade'], salaryRange: [15000, 24000], desc: 'Monitorar uptime de 99.9% em equipamentos que falham 100% das vezes.' }, { title: 'Desenvolvedor de Patins-Foguete', skills: ['Rust', 'Propulsão', 'Freios?'], salaryRange: [13000, 21000], desc: 'Implementar sistema de frenagem. Urgente. Muito urgente.' }, { title: 'Arquiteto de Túneis Instantâneos', skills: ['Three.js', '3D Modeling', 'Ilusão de Ótica'], salaryRange: [16000, 25000], desc: 'Projetar túneis que parecem reais mas só funcionam para Papa-Léguas.' }, { title: 'Engenheiro de Machine Learning Anti-Bird', skills: ['TensorFlow', 'Computer Vision', 'Bip-Bip Detection'], salaryRange: [18000, 28000], desc: 'Treinar modelo para identificar Papa-Léguas. Dataset: 0 capturas bem-sucedidas.' }, { title: 'Developer de Imãs Gigantes', skills: ['Eletromagnetismo', 'Física', 'Debugging'], salaryRange: [14000, 22000], desc: 'Corrigir bug onde imã atrai tudo EXCETO o alvo pretendido.' }, { title: 'Programador de Guarda-Chuvas Anti-Bigorna', skills: ['C#', 'Resistência de Materiais', 'Otimismo'], salaryRange: [11000, 18000], desc: 'Desenvolver guarda-chuva que suporte 2 toneladas. Prazo: ontem.' }, { title: 'Engenheiro de Som do Bip-Bip', skills: ['Audio Processing', 'FFT', 'Frustração'], salaryRange: [10000, 16000], desc: 'Analisar frequência do "Bip-Bip" para prever localização. Spoiler: não funciona.' }, { title: 'Dev de Molas Gigantes', skills: ['Spring Boot', 'Elastic Stack', 'Física Clássica'], salaryRange: [12000, 19000], desc: 'Calcular trajetória de molas que sempre lançam na direção errada.' }, { title: 'Arquiteto de Analytics de Falhas', skills: ['Apache Spark', 'Data Lake', 'Análise Post-Mortem'], salaryRange: [17000, 27000], desc: 'Construir dashboard de falhas. Sempre 100% no vermelho.' }, { title: 'Desenvolvedor de Tintas Invisíveis', skills: ['WebGL', 'Shaders', 'Invisibilidade'], salaryRange: [13000, 20000], desc: 'Criar tinta que esconde buracos. Funciona apenas em demos.' }, // === Produto & Design (jobs 21-35) === { title: 'Product Manager de Armadilhas', skills: ['Roadmap', 'Falhas', 'Pivoting'], salaryRange: [14000, 23000], desc: 'Priorizar features de armadilhas. Backlog: 3.847 itens, 0 entregas bem-sucedidas.' }, { title: 'UX Designer de Dinamite', skills: ['Figma', 'User Research', 'Explosões'], salaryRange: [11000, 18000], desc: 'Redesenhar pavio de dinamite para melhor usabilidade durante perseguições.' }, { title: 'UI Designer de Catálogos ACME', skills: ['Photoshop', 'Tipografia', 'Anos 50'], salaryRange: [9000, 15000], desc: 'Manter estética vintage do catálogo. Nada de dark mode.' }, { title: 'Product Designer de Buracos Pintados', skills: ['Illustrator', 'Realismo', 'Ilusão'], salaryRange: [12000, 19000], desc: 'Projetar buracos 2D que pareçam 3D. Para todos, menos o Coiote.' }, { title: 'Scrum Master de Projetos Explosivos', skills: ['Agile', 'Sprints (literais)', 'Retrospectivas'], salaryRange: [10000, 17000], desc: 'Facilitar sprints de 2 semanas que duram 3 segundos (e terminam em explosão).' }, { title: 'Design Lead de Disfarces de Pedra', skills: ['3D Modeling', 'Texturização', 'Camuflagem'], salaryRange: [15000, 24000], desc: 'Liderar time de designers de disfarces que nunca enganam ninguém.' }, { title: 'UX Researcher de Clientes Coiote', skills: ['Pesquisa Qualitativa', 'Empatia', 'Trauma'], salaryRange: [11000, 18000], desc: 'Entrevistar único cliente. Ele não consegue responder (está em queda livre).' }, { title: 'Motion Designer de Explosões', skills: ['After Effects', 'Partículas', 'Timing Cômico'], salaryRange: [10000, 16000], desc: 'Animar explosões com timing perfeito. Estrelas girando na cabeça incluídas.' }, { title: 'Information Architect de Manuais', skills: ['Documentação', 'Hierarquia', 'Avisos Ignorados'], salaryRange: [9000, 14000], desc: 'Organizar manuais que ninguém lê. "AVISO: NÃO OLHE PARA BAIXO" na página 347.' }, { title: 'Brand Designer Anti-Papa-Léguas', skills: ['Branding', 'Identidade Visual', 'Vingança'], salaryRange: [12000, 20000], desc: 'Criar mascote corporativo que não seja humilhado por um pássaro.' }, { title: 'Service Designer de Suporte ao Coiote', skills: ['Jornada do Cliente', 'Touchpoints', 'Dor'], salaryRange: [13000, 21000], desc: 'Mapear jornada do cliente. Spoiler: sempre termina no fundo de um canyon.' }, { title: 'Design System Lead ACME', skills: ['Design Tokens', 'Componentes', 'Consistência'], salaryRange: [16000, 25000], desc: 'Criar sistema de design. Cores primárias: vermelho explosivo, preto chamuscado.' }, { title: 'Accessibility Designer de Produtos', skills: ['WCAG', 'Inclusão', 'Bom Senso'], salaryRange: [11000, 18000], desc: 'Tornar produtos acessíveis. Adicionar aviso sonoro antes de explosões.' }, { title: 'Product Owner de Foguetes', skills: ['Backlog', 'Priorização', 'Otimismo Irracional'], salaryRange: [14000, 22000], desc: 'Defender features de foguetes em reuniões. Taxa de sucesso: negativa.' }, { title: 'Design QA de Bigornas', skills: ['Testes Visuais', 'Pixel Perfect', 'Peso'], salaryRange: [9000, 15000], desc: 'Verificar se bigornas estão pixeladas corretamente antes de cair.' }, // === Data & Analytics (jobs 36-45) === { title: 'Data Scientist de Previsão de Falhas', skills: ['Python', 'Statistics', 'Pessimismo'], salaryRange: [16000, 26000], desc: 'Prever falhas de produtos. Accuracy: 100% (sempre falham).' }, { title: 'Data Engineer de Pipeline de Explosões', skills: ['Airflow', 'Spark', 'ETL'], salaryRange: [14000, 23000], desc: 'Construir pipelines de dados de explosões. Volume: infinito.' }, { title: 'Business Intelligence de Vendas', skills: ['Tableau', 'SQL', 'Negação'], salaryRange: [12000, 19000], desc: 'Criar dashboards mostrando vendas para único cliente há 75 anos.' }, { title: 'ML Engineer de Detecção de Papa-Léguas', skills: ['PyTorch', 'YOLO', 'Frustração'], salaryRange: [17000, 27000], desc: 'Treinar detector. Precision: 0%. Recall: "ele já era".' }, { title: 'Analytics Engineer de Métricas ACME', skills: ['DBT', 'Snowflake', 'Definição de Sucesso'], salaryRange: [15000, 24000], desc: 'Definir KPIs. Meta: reduzir falhas de 100% para 99.9%.' }, { title: 'Data Analyst de Comportamento do Pássaro', skills: ['GA4', 'Mixpanel', 'Observação'], salaryRange: [11000, 18000], desc: 'Analisar padrões do Papa-Léguas. Conclusão: "ele corre muito rápido".' }, { title: 'Quantitative Analyst de Apostas', skills: ['R', 'Monte Carlo', 'Vegas'], salaryRange: [18000, 28000], desc: 'Calcular probabilidade de captura. Resultado: 0.0000001%.' }, { title: 'AI Research Scientist de Planos', skills: ['GPT', 'Reinforcement Learning', 'Arrependimento'], salaryRange: [20000, 32000], desc: 'Usar IA para criar planos melhores. IA: "desista".' }, { title: 'Data Governance de Falhas', skills: ['Data Catalog', 'Lineage', 'Classificação'], salaryRange: [13000, 21000], desc: 'Catalogar 50 anos de falhas. Precisa de mais storage.' }, { title: 'Growth Hacker ACME', skills: ['Experimentos', 'AB Testing', 'Milagres'], salaryRange: [14000, 22000], desc: 'Aumentar base de clientes. Cliente atual: 1. Meta: 2.' }, // === Infraestrutura & Ops (jobs 46-55) === { title: 'Platform Engineer de Entrega Instantânea', skills: ['Terraform', 'Cloud', 'Teleporte'], salaryRange: [16000, 25000], desc: 'Manter infra de entrega em 0.3s. SLA: 99.9% de entregas, 100% de falhas.' }, { title: 'Network Engineer de Comunicação Coiote', skills: ['TCP/IP', 'Sinalização', 'Fumaça'], salaryRange: [12000, 19000], desc: 'Manter rede de comunicação no deserto. Latência: problema do cliente.' }, { title: 'Security Engineer de Patentes', skills: ['SOC2', 'Segredos Industriais', 'Espionagem'], salaryRange: [15000, 24000], desc: 'Proteger patentes de produtos que não funcionam de serem copiados.' }, { title: 'Cloud Architect de Fábricas', skills: ['Multi-Cloud', 'Híbrido', 'Caos'], salaryRange: [19000, 30000], desc: 'Migrar fábricas para nuvem. Explosões agora são serverless.' }, { title: 'SysAdmin de Servidores de Catálogo', skills: ['Linux', 'Uptime', 'Vintage'], salaryRange: [10000, 16000], desc: 'Manter servidor PDP-11 de 1972 que roda o catálogo.' }, { title: 'Reliability Engineer de Teletransporte', skills: ['Chaos Engineering', 'Resiliência', 'Fé'], salaryRange: [17000, 26000], desc: 'Garantir confiabilidade de sistema que funciona quando quer.' }, { title: 'Database Admin de Pedidos', skills: ['PostgreSQL', 'Backup', 'História'], salaryRange: [11000, 18000], desc: 'Gerenciar 75 anos de pedidos de um único cliente muito leal.' }, { title: 'IT Support de Produtos ACME', skills: ['Troubleshooting', 'Paciência', 'Filosofia'], salaryRange: [7000, 12000], desc: 'Atender chamados: "meu foguete não para". Spoiler: não tem freio.' }, { title: 'Incident Manager de Explosões', skills: ['Incident Response', 'Post-Mortem', 'Calma'], salaryRange: [14000, 22000], desc: 'Gerenciar incidentes. São tantos que viraram feature.' }, { title: 'Cost Optimization de Bigornas', skills: ['FinOps', 'Bulk Buying', 'Logística'], salaryRange: [13000, 20000], desc: 'Otimizar custos de bigornas. Volume: 47 por dia.' }, // === Liderança & Gestão (jobs 56-65) === { title: 'VP de Engenharia de Produtos Impossíveis', skills: ['Leadership', 'Estratégia', 'Resiliência'], salaryRange: [25000, 45000], desc: 'Liderar time de engenharia. Turnover: 100% (por razões físicas).' }, { title: 'CTO de Inovação Explosiva', skills: ['Visão', 'Roadmap', 'Seguro de Vida'], salaryRange: [30000, 50000], desc: 'Definir futuro tecnológico da ACME. Previsão: mais explosões.' }, { title: 'Director de R&D de Armadilhas', skills: ['Research', 'Development', 'Denial'], salaryRange: [22000, 38000], desc: 'Dirigir pesquisa de armadilhas que funcionem. Funding: ilimitado. Resultados: zero.' }, { title: 'Engineering Manager de Foguetes', skills: ['People Management', '1-1s', 'Insurance'], salaryRange: [18000, 30000], desc: 'Gerenciar time de engenheiros de foguetes. Foco em retenção (literal).' }, { title: 'Head de QA e Sobreviventes', skills: ['Test Strategy', 'Hiring', 'Eulogy Writing'], salaryRange: [20000, 32000], desc: 'Liderar QA. Principal desafio: encontrar testadores voluntários.' }, { title: 'Director de Customer Success', skills: ['Retention', 'Upsell', 'Therapy'], salaryRange: [21000, 35000], desc: 'Garantir sucesso do cliente. Cliente atual precisa de terapia, não de sucesso.' }, { title: 'VP de Produto Anti-Ave', skills: ['Product Strategy', 'Market Research', 'Obsessão'], salaryRange: [26000, 42000], desc: 'Definir estratégia de produto. Foco único: capturar Papa-Léguas.' }, { title: 'Chief Explosion Officer (CEO)', skills: ['Vision', 'Inspiration', 'Fire Extinguisher'], salaryRange: [40000, 80000], desc: 'Liderar empresa. Escritório fica a 2km de distância de segurança.' }, { title: 'Head de Segurança Ocupacional', skills: ['OSHA', 'Prevenção', 'Impossível'], salaryRange: [18000, 28000], desc: 'Implementar segurança no trabalho. Maior desafio da carreira.' }, { title: 'Director de Parcerias Road Runner', skills: ['Negotiation', 'Diplomacy', 'Ironia'], salaryRange: [22000, 36000], desc: 'Negociar parceria com Papa-Léguas. Status: 75 anos sem resposta.' }, // === Especiais e Easter Eggs (jobs 66-69) === { title: 'Estagiário de Testes de Produto (Urgente)', skills: ['Coragem', 'Agilidade', 'Plano de Saúde'], salaryRange: [800, 2000], desc: 'Testar novos produtos. Benefícios: todos, porque você vai precisar.' }, { title: 'Ilustrador de Manuais "AVISO!"', skills: ['Illustrator', 'Perigo', 'Criatividade'], salaryRange: [9000, 14000], desc: 'Desenhar os 847 símbolos de aviso que ninguém lê.' }, { title: 'Filosofo Corporativo de Fracassos', skills: ['Existencialismo', 'Camus', 'Sísifo'], salaryRange: [15000, 25000], desc: 'Dar significado a décadas de falhas. "A luta em si é suficiente para preencher o coração de um Coiote."' }, { title: 'Narrador de Painéis de Queda', skills: ['Copywriting', 'Timing', 'Onomatopéia'], salaryRange: [10000, 16000], desc: 'Escrever textos para placas que aparecem antes de quedas. Ex: "Epa!", "Uh-oh", "Meep meep não vai me ajudar agora".' }, ]; export async function seedAcmeCorp() { console.log('🏭 Seeding ACME Corporation e 69 vagas hilariantes...'); try { // Get or create a default region const regionsRes = await pool.query('SELECT id FROM regions LIMIT 1'); const defaultRegionId = regionsRes.rows[0]?.id || null; // 1. Create ACME Company const acmeSlug = 'ACME Corporation'; const acmeCNPJ = '99.999.999/0001-99'; await pool.query(` INSERT INTO companies (name, slug, type, document, address, region_id, phone, email, website, description, verified, active, logo_url) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13) ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, description = EXCLUDED.description, verified = EXCLUDED.verified, active = EXCLUDED.active `, [ 'ACME Corporation', acmeSlug, 'company', acmeCNPJ, 'Estrada do Deserto s/n, Monument Valley, Mojave, USA', defaultRegionId, '+1-800-ACME-TNT', 'careers@acme.corp', 'https://acme.corp', JSON.stringify({ tagline: 'Se não explodir, não é ACME! ™', founded: '1949', ceo: 'Sr. Big Boss (nunca visto, apenas ouvido)', mainClient: 'Wile E. Coyote - Cliente Leal há 75 anos', headquarters: 'Deserto de Mojave (ou qualquer lugar onde o Papa-Léguas esteja)', mission: 'Fornecer produtos de qualidade duvidosa para perseguição de aves corredoras', values: ['Inovação Explosiva', 'Entrega Instantânea', 'Garantia de Entretenimento'], disclaimer: 'ACME não se responsabiliza por lesões, explosões, quedas de penhascos, bigornas na cabeça, ou humilhação pública por um pássaro.' }), true, true, 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Wile_E._Coyote_with_Acme_Rocket.svg/200px-Wile_E._Coyote_with_Acme_Rocket.svg.png' ]); // Create Core Company entry const acmeCoreId = 'acacacac-acac-acac-acac-acacacacacac'; // Memorable UUID await pool.query(` INSERT INTO core_companies (id, name, document, status) VALUES ($1, $2, $3, 'ACTIVE') ON CONFLICT (id) DO NOTHING `, [acmeCoreId, 'ACME Corporation', acmeCNPJ]); console.log(' ✓ ACME Corporation criada'); // 2. Get ACME company ID (use coreId for FK) const acmeCompanyId = acmeCoreId; // 3. Get seed user from core_users (for FK) const seedUserRes = await pool.query("SELECT id FROM core_users LIMIT 1"); const seedUserId = seedUserRes.rows[0]?.id; // 4. Seed 69 jobs const workModes = ['onsite', 'hybrid', 'remote']; const benefits = [ 'Seguro de Vida Premium (você vai precisar)', 'Plano de Saúde Ilimitado', 'Kit de Primeiros Socorros Reforçado', 'Uniforme À Prova de Explosão (parcial)', 'Vale Transporte por Catapulta', 'Vale Refeição (Papa-Léguas não incluso)', 'Gympass (para correr do Papa-Léguas)', 'Terapia Pós-Explosão', 'Desconto em Produtos ACME (use por sua conta e risco)', 'Home Office no Deserto', 'Flexible Hours (produtos explodem a qualquer hora)', 'Stock Options (valor: questionável)' ]; const locations = [ 'Deserto de Mojave - Anywhere', 'Monument Valley - Canyon #47', 'Remote (Qualquer Penhasco)', 'Hybrid (Escritório + Deserto)', 'Fábrica ACME - Los Angeles/Toontown Border', 'Remote (Com vista para crateras)' ]; const levels = ['Junior', 'Pleno', 'Senior', 'Especialista', 'Traumatizado']; for (let i = 0; i < 69; i++) { const template = acmeJobTemplates[i]; const level = levels[i % levels.length]; const workMode = workModes[i % 3]; const location = locations[i % locations.length]; const title = `${level} ${template.title}`; const salaryMin = template.salaryRange[0]; const salaryMax = template.salaryRange[1]; // Select random benefits const selectedBenefits = []; for (let b = 0; b < 4; b++) { selectedBenefits.push(benefits[(i + b) % benefits.length]); } const jobId = crypto.randomUUID(); await pool.query(` INSERT INTO jobs (id, company_id, created_by, title, description, salary_min, salary_max, salary_type, employment_type, working_hours, location, requirements, benefits, visa_support, language_level, status, work_mode) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17) `, [ jobId, acmeCompanyId, seedUserId, title, `🏭 ACME Corporation está contratando!\n\n${template.desc}\n\nRequisitos:\n- ${template.skills.join('\n- ')}\n- Tolerância a explosões\n- Resistência a quedas de grandes alturas\n- Habilidade de não olhar para baixo\n- Experiência em sobreviver\n\n⚠️ AVISO: ACME Corporation não se responsabiliza por acidentes envolvendo foguetes, bigornas, TNT, buracos pintados, ou Papa-Léguas.\n\n"Se você consegue ler este anúncio, você já é mais qualificado que nosso único cliente." - RH ACME`, salaryMin, salaryMax, 'monthly', i % 3 === 0 ? 'full-time' : (i % 3 === 1 ? 'contract' : 'part-time'), workMode === 'remote' ? 'Flexible (Explosões acontecem 24/7)' : '9:00-18:00 (ou até a próxima explosão)', location, JSON.stringify(template.skills), JSON.stringify(selectedBenefits), i % 5 === 0, // 20% offer visa support 'beginner', 'open', workMode ]); } console.log(' ✓ 69 vagas ACME criadas com sucesso'); console.log(' 🎯 Tipos de vaga: Dev, Design, Data, Infra, Liderança, Easter Eggs'); console.log(' 💀 Disclaimer: Nenhum Coiote foi ferido na criação deste seeder (mentira)'); } catch (error) { console.error(' ❌ Erro ao criar ACME Corp:', error.message); throw error; } } // Create a user for Wile E. Coyote export async function seedWileECoyote() { console.log('🐺 Criando usuário Wile E. Coyote...'); try { const bcrypt = await import('bcrypt'); const hash = await bcrypt.default.hash('MeepMeep@123', 10); await pool.query(` INSERT INTO users (identifier, password_hash, role, full_name, email, city, state, bio, title) VALUES ($1, $2, 'recruiter', $3, $4, $5, $6, $7, $8) ON CONFLICT (identifier) DO UPDATE SET full_name = EXCLUDED.full_name, bio = EXCLUDED.bio `, [ 'wile_e_coyote', hash, 'Wile E. Coyote', 'wile@acme.corp', 'Monument Valley', 'AZ', 'Super Gênio autoproclamado. 75 anos de experiência em perseguição de aves corredoras. Especialista em produtos ACME. Taxa de sucesso: confidencial.', 'HR Manager & Chief Failure Officer' ]); console.log(' ✓ Wile E. Coyote criado (login: wile_e_coyote / senha: MeepMeep@123)'); } catch (error) { console.error(' ❌ Erro ao criar Wile E. Coyote:', error.message); } }