skailan-ai
Version:
Servicio de IA y procesamiento de lenguaje natural para Skailan
192 lines • 9.43 kB
JavaScript
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