| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import dotenv from 'dotenv'
- // Cargar variables de entorno
- dotenv.config()
- // Configuración de variables de entorno
- export const config = {
- // NextAuth
- nextAuth: {
- url: process.env.NEXTAUTH_URL || 'http://localhost:3000',
- secret: process.env.NEXTAUTH_SECRET || 'tu-clave-secreta-por-defecto-cambiar-en-produccion',
- },
-
- // Database
- database: {
- url: process.env.DATABASE_URL || 'file:./dev.db',
- },
-
- // OpenRouter
- openRouter: {
- apiKey: process.env.OPENROUTER_API_KEY || '',
- url: process.env.OPENROUTER_URL || 'https://openrouter.ai/api/v1',
- model: process.env.OPENROUTER_MODEL || 'deepseek/deepseek-chat-v3-0324:free',
- },
-
- // Session Configuration
- session: {
- maxAge: parseInt(process.env.SESSION_MAX_AGE || '4') * 60 * 60, // Convert hours to seconds
- jwtMaxAge: parseInt(process.env.JWT_MAX_AGE || '4') * 60 * 60, // Convert hours to seconds
- },
-
- // UTB API
- utbApi: {
- url: process.env.UTB_API_URL || 'https://sai.utb.edu.ec/v2/ws/auth/login',
- appId: process.env.UTB_API_APP_ID || '',
- appToken: process.env.UTB_API_APP_TOKEN || '',
- },
- // Jitsi Meet
- jitsi: {
- domain: process.env.JITSI_DOMAIN || 'meet.jit.si',
- appId: process.env.JITSI_APP_ID || '',
- appSecret: process.env.JITSI_APP_SECRET || '',
- useJWT: process.env.JITSI_USE_JWT === 'true',
- },
- // Environment
- env: process.env.NODE_ENV || 'development',
- port: process.env.PORT || '3000',
- } as const
- // Logger para verificar variables de entorno
- export function logEnvironmentConfig() {
- console.log('🔧 Configuración de Variables de Entorno:')
- console.log('==========================================')
-
- // NextAuth
- console.log('📋 NextAuth:')
- console.log(` URL: ${config.nextAuth.url}`)
- console.log(` Secret: ${config.nextAuth.secret ? '✅ Configurado' : '❌ No configurado'}`)
-
- // Database
- console.log('🗄️ Database:')
- console.log(` URL: ${config.database.url}`)
-
- // OpenRouter
- console.log('🤖 OpenRouter:')
- console.log(` API Key: ${config.openRouter.apiKey ? '✅ Configurada' : '❌ No configurada'}`)
- console.log(` URL: ${config.openRouter.url}`)
- console.log(` Model: ${config.openRouter.model}`)
-
- // Session
- console.log('🔐 Session:')
- console.log(` Max Age: ${config.session.maxAge / 3600} horas (${config.session.maxAge} segundos)`)
- console.log(` JWT Max Age: ${config.session.jwtMaxAge / 3600} horas (${config.session.jwtMaxAge} segundos)`)
-
- // UTB API
- console.log('🎓 UTB API:')
- console.log(` URL: ${config.utbApi.url}`)
- console.log(` App ID: ${config.utbApi.appId ? '✅ Configurado' : '❌ No configurado'}`)
- console.log(` App Token: ${config.utbApi.appToken ? '✅ Configurado' : '❌ No configurado'}`)
- // Jitsi Meet
- console.log('🎥 Jitsi Meet:')
- console.log(` Domain: ${config.jitsi.domain}`)
- console.log(` App ID: ${config.jitsi.appId ? '✅ Configurado' : '❌ No configurado'}`)
- console.log(` App Secret: ${config.jitsi.appSecret ? '✅ Configurado' : '❌ No configurado'}`)
- console.log(` Use JWT: ${config.jitsi.useJWT ? '✅ Habilitado' : '❌ Deshabilitado'}`)
- // Environment
- console.log('🌍 Environment:')
- console.log(` NODE_ENV: ${config.env}`)
- console.log(` PORT: ${config.port}`)
- console.log('==========================================')
-
- // Advertencias
- if (!config.nextAuth.secret || config.nextAuth.secret === 'tu-clave-secreta-por-defecto-cambiar-en-produccion') {
- console.log('⚠️ ADVERTENCIA: NEXTAUTH_SECRET no está configurado correctamente')
- }
-
- if (!config.openRouter.apiKey) {
- console.log('⚠️ ADVERTENCIA: OPENROUTER_API_KEY no está configurada - El chat funcionará con respuestas de fallback')
- }
-
- if (!config.utbApi.appId || !config.utbApi.appToken) {
- console.log('⚠️ ADVERTENCIA: UTB API credentials no están configuradas')
- }
- if (config.jitsi.useJWT && (!config.jitsi.appId || !config.jitsi.appSecret)) {
- console.log('⚠️ ADVERTENCIA: Jitsi JWT está habilitado pero las credenciales no están configuradas')
- }
- console.log('')
- }
- // Función para validar configuración crítica
- export function validateConfig() {
- const errors: string[] = []
-
- if (!config.nextAuth.secret || config.nextAuth.secret === 'tu-clave-secreta-por-defecto-cambiar-en-produccion') {
- errors.push('NEXTAUTH_SECRET no está configurado correctamente')
- }
-
- if (!config.database.url) {
- errors.push('DATABASE_URL no está configurado')
- }
-
- return {
- isValid: errors.length === 0,
- errors
- }
- }
|