/** * Script para criar 3 consultas de exemplo para o usuário/paciente Pedro Araujo. * Credenciais locais fornecidas: Email: pedro.araujo@mediconnect.com Senha: local123 * Este script NÃO cria o usuário nem o paciente se não existirem; apenas tenta * localizar o paciente por email e gerar um arquivo local de demonstração * (src/data/consultas-pedro.json) e opcionalmente mesclar no consultas-demo.json. * * Modo 1 (arquivo local): Gera JSON com consultas fictícias. * Modo 2 (Supabase) - opcional futuro: Inserir via REST (requer tabela appointments e RLS configurada). */ import fs from 'fs'; import path from 'path'; import fetch from 'node-fetch'; const SUPABASE_URL = 'https://yuanqfswhberkoevtmfr.supabase.co'; const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ'; const PEDRO_EMAIL = 'pedro.araujo@mediconnect.com'; // Placeholder: se souber o ID real do paciente no Supabase, coloque aqui para futura inserção let pedroPatientId = null; async function tentarLocalizarPaciente() { try { const res = await fetch(`${SUPABASE_URL}/rest/v1/patients?select=id,email&email=eq.${encodeURIComponent(PEDRO_EMAIL)}`, { headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${SUPABASE_ANON_KEY}`, } }); if (!res.ok) return null; const data = await res.json(); if (Array.isArray(data) && data.length > 0) { return data[0].id; } return null; } catch (e) { return null; } } function criarConsultasLocais(patientIdOrEmail) { const agora = new Date(); const isoFuturo = (dias, hora) => { const d = new Date(agora.getTime() + dias * 86400000); d.setHours(hora, 0, 0, 0); return d.toISOString(); }; const medicoFernandoId = 'be1e3cba-534e-48c3-9590-b7e55861cade'; const medicoFernandoNome = 'Fernando Pirichowski - Squad 18'; const pacientePedroNome = 'Pedro Araujo'; const consultas = [ { id: 'consulta-demo-pedro-001', pacienteId: patientIdOrEmail, medicoId: medicoFernandoId, pacienteNome: pacientePedroNome, medicoNome: medicoFernandoNome, dataHora: isoFuturo(2, 10), status: 'agendada', tipo: 'Consulta', observacoes: 'Primeira avaliação clínica do Pedro.' }, { id: 'consulta-demo-pedro-002', pacienteId: patientIdOrEmail, medicoId: medicoFernandoId, pacienteNome: pacientePedroNome, medicoNome: medicoFernandoNome, dataHora: isoFuturo(7, 9), status: 'confirmada', tipo: 'Retorno', observacoes: 'Retorno para revisar sintomas.' }, { id: 'consulta-demo-pedro-003', pacienteId: patientIdOrEmail, medicoId: medicoFernandoId, pacienteNome: pacientePedroNome, medicoNome: medicoFernandoNome, dataHora: isoFuturo(14, 11), status: 'agendada', tipo: 'Exame', observacoes: 'Agendamento de exame complementar.' } ]; return consultas; } function salvarArquivoJson(fileName, data) { const dataDir = path.join(process.cwd(), 'src', 'data'); if (!fs.existsSync(dataDir)) fs.mkdirSync(dataDir, { recursive: true }); const fullPath = path.join(dataDir, fileName); fs.writeFileSync(fullPath, JSON.stringify(data, null, 2)); console.log(`✅ Arquivo gerado: ${fullPath}`); return fullPath; } function mesclarNoConsultasDemo(novas) { const demoPath = path.join(process.cwd(), 'src', 'data', 'consultas-demo.json'); if (!fs.existsSync(demoPath)) { console.log('ℹ️ consultas-demo.json não encontrado, pulando mescla.'); return; } try { const atual = JSON.parse(fs.readFileSync(demoPath, 'utf-8')); const idsExistentes = new Set(atual.map(c => c.id)); const filtradas = novas.filter(c => !idsExistentes.has(c.id)); const combinado = [...atual, ...filtradas]; fs.writeFileSync(demoPath, JSON.stringify(combinado, null, 2)); console.log(`✅ ${filtradas.length} consultas adicionadas a consultas-demo.json`); } catch (e) { console.warn('⚠️ Falha ao mesclar no consultas-demo.json:', e.message); } } async function main() { console.log('\n📁 Criando consultas de exemplo para Pedro...'); const pacienteId = await tentarLocalizarPaciente(); if (pacienteId) { pedroPatientId = pacienteId; console.log(`✅ Paciente encontrado no Supabase: ${pacienteId}`); } else { console.log('ℹ️ Paciente Pedro não encontrado no Supabase — usando email como identificador local.'); } const ident = pedroPatientId || PEDRO_EMAIL; const consultas = criarConsultasLocais(ident); salvarArquivoJson('consultas-pedro.json', consultas); mesclarNoConsultasDemo(consultas); console.log('\n✨ Concluído. Você pode agora:'); console.log(' 1. Rodar a aplicação (pnpm dev)'); console.log(' 2. Verificar se seu código carrega dados de src/data/consultas-demo.json'); console.log(' 3. (Se não carregar automaticamente) Injetar via console usando snippet que fornecerei.'); } main().catch(e => { console.error('❌ Erro no script:', e.message); process.exit(1); });