118 lines
5.8 KiB
JavaScript
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;
|