UNPKG

skailan-ai

Version:

Servicio de IA y procesamiento de lenguaje natural para Skailan

192 lines 9.43 kB
import { ContentGenerationService } from '../../domain/services/ContentGenerationService'; import { LLMConfigPrismaRepository } from '../../infra/database/prisma/LLMConfigPrismaRepository'; export const generateEmail = async (req, res) => { try { const { emailData, llmConfigName, options } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!emailData) { return res.status(400).json({ error: 'Email data is required.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const llmConfig = await llmConfigRepository.findByName(llmConfigName || 'default', organizationId); if (!llmConfig || !llmConfig.isActive) { return res.status(400).json({ error: 'LLM configuration not found or inactive.' }); } const contentService = new ContentGenerationService(llmConfig); const result = await contentService.generateEmail(emailData, options); res.status(200).json({ content: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating email.' }); } }; export const generateQuote = async (req, res) => { try { const { quoteData, llmConfigName, options } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!quoteData) { return res.status(400).json({ error: 'Quote data is required.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const llmConfig = await llmConfigRepository.findByName(llmConfigName || 'default', organizationId); if (!llmConfig || !llmConfig.isActive) { return res.status(400).json({ error: 'LLM configuration not found or inactive.' }); } const contentService = new ContentGenerationService(llmConfig); const result = await contentService.generateQuote(quoteData, options); res.status(200).json({ content: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating quote.' }); } }; export const generateReport = async (req, res) => { try { const { reportData, llmConfigName, options } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!reportData) { return res.status(400).json({ error: 'Report data is required.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const llmConfig = await llmConfigRepository.findByName(llmConfigName || 'default', organizationId); if (!llmConfig || !llmConfig.isActive) { return res.status(400).json({ error: 'LLM configuration not found or inactive.' }); } const contentService = new ContentGenerationService(llmConfig); const result = await contentService.generateReport(reportData, options); res.status(200).json({ content: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating report.' }); } }; export const generateConversationSummary = async (req, res) => { try { const { messages, llmConfigName, options } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!messages || !Array.isArray(messages)) { return res.status(400).json({ error: 'Messages array is required.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const llmConfig = await llmConfigRepository.findByName(llmConfigName || 'default', organizationId); if (!llmConfig || !llmConfig.isActive) { return res.status(400).json({ error: 'LLM configuration not found or inactive.' }); } const contentService = new ContentGenerationService(llmConfig); const result = await contentService.generateConversationSummary(messages, options); res.status(200).json({ summary: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating conversation summary.' }); } }; export const generateBotResponse = async (req, res) => { try { const { userMessage, context, intent, llmConfigName, options } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!userMessage) { return res.status(400).json({ error: 'User message is required.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const llmConfig = await llmConfigRepository.findByName(llmConfigName || 'default', organizationId); if (!llmConfig || !llmConfig.isActive) { return res.status(400).json({ error: 'LLM configuration not found or inactive.' }); } const contentService = new ContentGenerationService(llmConfig); const result = await contentService.generateBotResponse(userMessage, context || '', intent || '', options); res.status(200).json({ response: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating bot response.' }); } }; export const generateMarketingContent = async (req, res) => { try { const { product, targetAudience, purpose, llmConfigName, options } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!product || !targetAudience || !purpose) { return res.status(400).json({ error: 'Product, target audience, and purpose are required.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const llmConfig = await llmConfigRepository.findByName(llmConfigName || 'default', organizationId); if (!llmConfig || !llmConfig.isActive) { return res.status(400).json({ error: 'LLM configuration not found or inactive.' }); } const contentService = new ContentGenerationService(llmConfig); const result = await contentService.generateMarketingContent(product, targetAudience, purpose, options); res.status(200).json({ content: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating marketing content.' }); } }; export const generateDocumentation = async (req, res) => { try { const { topic, audience, purpose, llmConfigName, options } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!topic || !audience || !purpose) { return res.status(400).json({ error: 'Topic, audience, and purpose are required.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const llmConfig = await llmConfigRepository.findByName(llmConfigName || 'default', organizationId); if (!llmConfig || !llmConfig.isActive) { return res.status(400).json({ error: 'LLM configuration not found or inactive.' }); } const contentService = new ContentGenerationService(llmConfig); const result = await contentService.generateDocumentation(topic, audience, purpose, options); res.status(200).json({ documentation: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating documentation.' }); } }; //# sourceMappingURL=contentController.js.map