change file type and fix agents
This commit is contained in:
124
server/routers/kfu-m-24-1/sber_mobile/moderate.js
Normal file
124
server/routers/kfu-m-24-1/sber_mobile/moderate.js
Normal file
@@ -0,0 +1,124 @@
|
||||
const router = require('express').Router();
|
||||
const { moderationText } = require('./initiatives-ai-agents/moderation.ts');
|
||||
const { generatePicture } = require('./initiatives-ai-agents/picture.ts');
|
||||
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;
|
||||
}
|
||||
|
||||
console.log('Запрос на модерацию:', { title: title.substring(0, 50), body: body.substring(0, 100) });
|
||||
|
||||
const [comment, fixedText, isApproved] = await moderationText(title, body);
|
||||
|
||||
console.log('Результат модерации получен:', { comment, fixedText: fixedText?.substring(0, 100), isApproved });
|
||||
|
||||
// Дополнительная проверка на стороне сервера
|
||||
if (!isApproved && (!comment || comment.trim() === '')) {
|
||||
console.warn('Обнаружен некорректный результат модерации - пустой комментарий при отклонении');
|
||||
}
|
||||
|
||||
res.json({
|
||||
comment,
|
||||
fixedText,
|
||||
isApproved
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error in moderation:', error);
|
||||
res.status(500).json({ error: 'Внутренняя ошибка сервера', details: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Обработчик для генерации изображений
|
||||
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);
|
||||
|
||||
//console.log('Изображение получено, размер буфера:', imageBuffer?.length || 0, 'байт');
|
||||
if (!imageBuffer || imageBuffer.length === 0) {
|
||||
res.status(500).json({ error: 'Получен пустой буфер изображения' });
|
||||
return;
|
||||
}
|
||||
|
||||
//console.log('Начинаем загрузку в Supabase Storage...');
|
||||
|
||||
// Получаем Supabase клиент и создаем имя файла
|
||||
const supabase = getSupabaseClient();
|
||||
const timestamp = Date.now();
|
||||
const filename = `image_${userId || 'user'}_${timestamp}.jpg`;
|
||||
|
||||
let uploadResult;
|
||||
let retries = 0;
|
||||
const maxRetries = 5;
|
||||
|
||||
while (retries < maxRetries) {
|
||||
try {
|
||||
uploadResult = await supabase.storage
|
||||
.from('images')
|
||||
.upload(filename, imageBuffer, {
|
||||
contentType: 'image/jpeg',
|
||||
upsert: true
|
||||
});
|
||||
|
||||
if (!uploadResult.error) {
|
||||
break; // Успешная загрузка
|
||||
}
|
||||
|
||||
//console.warn(`Попытка загрузки ${retries + 1} неудачна:`, uploadResult.error);
|
||||
retries++;
|
||||
|
||||
if (retries < maxRetries) {
|
||||
// Ждем перед повторной попыткой
|
||||
await new Promise(resolve => setTimeout(resolve, 1000 * retries));
|
||||
}
|
||||
} catch (error) {
|
||||
//console.warn(`Попытка загрузки ${retries + 1} неудачна (исключение):`, error.message);
|
||||
retries++;
|
||||
|
||||
if (retries < maxRetries) {
|
||||
// Ждем перед повторной попыткой
|
||||
await new Promise(resolve => setTimeout(resolve, 1000 * retries));
|
||||
} else {
|
||||
throw error; // Перебрасываем ошибку после всех попыток
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (uploadResult?.error) {
|
||||
//console.error('Supabase storage error after all retries:', uploadResult.error);
|
||||
res.status(500).json({ error: 'Ошибка при сохранении изображения после нескольких попыток' });
|
||||
return;
|
||||
}
|
||||
|
||||
//console.log('Изображение успешно загружено в Supabase Storage:', filename);
|
||||
|
||||
// Получаем публичный URL
|
||||
const { data: urlData } = supabase.storage
|
||||
.from('images')
|
||||
.getPublicUrl(filename);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
imageUrl: urlData.publicUrl,
|
||||
imagePath: filename
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
//console.error('Error in image generation:', error);
|
||||
res.status(500).json({ error: 'Внутренняя ошибка сервера', details: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user