const router = require('express').Router(); const { moderationText } = require('./initiatives-ai-agents/moderation'); const { generatePicture } = require('./initiatives-ai-agents/picture'); const { getSupabaseClient } = require('./supabaseClient'); // Обработчик для модерации текста router.post('/moderate', async (req, res) => { try { const { title, body } = req.body; if (!title || !body) { res.status(400).json({ error: 'Заголовок и текст обязательны' }); return; } const [comment, fixedText, isApproved] = await moderationText(title, body); res.json({ comment, fixedText, isApproved }); } catch (error) { res.status(500).json({ error: 'Внутренняя ошибка сервера' }); } }); // Обработчик для генерации изображений router.post('/generate-image', async (req, res) => { try { const { prompt, userId } = req.body; if (!prompt) { res.status(400).json({ error: 'Необходимо указать запрос для генерации' }); return; } // Получаем изображение const imageBuffer = await generatePicture(prompt); // Получаем Supabase клиент const supabase = getSupabaseClient(); // Генерируем уникальное имя файла const timestamp = Date.now(); const filename = `image_${userId || 'user'}_${timestamp}.jpg`; // Загружаем в Supabase const { data, error } = await supabase.storage .from('images') .upload(filename, imageBuffer, { contentType: 'image/jpeg', upsert: true }); if (error) { res.status(500).json({ error: 'Ошибка при сохранении изображения' }); return; } // Получаем публичный URL изображения const { data: urlData } = supabase.storage .from('images') .getPublicUrl(filename); res.json({ success: true, imageUrl: urlData.publicUrl, imagePath: filename }); } catch (error) { res.status(500).json({ error: 'Внутренняя ошибка сервера' }); } }); module.exports = router;