Files
multy-stub/server/routers/kfu-m-24-1/sber_mobile/moderation.js
2025-06-14 16:12:03 +03:00

118 lines
5.8 KiB
JavaScript

const router = require('express').Router();
const MODERATION_CONFIG = require('./chat-ai-agent/moderation-config');
const { moderationText } = require('./chat-ai-agent/chat-moderation');
// Получить текущие настройки модерации
router.get('/moderation/config', (req, res) => {
console.log(`⚙️ [Config] Запрос на получение конфигурации модерации`);
console.log(`⚙️ [Config] Текущие настройки:`, MODERATION_CONFIG);
res.json(MODERATION_CONFIG);
});
// Обновить настройки модерации
router.post('/moderation/config', (req, res) => {
console.log(`⚙️ [Config] === ОБНОВЛЕНИЕ КОНФИГУРАЦИИ МОДЕРАЦИИ ===`);
console.log(`⚙️ [Config] Время запроса: ${new Date().toISOString()}`);
console.log(`⚙️ [Config] Полученные данные:`, req.body);
const oldConfig = { ...MODERATION_CONFIG };
const { MODERATION_DELAY, MODERATION_ENABLED, BLOCKED_MESSAGE_TEXT, ENABLE_MODERATION_LOGS } = req.body;
const changes = [];
if (MODERATION_DELAY !== undefined) {
const newValue = parseInt(MODERATION_DELAY);
console.log(`⚙️ [Config] Обновляем MODERATION_DELAY: ${MODERATION_CONFIG.MODERATION_DELAY} -> ${newValue}`);
MODERATION_CONFIG.MODERATION_DELAY = newValue;
changes.push(`MODERATION_DELAY: ${oldConfig.MODERATION_DELAY} -> ${newValue}`);
}
if (MODERATION_ENABLED !== undefined) {
const newValue = Boolean(MODERATION_ENABLED);
console.log(`⚙️ [Config] Обновляем MODERATION_ENABLED: ${MODERATION_CONFIG.MODERATION_ENABLED} -> ${newValue}`);
MODERATION_CONFIG.MODERATION_ENABLED = newValue;
changes.push(`MODERATION_ENABLED: ${oldConfig.MODERATION_ENABLED} -> ${newValue}`);
}
if (BLOCKED_MESSAGE_TEXT !== undefined) {
const newValue = String(BLOCKED_MESSAGE_TEXT);
console.log(`⚙️ [Config] Обновляем BLOCKED_MESSAGE_TEXT: "${MODERATION_CONFIG.BLOCKED_MESSAGE_TEXT}" -> "${newValue}"`);
MODERATION_CONFIG.BLOCKED_MESSAGE_TEXT = newValue;
changes.push(`BLOCKED_MESSAGE_TEXT: "${oldConfig.BLOCKED_MESSAGE_TEXT}" -> "${newValue}"`);
}
if (ENABLE_MODERATION_LOGS !== undefined) {
const newValue = Boolean(ENABLE_MODERATION_LOGS);
console.log(`⚙️ [Config] Обновляем ENABLE_MODERATION_LOGS: ${MODERATION_CONFIG.ENABLE_MODERATION_LOGS} -> ${newValue}`);
MODERATION_CONFIG.ENABLE_MODERATION_LOGS = newValue;
changes.push(`ENABLE_MODERATION_LOGS: ${oldConfig.ENABLE_MODERATION_LOGS} -> ${newValue}`);
}
console.log(`⚙️ [Config] === ИТОГИ ОБНОВЛЕНИЯ ===`);
console.log(`⚙️ [Config] Количество изменений: ${changes.length}`);
if (changes.length > 0) {
changes.forEach((change, index) => {
console.log(`⚙️ [Config] ${index + 1}. ${change}`);
});
} else {
console.log(`⚙️ [Config] Изменений не было внесено`);
}
console.log(`⚙️ [Config] Новая конфигурация:`, MODERATION_CONFIG);
console.log(`⚙️ [Config] === ОБНОВЛЕНИЕ ЗАВЕРШЕНО ===`);
res.json({
success: true,
message: 'Настройки модерации обновлены',
changes: changes,
config: MODERATION_CONFIG
});
});
// Тестовый эндпоинт для проверки модерации
router.post('/moderation/test', async (req, res) => {
const testStartTime = Date.now();
try {
const { text } = req.body;
console.log(`🧪 [Moderation Test] === НАЧАЛО ТЕСТИРОВАНИЯ МОДЕРАЦИИ ===`);
console.log(`🧪 [Moderation Test] Время запуска: ${new Date().toISOString()}`);
console.log(`🧪 [Moderation Test] Текст для тестирования: "${text ? (text.length > 100 ? text.substring(0, 100) + '...' : text) : 'не указан'}"`);
console.log(`🧪 [Moderation Test] Длина текста: ${text ? text.length : 0} символов`);
if (!text) {
console.log(`❌ [Moderation Test] Отклонен: текст не предоставлен`);
return res.status(400).json({ error: 'text is required' });
}
console.log(`🧪 [Moderation Test] Отправляем текст на модерацию...`);
const [comment, isApproved, finalMessage] = await moderationText('', text);
const testTime = Date.now() - testStartTime;
console.log(`🧪 [Moderation Test] === РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ===`);
console.log(`🧪 [Moderation Test] Время тестирования: ${testTime}мс`);
console.log(`🧪 [Moderation Test] Результат: ${isApproved ? '✅ ОДОБРЕНО' : '❌ ОТКЛОНЕНО'}`);
console.log(`🧪 [Moderation Test] Комментарий: "${comment || 'отсутствует'}"`);
console.log(`🧪 [Moderation Test] Финальное сообщение: "${finalMessage}"`);
console.log(`🧪 [Moderation Test] === ТЕСТИРОВАНИЕ ЗАВЕРШЕНО ===`);
res.json({
original_text: text,
is_approved: isApproved,
comment: comment,
final_message: finalMessage,
processing_time_ms: testTime
});
} catch (error) {
const testTime = Date.now() - testStartTime;
console.error(`❌ [Moderation Test] === ОШИБКА ТЕСТИРОВАНИЯ ===`);
console.error(`❌ [Moderation Test] Время до ошибки: ${testTime}мс`);
console.error(`❌ [Moderation Test] Ошибка:`, error);
console.error(`❌ [Moderation Test] === КОНЕЦ ОБРАБОТКИ ОШИБКИ ===`);
res.status(500).json({
error: 'Moderation test failed',
details: error.message,
processing_time_ms: testTime
});
}
});
module.exports = router;