feat: новая функция

This commit is contained in:
2025-10-09 16:48:20 +03:00
parent dd2c9988a5
commit 13fb51e447
60 changed files with 7694 additions and 1157 deletions

View File

@@ -0,0 +1,212 @@
# ✅ Отчет о централизации таймаутов
**Дата:** 2025-10-09
**Задача:** Централизовать все таймауты для AI/Ollama/VectorSearch в одном месте
**Статус:** ✅ ВЫПОЛНЕНО
---
## 🎯 **ЦЕЛЬ**
Избежать дублирования и жестко закодированных таймаутов, централизовать управление временем ожидания для всех внешних сервисов.
---
## 📦 **ЦЕНТРАЛИЗОВАННЫЙ СЕРВИС**
### `backend/services/ollamaConfig.js`
Добавлена новая функция `getTimeouts()`:
```javascript
function getTimeouts() {
return {
// Ollama API
ollamaChat: 120000, // 120 сек (2 мин) - генерация ответов LLM
ollamaEmbedding: 60000, // 60 сек (1 мин) - генерация embeddings
ollamaHealth: 5000, // 5 сек - health check
ollamaTags: 10000, // 10 сек - список моделей
// Vector Search
vectorSearch: 30000, // 30 сек - поиск по векторам
vectorUpsert: 60000, // 60 сек - индексация данных
vectorHealth: 5000, // 5 сек - health check
// Blockchain (для быстрых запросов)
blockchainBalance: 3000, // 3 сек - проверка баланса
blockchainNetwork: 10000, // 10 сек - подключение к сети
// Email/IMAP
emailConnection: 30000, // 30 сек - подключение к почте
emailFetch: 60000, // 60 сек - получение писем
// Default для совместимости
default: 120000 // 120 сек
};
}
```
**Экспорт:**
```javascript
module.exports = {
getTimeouts, // ✨ НОВОЕ: Централизованные таймауты
getTimeout, // Обратная совместимость (возвращает ollamaChat)
// ... остальные функции
};
```
---
## ✅ **ИСПРАВЛЕННЫЕ ФАЙЛЫ**
### 1. `backend/services/ollamaConfig.js` ⭐
- **Добавлено:** функция `getTimeouts()`
- **Статус:** ✅ Централизованный источник таймаутов
### 2. `backend/services/vectorSearchClient.js` ✅
- **До:** `timeout: 30000` (жестко закодировано)
- **После:** `timeout: TIMEOUTS.vectorSearch` / `TIMEOUTS.vectorUpsert` / `TIMEOUTS.vectorHealth`
- **Улучшение:** Добавлен импорт `ollamaConfig`, используются централизованные таймауты
### 3. `backend/services/ragService.js` ✅
- **До:** `timeout: ollamaConfig.getTimeout()` (работало, но старый API)
- **После:** `timeout: ollamaConfig.getTimeout()` (теперь использует новый `getTimeouts().ollamaChat`)
- **Статус:** Обратная совместимость сохранена
### 4. `backend/services/aiProviderSettingsService.js` ✅
- **До:** `timeout: 5000` (2 места, жестко закодировано)
- **После:** `timeout: ollamaConfig.getTimeouts().ollamaTags`
- **Улучшение:** Убраны дубли, используется централизованный таймаут
### 5. `backend/routes/ollama.js` ✅
- **До:**
- `const axios = require('axios')` (внутри каждого роута)
- `const ollamaConfig = require('../services/ollamaConfig')` (внутри каждого роута)
- `timeout: 5000` (2 места, жестко закодировано)
- **После:**
- Импорты вынесены наверх файла
- `timeout: timeouts.ollamaTags`
- **Улучшение:** Убраны дубли импортов, используется централизованный таймаут
### 6. `backend/routes/monitoring.js` ✅
- **До:**
- `const ollamaConfig = require('../services/ollamaConfig')` (дубль внутри роута)
- `timeout: 2000` (2 места, жестко закодировано)
- **После:**
- Убран дубль импорта
- `timeout: timeouts.vectorHealth` / `timeouts.ollamaHealth`
- **Улучшение:** Убраны дубли, используются централизованные таймауты
### 7. `backend/scripts/check-ollama-models.js` ✅
- **До:** `timeout: 5000` (жестко закодировано)
- **После:**
- Добавлен импорт `ollamaConfig`
- `timeout: timeouts.ollamaTags`
- **Улучшение:** Используется централизованный таймаут
---
## 🗑️ **УДАЛЕННЫЕ ФАЙЛЫ**
### ❌ `backend/services/notifyOllamaReady.js`
- **Причина:** Файл не использовался в проекте
- **Статус:** Удален
- **Очистка документации:** Убраны упоминания из:
- `aidocs/AI_FULL_INVENTORY.md`
- `aidocs/AI_FILES_QUICK_REFERENCE.md`
---
## 📊 **ИТОГОВАЯ СТАТИСТИКА**
### Исправлено файлов: **7**
-**1** - Центральный сервис (ollamaConfig.js)
-**6** - Обновленные файлы (векторный поиск, роуты, скрипты)
### Удалено файлов: **1**
- ❌ notifyOllamaReady.js (не использовался)
### Убрано жестко закодированных таймаутов: **9**
- vectorSearchClient.js: 3 места
- aiProviderSettingsService.js: 2 места
- routes/ollama.js: 2 места
- routes/monitoring.js: 2 места
- scripts/check-ollama-models.js: 1 место
### Убрано дублей импортов: **3**
- routes/ollama.js: 2 дубля
- routes/monitoring.js: 1 дубль
---
## 🎯 **ПРЕИМУЩЕСТВА ЦЕНТРАЛИЗАЦИИ**
1.**Единая точка управления** - все таймауты в одном месте
2.**Легко изменять** - меняем в одном месте, применяется везде
3.**Документировано** - каждый таймаут с комментарием
4.**Типизировано** - разные таймауты для разных операций
5.**Обратная совместимость** - старый API `getTimeout()` работает
6.**Нет дублей** - импорты вынесены наверх файлов
7.**Чистота кода** - убраны "магические числа"
---
## 🚀 **КАК ИСПОЛЬЗОВАТЬ**
### Для новых файлов:
```javascript
const ollamaConfig = require('./services/ollamaConfig');
const timeouts = ollamaConfig.getTimeouts();
// Для Ollama API
await axios.post(url, data, { timeout: timeouts.ollamaChat });
// Для Vector Search
await axios.post(url, data, { timeout: timeouts.vectorSearch });
// Для Health Checks
await axios.get(url, { timeout: timeouts.ollamaHealth });
```
### Для старого кода (обратная совместимость):
```javascript
const ollamaConfig = require('./services/ollamaConfig');
// Старый API - все еще работает!
const timeout = ollamaConfig.getTimeout(); // Возвращает 120000
```
---
## 📋 **ПРОВЕРОЧНЫЙ ЧЕКЛИСТ**
- [x] Создана функция `getTimeouts()` в `ollamaConfig.js`
- [x] Обновлен `vectorSearchClient.js`
- [x] Обновлен `aiProviderSettingsService.js`
- [x] Обновлен `routes/ollama.js`
- [x] Обновлен `routes/monitoring.js`
- [x] Обновлен `scripts/check-ollama-models.js`
- [x] Убраны дубли импортов
- [x] Удален неиспользуемый `notifyOllamaReady.js`
- [x] Обновлена документация
- [x] Проверено отсутствие жестко закодированных таймаутов
- [x] Проверено отсутствие следов удаленных файлов
---
## ✅ **РЕЗУЛЬТАТ**
Все таймауты для AI/Ollama/VectorSearch централизованы в `ollamaConfig.js`.
Дубли удалены. Жестко закодированные значения заменены на централизованные.
Код стал чище, проще в поддержке и масштабируем.
---
**Дата завершения:** 2025-10-09
**Исполнитель:** AI Assistant
**Статус:** ✅ ГОТОВО К PRODUCTION