seed.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import { PrismaClient } from '@prisma/client'
  2. import bcrypt from 'bcryptjs'
  3. import { config } from '../src/lib/config'
  4. const prisma = new PrismaClient()
  5. async function main() {
  6. console.log('🌱 Iniciando seed de la base de datos...')
  7. console.log(`📊 Usando base de datos: ${config.database.url}`)
  8. console.log('')
  9. // Buscar usuario paciente existente
  10. const patient = await prisma.user.findUnique({
  11. where: { email: 'patient@ani-assistant.com' }
  12. })
  13. if (!patient) {
  14. console.log('❌ Usuario paciente no encontrado. Ejecuta "npm run db:setup" primero.')
  15. return
  16. }
  17. // Buscar usuario doctor existente
  18. const doctor = await prisma.user.findUnique({
  19. where: { email: 'admin@ani-assistant.com' }
  20. })
  21. if (!doctor) {
  22. console.log('❌ Usuario doctor no encontrado. Ejecuta "npm run db:setup" primero.')
  23. return
  24. }
  25. console.log('👤 Usuario Paciente:', patient.email, `(${patient.username})`)
  26. console.log('👨‍⚕️ Usuario Doctor:', doctor.email, `(${doctor.username})`)
  27. console.log('')
  28. // Crear algunos reportes de ejemplo
  29. const sampleReports = [
  30. {
  31. userId: patient.id,
  32. content: `=== REPORTE MÉDICO ===
  33. Fecha: ${new Date().toLocaleDateString('es-ES')}
  34. Hora: ${new Date().toLocaleTimeString('es-ES')}
  35. SÍNTOMAS IDENTIFICADOS:
  36. • Dolor de cabeza
  37. • Fatiga
  38. RESUMEN DE LA CONSULTA:
  39. El paciente realizó 3 consulta(s) con el asistente virtual.
  40. TEMAS PRINCIPALES:
  41. • Medicamentos
  42. • Tratamiento
  43. RECOMENDACIONES DEL ASISTENTE:
  44. 1. Descansar adecuadamente
  45. 2. Mantener hidratación
  46. 3. Consultar con médico si persisten los síntomas
  47. NOTA: Este es un reporte generado automáticamente por el asistente virtual. Se recomienda consultar con un profesional médico para un diagnóstico completo.
  48. === FIN DEL REPORTE ===`,
  49. messages: [
  50. { role: 'user', content: 'Tengo dolor de cabeza desde hace 2 días' },
  51. { role: 'assistant', content: 'Entiendo tu preocupación. ¿Has notado algún otro síntoma?' },
  52. { role: 'user', content: 'También me siento muy cansado' },
  53. { role: 'assistant', content: 'Es importante descansar y mantenerse hidratado' },
  54. { role: 'user', content: '¿Qué medicamentos puedo tomar?' },
  55. { role: 'assistant', content: 'Te recomiendo consultar con un médico para el tratamiento adecuado' }
  56. ]
  57. },
  58. {
  59. userId: patient.id,
  60. content: `=== REPORTE MÉDICO ===
  61. Fecha: ${new Date().toLocaleDateString('es-ES')}
  62. Hora: ${new Date().toLocaleTimeString('es-ES')}
  63. SÍNTOMAS IDENTIFICADOS:
  64. • Dolor de garganta
  65. • Tos
  66. RESUMEN DE LA CONSULTA:
  67. El paciente realizó 3 consulta(s) con el asistente virtual.
  68. TEMAS PRINCIPALES:
  69. • Prevención
  70. • Control de síntomas
  71. RECOMENDACIONES DEL ASISTENTE:
  72. 1. Gargar con agua salada
  73. 2. Mantener reposo
  74. 3. Beber abundante líquido
  75. NOTA: Este es un reporte generado automáticamente por el asistente virtual. Se recomienda consultar con un profesional médico para un diagnóstico completo.
  76. === FIN DEL REPORTE ===`,
  77. messages: [
  78. { role: 'user', content: 'Me duele la garganta y tengo tos' },
  79. { role: 'assistant', content: '¿Cuánto tiempo llevas con estos síntomas?' },
  80. { role: 'user', content: 'Desde ayer por la mañana' },
  81. { role: 'assistant', content: 'Te recomiendo descansar y beber mucho líquido' }
  82. ]
  83. }
  84. ]
  85. for (const report of sampleReports) {
  86. await prisma.record.upsert({
  87. where: {
  88. id: `sample-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
  89. },
  90. update: {},
  91. create: report,
  92. })
  93. }
  94. console.log('✅ Seed completado exitosamente!')
  95. console.log('👤 Usuario Paciente:', patient.email)
  96. console.log('👨‍⚕️ Usuario Doctor:', doctor.email)
  97. console.log('📊 Reportes de ejemplo creados')
  98. }
  99. main()
  100. .catch((e) => {
  101. console.error('❌ Error durante el seed:', e)
  102. process.exit(1)
  103. })
  104. .finally(async () => {
  105. await prisma.$disconnect()
  106. })