const fs = require('fs'); const logger = require('./logger'); const cacheFile = 'commandCache.json'; let aiCache = {}; // Загружаем кэш из файла при старте function loadAiCache() { logger.info('Загрузка командного кэша...'); try { if (fs.existsSync(cacheFile)) { const data = fs.readFileSync(cacheFile); aiCache = JSON.parse(data); logger.info('✅ Кэш команд загружен.'); } else { fs.writeFileSync(cacheFile, JSON.stringify({}, null, 2)); logger.info('✅ Кэш команд создан.'); } } catch (error) { logger.error('❌ Ошибка загрузки командного кэша:', error); } } // Сохраняем кэш в файл function saveAiCache() { try { fs.writeFileSync(cacheFile, JSON.stringify(aiCache, null, 2)); } catch (error) { logger.error('❌ Ошибка сохранения командного кэша:', error); } } loadAiCache(); // Поиск запроса в кэше function searchInCache(request) { logger.info(`🔎 Поиск в кэше: ${request}`); if (!request || typeof request !== 'string') return null; const result = aiCache[request]; if (result) { logger.info(`🔁 Найдено в кэше: ${request}`); return result; } return null; } // Сохранение запроса и ответа в кэш // async function saveInCache(request, result) { // if (!request || !result) return; // aiCache[request] = result; // saveAiCache(); // logger.info(`💾 Запрос сохранён в кэш: ${request}`); // } async function saveInCache(request, result) { if (!request || !result) return; let finalResult = result; // Если это результат парсинга команды и он пришёл как строка JSON if (typeof result === 'string' && result.includes('"persona"') && result.includes('"messages"')) { try { finalResult = JSON.parse(result); } catch (error) { logger.warn(`⚠️ Не удалось распарсить JSON команды: ${error.message}`); } } aiCache[request] = finalResult; saveAiCache(); logger.info(`💾 Запрос сохранён в кэш: ${request}`); } // // // Загрузим кэш при старте // loadAiCache(); module.exports = { searchInCache, saveInCache };