feat: новая функция
This commit is contained in:
911
aidocs/AI_DATABASE_STRUCTURE.md
Normal file
911
aidocs/AI_DATABASE_STRUCTURE.md
Normal file
@@ -0,0 +1,911 @@
|
||||
# Структура базы данных для AI Ассистента
|
||||
|
||||
**Дата проверки:** 2025-10-08
|
||||
**Метод:** Прямая проверка через PostgreSQL
|
||||
**Статус:** ✅ ПРОВЕРКА ЗАВЕРШЕНА
|
||||
|
||||
---
|
||||
|
||||
## 📊 Список AI таблиц
|
||||
|
||||
Найдено таблиц: **27 таблиц** (25 связаны с AI, 2 CMS)
|
||||
|
||||
---
|
||||
|
||||
## 1. `ai_assistant_settings` ⭐ КЛЮЧЕВАЯ
|
||||
|
||||
**Назначение:** Основные настройки AI ассистента
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `selected_rag_tables` - INTEGER[] - массив ID RAG таблиц для использования
|
||||
- `languages` - TEXT[] - массив поддерживаемых языков
|
||||
- `updated_at` - TIMESTAMP - время последнего обновления (default: now())
|
||||
- `updated_by` - INTEGER - кто обновил (user_id)
|
||||
- `rules_id` - INTEGER (FK → ai_assistant_rules) - ID правил для AI
|
||||
- `telegram_settings_id` - INTEGER (FK → telegram_settings) - ID настроек Telegram
|
||||
- `email_settings_id` - INTEGER (FK → email_settings) - ID настроек Email
|
||||
- `system_prompt_encrypted` - TEXT - зашифрованный системный промпт
|
||||
- `model_encrypted` - TEXT - зашифрованное название модели
|
||||
- `system_message_encrypted` - TEXT - зашифрованное системное сообщение
|
||||
- `embedding_model_encrypted` - TEXT - зашифрованное название embedding модели
|
||||
- `system_message` - TEXT - системное сообщение (расшифрованное)
|
||||
- `embedding_model` - VARCHAR(128) - embedding модель (расшифрованное)
|
||||
|
||||
**Связи:**
|
||||
- → `ai_assistant_rules` (через rules_id)
|
||||
- → `telegram_settings` (через telegram_settings_id)
|
||||
- → `email_settings` (через email_settings_id)
|
||||
|
||||
**Используется в:**
|
||||
- aiAssistantSettingsService.js (getSettings, updateSettings)
|
||||
- conversationService.js (getRagTableId)
|
||||
- ai-assistant.js (generateResponse)
|
||||
- routes/settings.js (API)
|
||||
|
||||
---
|
||||
|
||||
## 2. `ai_assistant_rules` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Правила и инструкции для AI ассистента
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `created_at` - TIMESTAMP - дата создания (default: now())
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: now())
|
||||
- `name_encrypted` - TEXT - зашифрованное название правила
|
||||
- `description_encrypted` - TEXT - зашифрованное описание правила
|
||||
- `rules_encrypted` - TEXT - зашифрованные правила (JSON) ✅ ДОБАВЛЕНО
|
||||
|
||||
**Связи:**
|
||||
- ← `ai_assistant_settings.rules_id` ссылается на эту таблицу
|
||||
|
||||
**Используется в:**
|
||||
- aiAssistantRulesService.js (getAllRules, getRuleById, createRule)
|
||||
- ai-assistant.js (получение правил)
|
||||
- routes/settings.js (CRUD API)
|
||||
|
||||
---
|
||||
|
||||
## 3. `ai_providers_settings` ⭐ КЛЮЧЕВАЯ
|
||||
|
||||
**Назначение:** Настройки AI провайдеров (Ollama, OpenAI, Anthropic, Google)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `created_at` - TIMESTAMP NOT NULL - дата создания (default: now())
|
||||
- `updated_at` - TIMESTAMP NOT NULL - дата обновления (default: now())
|
||||
- `provider_encrypted` - TEXT - зашифрованное название провайдера ('ollama', 'openai', etc.)
|
||||
- `api_key_encrypted` - TEXT - зашифрованный API ключ
|
||||
- `base_url_encrypted` - TEXT - зашифрованный базовый URL
|
||||
- `selected_model_encrypted` - TEXT - зашифрованное название выбранной модели
|
||||
- `embedding_model_encrypted` - TEXT - зашифрованное название embedding модели
|
||||
- `embedding_model` - VARCHAR(128) - embedding модель (незашифрованное, дублирует?)
|
||||
|
||||
**Связи:**
|
||||
- Нет внешних ключей
|
||||
|
||||
**Используется в:**
|
||||
- aiProviderSettingsService.js (getProviderSettings, upsertProviderSettings)
|
||||
- ollamaConfig.js (loadSettingsFromDb - загружает настройки Ollama)
|
||||
- ragService.js (getProviderSettings для вызова разных AI)
|
||||
- routes/settings.js (CRUD API)
|
||||
|
||||
---
|
||||
|
||||
## 4. `messages` ⭐ КЛЮЧЕВАЯ
|
||||
|
||||
**Назначение:** Все сообщения пользователей и AI ответы
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `conversation_id` - INTEGER (FK → conversations) - ID беседы
|
||||
- `sender_id` - INTEGER - ID отправителя (для админских сообщений)
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `user_id` - INTEGER (FK → users) - ID пользователя-владельца беседы
|
||||
- `tokens_used` - INTEGER - количество токенов (default: 0)
|
||||
- `is_processed` - BOOLEAN - обработано ли (default: false)
|
||||
- `attachment_size` - BIGINT - размер вложения в байтах
|
||||
- `attachment_data` - BYTEA - бинарные данные вложения
|
||||
- `sender_type_encrypted` - TEXT - тип отправителя ('user', 'assistant', 'editor')
|
||||
- `content_encrypted` - TEXT - текст сообщения
|
||||
- `channel_encrypted` - TEXT - канал ('web', 'telegram', 'email')
|
||||
- `role_encrypted` - TEXT - роль
|
||||
- `attachment_filename_encrypted` - TEXT - имя файла
|
||||
- `attachment_mimetype_encrypted` - TEXT - MIME тип
|
||||
- `direction_encrypted` - TEXT - направление ('in', 'out')
|
||||
- `message_id_encrypted` - TEXT - ID сообщения для дедупликации
|
||||
- `message_type` - VARCHAR(20) NOT NULL - тип ('user_chat', 'admin_chat')
|
||||
|
||||
**Индексы:**
|
||||
- idx_messages_conversation_id
|
||||
- idx_messages_created_at
|
||||
- idx_messages_message_type
|
||||
- idx_messages_user_id
|
||||
|
||||
**Связи:**
|
||||
- → `conversations` (ON DELETE CASCADE)
|
||||
- → `users` (ON DELETE CASCADE)
|
||||
|
||||
**Триггеры:**
|
||||
- `trg_set_message_user_id` - автоустановка user_id
|
||||
|
||||
**Используется в:**
|
||||
- unifiedMessageProcessor.js (saveUserMessage)
|
||||
- messageDeduplicationService.js (сохранение)
|
||||
- conversationService.js (история)
|
||||
- routes/messages.js, routes/chat.js
|
||||
|
||||
---
|
||||
|
||||
## 5. `conversations` ⭐ КЛЮЧЕВАЯ
|
||||
|
||||
**Назначение:** Беседы (диалоги) пользователей с AI
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор беседы
|
||||
- `user_id` - INTEGER (FK → users) - ID пользователя-владельца
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
- `title_encrypted` - TEXT - зашифрованный заголовок беседы
|
||||
- `conversation_type` - VARCHAR(50) - тип беседы (default: 'user_chat')
|
||||
- `'user_chat'` - обычный чат пользователя
|
||||
- `'admin_chat'` - приватный чат между админами
|
||||
|
||||
**Индексы:**
|
||||
- idx_conversations_conversation_type
|
||||
- idx_conversations_created_at
|
||||
- idx_conversations_user_id
|
||||
|
||||
**Связи:**
|
||||
- → `users` (user_id, ON DELETE CASCADE)
|
||||
- ← `conversation_participants` (для многопользовательских чатов)
|
||||
- ← `messages` (все сообщения беседы)
|
||||
|
||||
**Используется в:**
|
||||
- conversationService.js (findOrCreateConversation, getConversationHistory)
|
||||
- unifiedMessageProcessor.js (создание беседы)
|
||||
- guestMessageService.js (перенос гостевых сообщений)
|
||||
- routes/messages.js (CRUD беседы)
|
||||
|
||||
---
|
||||
|
||||
## 6. `message_deduplication` ⭐ КЛЮЧЕВАЯ
|
||||
|
||||
**Назначение:** Предотвращение дублирования сообщений (дедупликация)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `channel` - VARCHAR(20) NOT NULL - канал ('web', 'telegram', 'email')
|
||||
- `message_id_hash` - VARCHAR(64) NOT NULL - SHA-256 хеш ID
|
||||
- `user_id` - INTEGER NOT NULL (FK → users) - ID пользователя
|
||||
- `sender_type` - VARCHAR(20) NOT NULL - тип отправителя ('user', 'assistant')
|
||||
- `original_message_id_encrypted` - TEXT - оригинальный ID
|
||||
- `processed_at` - TIMESTAMP WITH TIME ZONE - время обработки (default: now())
|
||||
- `expires_at` - TIMESTAMP WITH TIME ZONE - время истечения
|
||||
|
||||
**Индексы:**
|
||||
- idx_message_dedup_expires
|
||||
- idx_message_dedup_lookup (channel, hash, user_id, sender_type)
|
||||
- idx_message_dedup_user_channel
|
||||
- UNIQUE (channel, hash, user_id, sender_type)
|
||||
|
||||
**Связи:**
|
||||
- → `users` (ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- messageDeduplicationService.js
|
||||
- unifiedMessageProcessor.js
|
||||
- ai-assistant.js
|
||||
|
||||
---
|
||||
|
||||
## 7. `guest_messages` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Временное хранение сообщений гостей
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK)
|
||||
- `is_ai` - BOOLEAN - от AI? (default: false)
|
||||
- `created_at` - TIMESTAMP WITH TIME ZONE (default: now())
|
||||
- `attachment_size` - BIGINT
|
||||
- `attachment_data` - BYTEA
|
||||
- `guest_id_encrypted` - TEXT - ID гостя (sessionID)
|
||||
- `content_encrypted` - TEXT
|
||||
- `language_encrypted` - TEXT
|
||||
- `attachment_filename_encrypted` - TEXT
|
||||
- `attachment_mimetype_encrypted` - TEXT
|
||||
- `attachment_filename` - TEXT (дубль?)
|
||||
- `attachment_mimetype` - TEXT (дубль?)
|
||||
|
||||
**Связи:**
|
||||
- Нет FK (временная)
|
||||
|
||||
**Используется в:**
|
||||
- guestService.js
|
||||
- guestMessageService.js (перенос после auth)
|
||||
|
||||
**Цикл:**
|
||||
1. Гость пишет → сохраняется
|
||||
2. Авторизация → перенос в messages
|
||||
3. Удаление из guest_messages
|
||||
|
||||
---
|
||||
|
||||
## 8. `guest_user_mapping` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Связь между гостями и зарегистрированными пользователями
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `user_id` - INTEGER NOT NULL (FK → users) - ID пользователя
|
||||
- `processed` - BOOLEAN - обработаны ли сообщения (default: false)
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `guest_id_encrypted` - TEXT - зашифрованный ID гостя (sessionID)
|
||||
|
||||
**Индексы:**
|
||||
- idx_guest_user_mapping_guest_id_encrypted - UNIQUE
|
||||
- idx_guest_user_mapping_user_id
|
||||
|
||||
**Связи:**
|
||||
- → `users` (user_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- guestMessageService.js (processGuestMessages - проверка и создание mapping)
|
||||
|
||||
**Логика:**
|
||||
- При аутентификации гостя создается запись
|
||||
- `processed = false` → сообщения еще не перенесены
|
||||
- `processed = true` → сообщения уже перенесены в messages
|
||||
|
||||
---
|
||||
|
||||
## 9. `telegram_settings` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Настройки Telegram бота
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `created_at` - TIMESTAMP NOT NULL - дата создания (default: now())
|
||||
- `updated_at` - TIMESTAMP NOT NULL - дата обновления (default: now())
|
||||
- `bot_token_encrypted` - TEXT - зашифрованный токен Telegram бота
|
||||
- `bot_username_encrypted` - TEXT - зашифрованное имя бота
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- ← `ai_assistant_settings.telegram_settings_id` ссылается на эту таблицу
|
||||
|
||||
**Используется в:**
|
||||
- telegramBot.js (loadSettings - загрузка токена)
|
||||
- botsSettings.js (getTelegramSettings, saveTelegramSettings, testConnection)
|
||||
- routes/admin (API для настройки Telegram)
|
||||
|
||||
---
|
||||
|
||||
## 10. `email_settings` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Настройки Email бота (SMTP + IMAP)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `smtp_port` - INTEGER NOT NULL - порт SMTP (обычно 465)
|
||||
- `imap_port` - INTEGER - порт IMAP (обычно 993)
|
||||
- `created_at` - TIMESTAMP NOT NULL - дата создания (default: now())
|
||||
- `updated_at` - TIMESTAMP NOT NULL - дата обновления (default: now())
|
||||
- `smtp_host_encrypted` - TEXT - зашифрованный хост SMTP
|
||||
- `smtp_user_encrypted` - TEXT - зашифрованный пользователь SMTP
|
||||
- `smtp_password_encrypted` - TEXT - зашифрованный пароль SMTP
|
||||
- `imap_host_encrypted` - TEXT - зашифрованный хост IMAP
|
||||
- `from_email_encrypted` - TEXT - зашифрованный email отправителя
|
||||
- `imap_user_encrypted` - TEXT - зашифрованный пользователь IMAP
|
||||
- `imap_password_encrypted` - TEXT - зашифрованный пароль IMAP
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- ← `ai_assistant_settings.email_settings_id` ссылается на эту таблицу
|
||||
|
||||
**Используется в:**
|
||||
- emailBot.js (loadSettings - создание SMTP транспортера и IMAP соединения)
|
||||
- botsSettings.js (getEmailSettings, saveEmailSettings, testEmailSMTP, testEmailIMAP)
|
||||
- routes/admin (API для настройки Email)
|
||||
|
||||
---
|
||||
|
||||
## 11. `is_rag_source` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Источники данных для RAG (справочник)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор источника
|
||||
- `name_encrypted` - TEXT - зашифрованное название источника
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- ← `user_tables.is_rag_source_id` ссылается на эту таблицу
|
||||
|
||||
**Используется в:**
|
||||
- Связывает RAG таблицы с типом источника данных
|
||||
- user_tables имеет default: is_rag_source_id = 2
|
||||
|
||||
**Примеры источников:**
|
||||
- ID 1: "FAQ"
|
||||
- ID 2: "База знаний"
|
||||
- ID 3: "Документация"
|
||||
(зависит от данных в БД)
|
||||
|
||||
---
|
||||
|
||||
## 12. `user_tables` ⭐ КЛЮЧЕВАЯ (RAG)
|
||||
|
||||
**Назначение:** Пользовательские таблицы с данными для RAG базы знаний
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор таблицы
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
- `is_rag_source_id` - INTEGER (FK → is_rag_source) - тип источника (default: 2)
|
||||
- `name_encrypted` - TEXT - зашифрованное название таблицы
|
||||
- `description_encrypted` - TEXT - зашифрованное описание
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- → `is_rag_source` (is_rag_source_id)
|
||||
- ← `user_columns` (table_id, ON DELETE CASCADE)
|
||||
- ← `user_rows` (table_id, ON DELETE CASCADE)
|
||||
- ← `user_table_relations` (to_table_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- ragService.js (getTableData - получение данных для RAG)
|
||||
- routes/tables.js (CRUD таблиц)
|
||||
- routes/rag.js (выбор таблицы для RAG запроса)
|
||||
|
||||
**Структура RAG:**
|
||||
```
|
||||
user_tables (таблица)
|
||||
└─ user_columns (колонки с purpose)
|
||||
└─ user_rows (строки)
|
||||
└─ user_cell_values (значения ячеек)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 13. `user_columns` ⭐ КЛЮЧЕВАЯ (RAG)
|
||||
|
||||
**Назначение:** Колонки пользовательских таблиц с метаданными для RAG
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор колонки
|
||||
- `table_id` - INTEGER NOT NULL (FK → user_tables) - ID таблицы
|
||||
- `order` - INTEGER - порядок отображения (default: 0)
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
- `name_encrypted` - TEXT - зашифрованное название колонки
|
||||
- `type_encrypted` - TEXT - зашифрованный тип ('text', 'number', 'date', etc.)
|
||||
- `placeholder_encrypted` - TEXT - зашифрованный плейсхолдер
|
||||
- `placeholder` - VARCHAR(255) - плейсхолдер для RAG (UNIQUE)
|
||||
- `options` - JSONB - дополнительные опции (default: '{}')
|
||||
- `purpose` - назначение колонки ('question', 'answer', 'context', 'product', 'priority', 'date')
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- idx_user_columns_options (GIN) - для быстрого поиска по JSONB
|
||||
- user_columns_placeholder_key (UNIQUE) - уникальность плейсхолдеров
|
||||
|
||||
**Связи:**
|
||||
- → `user_tables` (table_id, ON DELETE CASCADE)
|
||||
- ← `user_table_relations` (column_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- ragService.js (getTableData - определение колонок по purpose)
|
||||
- routes/tables.js (CRUD колонок)
|
||||
|
||||
**Важно для RAG:**
|
||||
- `options.purpose` определяет роль колонки:
|
||||
- 'question' - вопрос для поиска
|
||||
- 'answer' - ответ
|
||||
- 'context' - контекст
|
||||
- 'product', 'priority', 'date' - метаданные
|
||||
|
||||
---
|
||||
|
||||
## 14. `user_rows` ⭐ КЛЮЧЕВАЯ (RAG)
|
||||
|
||||
**Назначение:** Строки данных в пользовательских таблицах (записи для RAG)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор строки
|
||||
- `table_id` - INTEGER NOT NULL (FK → user_tables) - ID таблицы
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
- `order` - INTEGER - порядок отображения (default: 0)
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- → `user_tables` (table_id, ON DELETE CASCADE)
|
||||
- ← `user_cell_values` (row_id, ON DELETE CASCADE)
|
||||
- ← `user_table_relations` (from_row_id, to_row_id, ON DELETE CASCADE)
|
||||
- ← `user_tag_links` (tag_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- ragService.js (getTableData - получение всех строк таблицы)
|
||||
- routes/tables.js (CRUD строк)
|
||||
|
||||
**Важно:**
|
||||
- Каждая строка = одна запись в RAG (например, один вопрос-ответ)
|
||||
- Значения хранятся в `user_cell_values`
|
||||
|
||||
---
|
||||
|
||||
## 15. `user_cell_values` ⭐ КЛЮЧЕВАЯ (RAG)
|
||||
|
||||
**Назначение:** Значения ячеек в пользовательских таблицах (данные для RAG)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор значения
|
||||
- `row_id` - INTEGER NOT NULL (FK → user_rows) - ID строки
|
||||
- `column_id` - INTEGER NOT NULL (FK → user_columns) - ID колонки ✅ ИСПРАВЛЕНО
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
- `value_encrypted` - TEXT - зашифрованное значение ячейки
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- user_cell_values_row_id_column_id_key (UNIQUE) - уникальная пара (row_id, column_id)
|
||||
|
||||
**Связи:**
|
||||
- → `user_rows` (row_id, ON DELETE CASCADE)
|
||||
- → `user_columns` (column_id, ON DELETE CASCADE) ✅ ДОБАВЛЕНО
|
||||
|
||||
**Используется в:**
|
||||
- ragService.js (getTableData - получение всех значений для построения RAG данных)
|
||||
- routes/tables.js (CRUD значений ячеек)
|
||||
|
||||
**Как работает RAG:**
|
||||
1. ragService получает все cell_values для строк таблицы
|
||||
2. Группирует по row_id
|
||||
3. Находит значения по column_id с нужным purpose (question/answer/context)
|
||||
4. Формирует данные для векторного поиска
|
||||
|
||||
---
|
||||
|
||||
## 16. `conversation_participants` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Участники многопользовательских бесед (для admin_chat)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `conversation_id` - INTEGER (FK → conversations) - ID беседы
|
||||
- `user_id` - INTEGER (FK → users) - ID участника
|
||||
- `created_at` - TIMESTAMP - дата добавления (default: CURRENT_TIMESTAMP)
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- conversation_participants_conversation_id_user_id_key (UNIQUE) - пара (conversation_id, user_id)
|
||||
- idx_conversation_participants_conversation_id
|
||||
- idx_conversation_participants_user_id
|
||||
|
||||
**Связи:**
|
||||
- → `conversations` (conversation_id, ON DELETE CASCADE)
|
||||
- → `users` (user_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- routes/messages.js (создание admin_chat бесед между админами)
|
||||
- routes/chat.js (поиск приватных бесед)
|
||||
|
||||
**Логика:**
|
||||
- Для обычных чатов (`user_chat`) - НЕ используется (один владелец)
|
||||
- Для админских чатов (`admin_chat`) - хранит всех участников беседы
|
||||
|
||||
---
|
||||
|
||||
## 17. `users` ⭐ КРИТИЧЕСКАЯ
|
||||
|
||||
**Назначение:** Пользователи системы (основа для всех AI взаимодействий)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор пользователя
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
- `role` - user_role ENUM - роль пользователя (default: 'user')
|
||||
- 'user' - обычный пользователь
|
||||
- 'editor' - администратор-редактор
|
||||
- 'readonly' - администратор только для чтения
|
||||
- `is_blocked` - BOOLEAN NOT NULL - заблокирован ли (default: false)
|
||||
- `blocked_at` - TIMESTAMP - время блокировки
|
||||
- `username_encrypted` - TEXT - зашифрованное имя пользователя
|
||||
- `status_encrypted` - TEXT - зашифрованный статус
|
||||
- `first_name_encrypted` - TEXT - зашифрованное имя
|
||||
- `last_name_encrypted` - TEXT - зашифрованная фамилия
|
||||
- `preferred_language` - JSONB - предпочитаемый язык
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- idx_users_role
|
||||
|
||||
**Связи (Referenced by):**
|
||||
- ← conversation_participants (9 таблиц ссылаются!)
|
||||
- ← conversations
|
||||
- ← message_deduplication
|
||||
- ← global_read_status
|
||||
- ← guest_user_mapping
|
||||
- ← messages
|
||||
- ← user_identities
|
||||
- ← user_preferences
|
||||
- ← user_tag_links
|
||||
- ← verification_codes
|
||||
|
||||
**Используется в:**
|
||||
- identity-service.js (создание пользователей)
|
||||
- auth-service.js (проверка ролей)
|
||||
- userUtils.js (isUserBlocked)
|
||||
- ВСЕ AI сервисы (через связи)
|
||||
|
||||
---
|
||||
|
||||
## 18. `user_identities` ⭐ КРИТИЧЕСКАЯ
|
||||
|
||||
**Назначение:** Идентификаторы пользователей (wallet, email, telegram)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `user_id` - INTEGER (FK → users) - ID пользователя
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `provider_encrypted` - TEXT - зашифрованный провайдер ('wallet', 'email', 'telegram')
|
||||
- `provider_id_encrypted` - TEXT - зашифрованный идентификатор (адрес, email, telegram ID)
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- idx_user_identities_user_id
|
||||
|
||||
**Связи:**
|
||||
- → `users` (user_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- identity-service.js (findUserByIdentity, saveIdentity, linkWalletToUser)
|
||||
- unifiedMessageProcessor.js (authenticateUser - поиск пользователя по Telegram/Email)
|
||||
- telegramBot.js, emailBot.js (связь external ID с user_id)
|
||||
- routes/identities.js (управление идентификаторами)
|
||||
- routes/messages.js (broadcast - поиск каналов пользователя)
|
||||
|
||||
**Логика:**
|
||||
- Один пользователь может иметь несколько идентификаторов (wallet + email + telegram)
|
||||
- При входе через любой канал - система находит или создает пользователя
|
||||
|
||||
---
|
||||
|
||||
## 19. `global_read_status` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Глобальный статус прочтения сообщений для user_chat
|
||||
|
||||
**Столбцы:**
|
||||
- `user_id` - INTEGER (PK, FK → users) - ID пользователя
|
||||
- `last_read_at` - TIMESTAMP NOT NULL - время последнего прочитанного сообщения
|
||||
- `updated_by_admin_id` - INTEGER NOT NULL - ID админа, который обновил статус
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: user_id
|
||||
- idx_global_read_status_last_read_at
|
||||
- idx_global_read_status_user_id
|
||||
|
||||
**Связи:**
|
||||
- → `users` (user_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- routes/messages.js (mark-read, read-status для user_chat)
|
||||
|
||||
**Логика:**
|
||||
- Один статус на пользователя (общий для всех админов)
|
||||
- Для обычных чатов (`user_chat`)
|
||||
- Для админских чатов используется `admin_read_messages`
|
||||
|
||||
---
|
||||
|
||||
## 20. `admin_read_messages` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Персональный статус прочтения для admin_chat
|
||||
|
||||
**Столбцы:**
|
||||
- `admin_id` - INTEGER NOT NULL (PK, FK → users) - ID администратора
|
||||
- `user_id` - INTEGER NOT NULL (PK, FK → users) - ID пользователя/другого админа
|
||||
- `last_read_at` - TIMESTAMP NOT NULL - время последнего прочитанного сообщения
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: (admin_id, user_id) - составной ключ
|
||||
|
||||
**Связи:**
|
||||
- → `users` (admin_id, ON DELETE CASCADE) ✅ ДОБАВЛЕНО
|
||||
- → `users` (user_id, ON DELETE CASCADE) ✅ ДОБАВЛЕНО
|
||||
|
||||
**Используется в:**
|
||||
- routes/messages.js (mark-read, read-status для admin_chat)
|
||||
|
||||
**Логика:**
|
||||
- Персональный статус для каждого админа
|
||||
- Для приватных чатов между админами (`admin_chat`)
|
||||
- Каждый админ имеет свой статус прочтения
|
||||
|
||||
**Отличие от global_read_status:**
|
||||
- global_read_status - общий для всех админов (user_chat)
|
||||
- admin_read_messages - персональный для каждого админа (admin_chat)
|
||||
|
||||
---
|
||||
|
||||
## 21. `user_tag_links` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Связь пользователей с тегами (для RAG фильтрации)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `user_id` - INTEGER NOT NULL (FK → users) - ID пользователя
|
||||
- `tag_id` - INTEGER NOT NULL (FK → user_rows) - ID тега (строка из таблицы тегов)
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- idx_user_tag_links_tag_id
|
||||
- idx_user_tag_links_user_id
|
||||
- user_tag_links_user_id_tag_id_key (UNIQUE) - уникальная пара (user_id, tag_id)
|
||||
|
||||
**Связи:**
|
||||
- → `users` (user_id, ON DELETE CASCADE)
|
||||
- → `user_rows` (tag_id, ON DELETE CASCADE) - теги хранятся как строки в RAG таблицах
|
||||
|
||||
**Используется в:**
|
||||
- ragService.js (фильтрация данных по пользовательским тегам)
|
||||
- routes/tables.js (управление тегами пользователей)
|
||||
|
||||
**Логика:**
|
||||
- Теги позволяют фильтровать RAG данные по пользователю
|
||||
- Один пользователь может иметь несколько тегов
|
||||
- Используется для персонализации AI ответов
|
||||
|
||||
---
|
||||
|
||||
## 22. `roles` ⚠️ ВОЗМОЖНО УСТАРЕВШАЯ
|
||||
|
||||
**Назначение:** Роли пользователей (возможно старая таблица)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `name_encrypted` - TEXT - зашифрованное название роли
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- Нет внешних ключей
|
||||
- Нет Referenced by (никто не ссылается!)
|
||||
|
||||
**⚠️ ПРОБЛЕМА:**
|
||||
- Таблица существует, но НЕ используется
|
||||
- В `users` роль хранится как ENUM `user_role`, а не FK
|
||||
- Возможно старая таблица, которую можно удалить
|
||||
|
||||
**Используется в:**
|
||||
- ❌ НЕ найдено использования в коде
|
||||
|
||||
---
|
||||
|
||||
## 23. `admin_pages` ⚠️ НЕ СВЯЗАНА С AI
|
||||
|
||||
**Назначение:** Страницы контента (CMS), НЕ связана с AI напрямую
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `author_address_encrypted` - TEXT NOT NULL - зашифрованный адрес автора
|
||||
- `created_at` - TIMESTAMP - дата создания (default: now())
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: now())
|
||||
- `title_encrypted` - TEXT - зашифрованный заголовок
|
||||
- `summary_encrypted` - TEXT - зашифрованное краткое описание
|
||||
- `content_encrypted` - TEXT - зашифрованное содержимое
|
||||
- `seo_encrypted` - TEXT - зашифрованные SEO данные
|
||||
- `status_encrypted` - TEXT - зашифрованный статус
|
||||
- `settings_encrypted` - TEXT - зашифрованные настройки
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- Нет внешних ключей
|
||||
|
||||
**Используется в:**
|
||||
- routes/pages.js (CMS система)
|
||||
- ❌ НЕ используется в AI сервисах
|
||||
|
||||
**Примечание:**
|
||||
- Это таблица для CMS (система управления контентом)
|
||||
- НЕ связана с AI ассистентом
|
||||
- Упомянута в вашем списке, но к AI не относится
|
||||
|
||||
---
|
||||
|
||||
## 24. `admin_pages_simple` ⚠️ НЕ СВЯЗАНА С AI
|
||||
|
||||
**Назначение:** Упрощенные страницы контента БЕЗ шифрования, НЕ связана с AI
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `author_address` - TEXT NOT NULL - адрес автора (НЕ зашифрован!)
|
||||
- `created_at` - TIMESTAMP - дата создания (default: now())
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: now())
|
||||
- `title` - TEXT - заголовок (НЕ зашифрован!)
|
||||
- `summary` - TEXT - краткое описание
|
||||
- `content` - TEXT - содержимое
|
||||
- `seo` - TEXT - SEO данные
|
||||
- `status` - TEXT - статус
|
||||
- `settings` - TEXT - настройки
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
|
||||
**Связи:**
|
||||
- Нет внешних ключей
|
||||
|
||||
**Используется в:**
|
||||
- routes/pages.js (CMS система)
|
||||
- ❌ НЕ используется в AI сервисах
|
||||
|
||||
**Примечание:**
|
||||
- Это таблица для CMS (система управления контентом)
|
||||
- В отличие от `admin_pages`, данные НЕ зашифрованы
|
||||
- НЕ связана с AI ассистентом
|
||||
- Упомянута в вашем списке, но к AI не относится
|
||||
|
||||
---
|
||||
|
||||
## 25. `user_table_relations` ⭐ КЛЮЧЕВАЯ (RAG)
|
||||
|
||||
**Назначение:** Связи между строками в разных RAG таблицах (реляционная модель данных)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор связи
|
||||
- `from_row_id` - INTEGER NOT NULL (FK → user_rows) - исходная строка
|
||||
- `column_id` - INTEGER NOT NULL (FK → user_columns) - колонка со связью
|
||||
- `to_table_id` - INTEGER NOT NULL (FK → user_tables) - целевая таблица
|
||||
- `to_row_id` - INTEGER NOT NULL (FK → user_rows) - целевая строка
|
||||
- `created_at` - TIMESTAMP - дата создания (default: CURRENT_TIMESTAMP)
|
||||
- `updated_at` - TIMESTAMP - дата обновления (default: CURRENT_TIMESTAMP)
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- idx_user_table_relations_column
|
||||
- idx_user_table_relations_from_row
|
||||
- idx_user_table_relations_to_row
|
||||
- idx_user_table_relations_to_table
|
||||
|
||||
**Связи:**
|
||||
- → `user_columns` (column_id, ON DELETE CASCADE)
|
||||
- → `user_rows` (from_row_id, ON DELETE CASCADE)
|
||||
- → `user_rows` (to_row_id, ON DELETE CASCADE)
|
||||
- → `user_tables` (to_table_id, ON DELETE CASCADE)
|
||||
|
||||
**Используется в:**
|
||||
- routes/tables.js (создание связей между данными)
|
||||
- ragService.js (получение связанных данных для контекста)
|
||||
|
||||
**Логика:**
|
||||
- Позволяет создавать связи "один-ко-многим" и "многие-ко-многим" между RAG данными
|
||||
- Пример: FAQ вопрос → связанные продукты, документы → связанные разделы
|
||||
- Используется для обогащения контекста AI ответов
|
||||
|
||||
**Структура связи:**
|
||||
```
|
||||
user_rows[from_row_id]
|
||||
→ user_columns[column_id] (тип: "relation")
|
||||
→ user_tables[to_table_id]
|
||||
→ user_rows[to_row_id]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 26. `admin_read_contacts` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Статус прочтения контактов админами (для UI непрочитанных пользователей)
|
||||
|
||||
**Столбцы:**
|
||||
- `admin_id` - INTEGER NOT NULL (PK, FK → users) - ID администратора
|
||||
- `contact_id` - INTEGER NOT NULL (PK, FK → users) - ID контакта (user_id)
|
||||
- `read_at` - TIMESTAMP NOT NULL - время прочтения (default: now())
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: (admin_id, contact_id) - составной ключ
|
||||
|
||||
**Связи:**
|
||||
- → `users` (admin_id, ON DELETE CASCADE) ✅ ДОБАВЛЕНО
|
||||
- → `users` (contact_id, ON DELETE CASCADE) ✅ ДОБАВЛЕНО
|
||||
|
||||
**Используется в:**
|
||||
- routes/messages.js (mark-contact-read - отметить контакт как прочитанный)
|
||||
- adminLogicService.js (управление непрочитанными контактами)
|
||||
|
||||
**Логика:**
|
||||
- Отслеживает, когда админ последний раз просматривал чат пользователя
|
||||
- Используется для отображения непрочитанных контактов в списке
|
||||
- Отличается от `global_read_status` (статус сообщений) и `admin_read_messages` (приватные чаты)
|
||||
|
||||
**Применение:**
|
||||
- UI показывает список пользователей с новыми сообщениями
|
||||
- Когда админ открывает чат → обновляется `read_at`
|
||||
- Новые сообщения после `read_at` = непрочитанные
|
||||
|
||||
---
|
||||
|
||||
## 27. `user_preferences` ✅ АКТИВНАЯ
|
||||
|
||||
**Назначение:** Пользовательские настройки и предпочтения (может влиять на AI)
|
||||
|
||||
**Столбцы:**
|
||||
- `id` - INTEGER (PK) - уникальный идентификатор
|
||||
- `user_id` - INTEGER NOT NULL (FK → users) - ID пользователя
|
||||
- `created_at` - TIMESTAMP NOT NULL - дата создания (default: now())
|
||||
- `updated_at` - TIMESTAMP NOT NULL - дата обновления (default: now())
|
||||
- `preference_key_encrypted` - TEXT - зашифрованный ключ настройки
|
||||
- `preference_value_encrypted` - TEXT - зашифрованное значение настройки
|
||||
- `metadata` - JSONB - дополнительные метаданные (default: '{}')
|
||||
|
||||
**Индексы:**
|
||||
- PRIMARY KEY: id
|
||||
- idx_user_preferences_user_id
|
||||
|
||||
**Связи:**
|
||||
- → `users` (user_id, ON DELETE CASCADE) ✅ ИСПРАВЛЕНО
|
||||
|
||||
**Используется в:**
|
||||
- routes/preferences.js (CRUD настроек)
|
||||
- Может использоваться для персонализации AI ответов
|
||||
|
||||
**Возможные настройки:**
|
||||
- Язык интерфейса
|
||||
- Тема оформления
|
||||
- Уведомления
|
||||
- Персональные предпочтения для AI (стиль общения, детальность ответов)
|
||||
|
||||
**Примечание:**
|
||||
- В таблице `users` уже есть `preferred_language` (JSONB)
|
||||
- `user_preferences` - более гибкая система для любых настроек
|
||||
- Может расширяться для AI-специфичных настроек
|
||||
|
||||
---
|
||||
|
||||
## 📊 ИТОГОВАЯ СТАТИСТИКА
|
||||
|
||||
**Всего проверено:** 27 таблиц
|
||||
|
||||
**По категориям:**
|
||||
- ⭐ КРИТИЧЕСКИЕ: 4 (users, user_identities, messages, conversations)
|
||||
- ⭐ КЛЮЧЕВЫЕ: 10 (ai_assistant_settings, ai_providers_settings, message_deduplication, user_tables, user_columns, user_rows, user_cell_values, user_table_relations)
|
||||
- ✅ АКТИВНЫЕ: 10 (ai_assistant_rules, telegram_settings, email_settings, is_rag_source, conversation_participants, global_read_status, admin_read_messages, user_tag_links, admin_read_contacts, user_preferences)
|
||||
- ⚠️ ПРОБЛЕМНЫЕ: 1 (roles - не используется)
|
||||
- ⚠️ НЕ СВЯЗАНЫ С AI: 2 (admin_pages, admin_pages_simple)
|
||||
|
||||
**Обнаруженные проблемы:**
|
||||
- ~~1. `ai_assistant_rules` - отсутствует столбец `rules_encrypted`~~ ✅ ИСПРАВЛЕНО (миграция 064)
|
||||
- ~~2. `user_cell_values` - нет FK на `user_columns` (column_id)~~ ✅ ИСПРАВЛЕНО (миграция 065)
|
||||
- 3. `roles` - таблица существует, но не используется ⚠️ НИЗКИЙ ПРИОРИТЕТ
|
||||
- ~~4. `admin_read_messages` - нет FK на users~~ ✅ ИСПРАВЛЕНО (миграция 066)
|
||||
- ~~5. `admin_read_contacts` - нет FK на users~~ ✅ ИСПРАВЛЕНО (миграция 066)
|
||||
- ~~6. `user_preferences` - нет ON DELETE CASCADE для user_id~~ ✅ ИСПРАВЛЕНО (миграция 067)
|
||||
|
||||
**Применённые миграции:**
|
||||
- 064_add_rules_encrypted_to_ai_assistant_rules.sql
|
||||
- 065_add_fk_user_cell_values_column_id.sql
|
||||
- 066_add_fk_admin_read_tables.sql
|
||||
- 067_add_cascade_user_preferences.sql
|
||||
|
||||
**Дата проверки:** 2025-10-08
|
||||
**Дата исправлений:** 2025-10-08
|
||||
**Статус:** ✅ ПРОВЕРКА ЗАВЕРШЕНА + КРИТИЧНЫЕ ПРОБЛЕМЫ ИСПРАВЛЕНЫ
|
||||
|
||||
179
aidocs/AI_FILES_QUICK_REFERENCE.md
Normal file
179
aidocs/AI_FILES_QUICK_REFERENCE.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# AI Ассистент - Быстрый справочник файлов
|
||||
|
||||
**Всего: 47 файлов**
|
||||
**Дата:** 2025-10-08
|
||||
|
||||
---
|
||||
|
||||
## ⭐ КРИТИЧЕСКИ ВАЖНЫЕ (9) - без них AI не работает
|
||||
|
||||
| № | Файл | Путь | Что делает |
|
||||
|---|------|------|------------|
|
||||
| 1 | ai-assistant.js | services/ | Главный интерфейс AI |
|
||||
| 2 | ollamaConfig.js | services/ | Настройки Ollama |
|
||||
| 3 | ragService.js | services/ | RAG генерация |
|
||||
| 4 | unifiedMessageProcessor.js | services/ | Обработка всех сообщений |
|
||||
| 5 | botManager.js | services/ | Координатор ботов |
|
||||
| 6 | wsHub.js | . | WebSocket уведомления |
|
||||
| 7 | logger.js | utils/ | Логирование |
|
||||
| 8 | encryptionUtils.js | utils/ | Шифрование |
|
||||
| 9 | encryptedDatabaseService.js | services/ | Работа с БД |
|
||||
|
||||
---
|
||||
|
||||
## ✅ АКТИВНО ИСПОЛЬЗУЕМЫЕ (27)
|
||||
|
||||
### Настройки AI (3)
|
||||
- aiAssistantSettingsService.js
|
||||
- aiAssistantRulesService.js
|
||||
- aiProviderSettingsService.js
|
||||
|
||||
### Боты (3)
|
||||
- webBot.js
|
||||
- telegramBot.js
|
||||
- emailBot.js
|
||||
|
||||
### Обработка данных (8)
|
||||
- conversationService.js
|
||||
- messageDeduplicationService.js
|
||||
- guestService.js
|
||||
- guestMessageService.js
|
||||
- identity-service.js
|
||||
- botsSettings.js
|
||||
- vectorSearchClient.js
|
||||
- userDeleteService.js
|
||||
|
||||
### Аутентификация (3)
|
||||
- admin-role.js
|
||||
- auth-service.js
|
||||
- session-service.js
|
||||
|
||||
### Routes - Основные (3)
|
||||
- routes/chat.js ⭐
|
||||
- routes/settings.js ⭐
|
||||
- routes/messages.js
|
||||
|
||||
### Routes - Специализированные (7)
|
||||
- routes/ollama.js
|
||||
- routes/rag.js
|
||||
- routes/monitoring.js
|
||||
- routes/auth.js
|
||||
- routes/identities.js
|
||||
- routes/tables.js
|
||||
- routes/uploads.js
|
||||
- routes/system.js
|
||||
|
||||
### Utils (2)
|
||||
- utils/constants.js (AI_USER_TYPES, AI_SENDER_TYPES)
|
||||
- utils/userUtils.js (isUserBlocked)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ ЧАСТИЧНО ИСПОЛЬЗУЕМЫЕ (5)
|
||||
|
||||
| Файл | Где используется | Примечание |
|
||||
|------|------------------|------------|
|
||||
| ai-cache.js | routes/monitoring | Только метод clear() |
|
||||
| ai-queue.js | routes/ai-queue | Отдельный API |
|
||||
| routes/ai-queue.js | app.js | Отдельный API очереди |
|
||||
| testNewBots.js | - | Только для тестов |
|
||||
| notifyOllamaReady.js | Ollama контейнер | Отдельный скрипт |
|
||||
|
||||
---
|
||||
|
||||
## ❌ МЕРТВЫЙ КОД (2)
|
||||
|
||||
| Файл | Проблема | Рекомендация |
|
||||
|------|----------|--------------|
|
||||
| adminLogicService.js | НЕ импортируется нигде | Удалить или интегрировать |
|
||||
| services/index.js | Ссылка на несуществующий vectorStore.js | Обновить код |
|
||||
|
||||
---
|
||||
|
||||
## 🔍 БЫСТРЫЙ ПОИСК
|
||||
|
||||
### По функциональности:
|
||||
|
||||
**Хочу настроить модель?**
|
||||
→ `ollamaConfig.js` + `routes/settings.js`
|
||||
|
||||
**Хочу изменить промпт?**
|
||||
→ `aiAssistantSettingsService.js` + `routes/settings.js`
|
||||
|
||||
**Хочу изменить правила AI?**
|
||||
→ `aiAssistantRulesService.js` + `routes/settings.js`
|
||||
|
||||
**Проблемы с генерацией ответов?**
|
||||
→ `ai-assistant.js` → `ragService.js`
|
||||
|
||||
**Боты не работают?**
|
||||
→ `botManager.js` → конкретный бот (webBot/telegramBot/emailBot)
|
||||
|
||||
**Сообщения дублируются?**
|
||||
→ `messageDeduplicationService.js`
|
||||
|
||||
**Проблемы с векторным поиском?**
|
||||
→ `vectorSearchClient.js`
|
||||
|
||||
**Логи не показываются?**
|
||||
→ `logger.js` (уровень логирования)
|
||||
|
||||
**Health check падает?**
|
||||
→ `ollamaConfig.checkHealth()` → проверить Ollama
|
||||
|
||||
---
|
||||
|
||||
## 🔄 ПОТОК ОБРАБОТКИ СООБЩЕНИЯ
|
||||
|
||||
```
|
||||
1. routes/chat.js (/message endpoint)
|
||||
↓
|
||||
2. botManager.getBot('web')
|
||||
↓
|
||||
3. webBot.handleMessage()
|
||||
↓
|
||||
4. botManager.processMessage()
|
||||
↓
|
||||
5. unifiedMessageProcessor.processMessage()
|
||||
├─ identity-service (аутентификация)
|
||||
├─ userUtils.isUserBlocked (проверка блокировки)
|
||||
├─ messageDeduplicationService (дедупликация)
|
||||
├─ conversationService (беседа)
|
||||
└─ ai-assistant.generateResponse()
|
||||
├─ aiAssistantSettingsService (настройки)
|
||||
├─ aiAssistantRulesService (правила)
|
||||
└─ ragService.ragAnswer()
|
||||
├─ vectorSearchClient (поиск)
|
||||
└─ ollamaConfig (Ollama API)
|
||||
↓
|
||||
6. wsHub.broadcastChatMessage() (уведомление)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 ПРИМЕЧАНИЯ
|
||||
|
||||
### Что нужно знать:
|
||||
|
||||
1. **Все настройки хранятся в БД** (не в .env)
|
||||
2. **Дублирования кода нет** - все централизовано
|
||||
3. **AI работает для 3 каналов:** web, telegram, email
|
||||
4. **Два неиспользуемых сервиса:** ai-cache и ai-queue (потенциал для оптимизации)
|
||||
5. **Один мертвый файл:** adminLogicService.js (никогда не импортируется)
|
||||
|
||||
### Таблицы БД для AI:
|
||||
|
||||
- `ai_providers_settings` - настройки провайдеров
|
||||
- `ai_assistant_settings` - настройки ассистента
|
||||
- `ai_assistant_rules` - правила
|
||||
- `messages` - сообщения
|
||||
- `conversations` - беседы
|
||||
- `message_deduplication` - дедупликация
|
||||
- `guest_messages` - гостевые сообщения
|
||||
- `user_tables/columns/rows/cell_values` - RAG база знаний
|
||||
|
||||
---
|
||||
|
||||
**Проверено:** ВСЕ 47 файлов
|
||||
**Автор:** Digital Legal Entity Project
|
||||
|
||||
505
aidocs/AI_FULL_INVENTORY.md
Normal file
505
aidocs/AI_FULL_INVENTORY.md
Normal file
@@ -0,0 +1,505 @@
|
||||
# АБСОЛЮТНО ПОЛНЫЙ инвентарь AI системы
|
||||
|
||||
**Дата:** 2025-10-08
|
||||
**Метод:** Систематическая проверка ВСЕХ директорий
|
||||
**Статус:** ✅ ПРОВЕРЕНО ВСЁ
|
||||
|
||||
---
|
||||
|
||||
## 📊 ИТОГОВАЯ СТАТИСТИКА
|
||||
|
||||
| Категория | Количество |
|
||||
|-----------|-----------|
|
||||
| **Backend Services** | 31 файл |
|
||||
| **Backend Routes** | 13 файлов |
|
||||
| **Backend Utils** | 3 файла |
|
||||
| **Backend Scripts** | 3 файла |
|
||||
| **Backend Tests** | 4 файла |
|
||||
| **Backend Other** | 1 файл (wsHub.js) |
|
||||
| **Vector-Search (Python)** | 3 файла |
|
||||
| **Scripts (корень)** | 2 файла |
|
||||
| **Frontend Components** | 11 файлов |
|
||||
| **Frontend Services** | 2 файла |
|
||||
| **Frontend Composables** | 1 файл |
|
||||
| **Frontend Views** | 12 файлов |
|
||||
| **ИТОГО** | **86 ФАЙЛОВ** |
|
||||
|
||||
---
|
||||
|
||||
## 🔥 BACKEND (55 файлов)
|
||||
|
||||
### ⭐ SERVICES (31 файл)
|
||||
|
||||
#### КЛЮЧЕВЫЕ (9):
|
||||
1. `ai-assistant.js` - главный AI интерфейс
|
||||
2. `ollamaConfig.js` - настройки Ollama
|
||||
3. `ragService.js` - RAG генерация
|
||||
4. `unifiedMessageProcessor.js` - процессор всех сообщений
|
||||
5. `botManager.js` - координатор ботов
|
||||
6. `encryptedDatabaseService.js` - работа с БД
|
||||
7. `vectorSearchClient.js` - векторный поиск
|
||||
8. `conversationService.js` - управление беседами
|
||||
9. `messageDeduplicationService.js` - дедупликация
|
||||
|
||||
#### АКТИВНЫЕ (15):
|
||||
10. `aiAssistantSettingsService.js` - настройки AI
|
||||
11. `aiAssistantRulesService.js` - правила AI
|
||||
12. `aiProviderSettingsService.js` - провайдеры AI
|
||||
13. `webBot.js` - веб бот
|
||||
14. `telegramBot.js` - Telegram бот
|
||||
15. `emailBot.js` - Email бот
|
||||
16. `guestService.js` - гостевые сообщения
|
||||
17. `guestMessageService.js` - перенос гостевых сообщений
|
||||
18. `identity-service.js` - идентификаторы пользователей
|
||||
19. `botsSettings.js` - настройки ботов
|
||||
20. `admin-role.js` - проверка админской роли
|
||||
21. `auth-service.js` - аутентификация
|
||||
22. `session-service.js` - сессии
|
||||
23. `userDeleteService.js` - удаление данных пользователей
|
||||
24. `index.js` - экспорт сервисов (частично устаревший)
|
||||
|
||||
#### ЧАСТИЧНО/НЕ В ОСНОВНОМ ПОТОКЕ (5):
|
||||
25. `ai-cache.js` ⚠️ - только monitoring
|
||||
26. `ai-queue.js` ⚠️ - отдельный API
|
||||
27. `notifyOllamaReady.js` 📦 - скрипт для Ollama
|
||||
28. `testNewBots.js` 🧪 - тесты
|
||||
29. `adminLogicService.js` ❌ - мертвый код
|
||||
|
||||
### 📡 ROUTES (13 файлов)
|
||||
|
||||
#### КЛЮЧЕВЫЕ (3):
|
||||
1. `chat.js` ⭐ - основной чат API
|
||||
2. `settings.js` ⭐ - ВСЕ настройки AI
|
||||
3. `messages.js` - CRUD сообщений, broadcast
|
||||
|
||||
#### СПЕЦИАЛИЗИРОВАННЫЕ (10):
|
||||
4. `ollama.js` - управление Ollama
|
||||
5. `rag.js` - RAG API
|
||||
6. `ai-queue.js` - очередь AI
|
||||
7. `monitoring.js` - мониторинг
|
||||
8. `auth.js` - аутентификация
|
||||
9. `identities.js` - управление идентификаторами
|
||||
10. `tables.js` - RAG таблицы
|
||||
11. `uploads.js` - загрузка файлов
|
||||
12. `system.js` - системные настройки
|
||||
13. `admin.js` - админ панель
|
||||
|
||||
### 🛠️ UTILS (3 файла)
|
||||
|
||||
1. `logger.js` ⭐ - логирование (везде!)
|
||||
2. `encryptionUtils.js` ⭐ - шифрование (везде!)
|
||||
3. `constants.js` - AI_USER_TYPES, AI_SENDER_TYPES, MESSAGE_CHANNELS
|
||||
4. `userUtils.js` - isUserBlocked
|
||||
|
||||
### 📜 SCRIPTS (3 файла)
|
||||
|
||||
1. `check-ollama-models.js` - проверка моделей Ollama
|
||||
2. `fix-rag-columns.js` - исправление RAG колонок
|
||||
3. (другие скрипты не связаны напрямую с AI)
|
||||
|
||||
### 🧪 TESTS (4 файла)
|
||||
|
||||
1. `ragService.test.js` - тесты RAG сервиса
|
||||
2. `ragServiceFull.test.js` - полные тесты RAG
|
||||
3. `adminLogicService.test.js` - тесты админской логики
|
||||
4. `vectorSearchClient.test.js` - тесты векторного поиска
|
||||
|
||||
### 🔌 OTHER (1 файл)
|
||||
|
||||
1. `wsHub.js` ⭐ - WebSocket хаб (критичен для уведомлений!)
|
||||
|
||||
---
|
||||
|
||||
## 🔍 VECTOR-SEARCH (3 файла Python)
|
||||
|
||||
**Директория:** `vector-search/`
|
||||
|
||||
1. **`app.py`** ⭐
|
||||
- FastAPI приложение
|
||||
- Endpoints: `/upsert`, `/search`, `/delete`, `/rebuild`, `/health`
|
||||
- Порт: 8001
|
||||
|
||||
2. **`vector_store.py`** ⭐
|
||||
- Векторное хранилище на FAISS
|
||||
- Embedding через Ollama
|
||||
- Сохранение индексов
|
||||
|
||||
3. **`schemas.py`**
|
||||
- Pydantic схемы для валидации
|
||||
- UpsertRequest, SearchRequest, DeleteRequest
|
||||
|
||||
**Зависимости:**
|
||||
- FastAPI
|
||||
- FAISS
|
||||
- Ollama (для embeddings)
|
||||
|
||||
---
|
||||
|
||||
## 🎨 FRONTEND (26 файлов)
|
||||
|
||||
### 🧩 COMPONENTS (11 файлов)
|
||||
|
||||
1. `ChatInterface.vue` ⭐ - главный интерфейс чата
|
||||
2. `Message.vue` - компонент сообщения
|
||||
3. `MessagesTable.vue` - таблица сообщений
|
||||
4. `OllamaModelManager.vue` - управление моделями Ollama
|
||||
5. `AIQueueMonitor.vue` - мониторинг AI очереди
|
||||
6. `ai-assistant/RuleEditor.vue` - редактор правил AI
|
||||
7. `ai-assistant/SystemMonitoring.vue` - мониторинг системы AI
|
||||
8. `identity/EmailConnect.vue` - подключение email (для email бота)
|
||||
9. `identity/TelegramConnect.vue` - подключение Telegram (для Telegram бота)
|
||||
10. `identity/WalletConnection.vue` - подключение кошелька
|
||||
11. `identity/index.js` - экспорт компонентов идентификации
|
||||
|
||||
### 📄 VIEWS (12 файлов)
|
||||
|
||||
1. `AdminChatView.vue` - админский чат
|
||||
2. `PersonalMessagesView.vue` - личные сообщения
|
||||
3. `settings/AiSettingsView.vue` ⭐ - главные настройки AI
|
||||
4. `settings/AIProviderSettings.vue` - настройки провайдеров
|
||||
5. `settings/AI/AiAssistantSettings.vue` - настройки ассистента
|
||||
6. `settings/AI/OllamaSettingsView.vue` - настройки Ollama
|
||||
7. `settings/AI/OpenAISettingsView.vue` - настройки OpenAI
|
||||
8. `settings/AI/EmailSettingsView.vue` - настройки Email бота
|
||||
9. `settings/AI/TelegramSettingsView.vue` - настройки Telegram бота
|
||||
10. `settings/AI/DatabaseSettingsView.vue` - настройки БД
|
||||
11. `contacts/ContactDetailsView.vue` - детали контакта (сообщения)
|
||||
12. `tables/*` (5 файлов) - управление RAG таблицами
|
||||
|
||||
### 🔧 SERVICES (2 файла)
|
||||
|
||||
1. `messagesService.js` ⭐ - сервис сообщений
|
||||
2. `adminChatService.js` - админский чат
|
||||
|
||||
### 🎣 COMPOSABLES (1 файл)
|
||||
|
||||
1. `useChat.js` ⭐ - хук для чата с AI
|
||||
|
||||
---
|
||||
|
||||
## 🚀 SCRIPTS КОРНЕВЫЕ (2 файла)
|
||||
|
||||
**Директория:** `scripts/`
|
||||
|
||||
1. **`test-ai-assistant.sh`** 🧪
|
||||
- Полный тест AI ассистента
|
||||
- Проверка контейнеров, Ollama, Backend, RAG, производительности
|
||||
|
||||
2. **`manage-models.sh`** 🔧
|
||||
- Управление моделями Ollama
|
||||
- Предзагрузка, поддержание в памяти, очистка
|
||||
|
||||
---
|
||||
|
||||
## 📂 ПОЛНАЯ СВОДКА ПО ДИРЕКТОРИЯМ
|
||||
|
||||
```
|
||||
backend/
|
||||
├── services/ 31 файл (9 ключевых, 15 активных, 5 частично, 2 мертвый код)
|
||||
├── routes/ 13 файлов (3 ключевых, 10 активных)
|
||||
├── utils/ 3 файла (2 ключевых, 1 активный)
|
||||
├── scripts/ 3 файла (вспомогательные)
|
||||
├── tests/ 4 файла (тесты)
|
||||
└── wsHub.js 1 файл (ключевой!)
|
||||
|
||||
vector-search/ 3 файла Python (критичны для RAG)
|
||||
|
||||
scripts/ 2 файла bash (управление)
|
||||
|
||||
frontend/
|
||||
├── components/ 11 файлов (UI компоненты AI)
|
||||
├── views/ 12 файлов (страницы AI)
|
||||
├── services/ 2 файла (API клиенты)
|
||||
└── composables/ 1 файл (логика чата)
|
||||
|
||||
═══════════════════════════════════════
|
||||
ИТОГО: 86 файлов
|
||||
═══════════════════════════════════════
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 КРИТИЧЕСКИ ВАЖНЫЕ ФАЙЛЫ (TOP 15)
|
||||
|
||||
**Без этих файлов AI НЕ РАБОТАЕТ:**
|
||||
|
||||
| № | Файл | Путь | Роль |
|
||||
|---|------|------|------|
|
||||
| 1 | ai-assistant.js | services/ | Главный AI интерфейс |
|
||||
| 2 | ollamaConfig.js | services/ | Настройки Ollama |
|
||||
| 3 | ragService.js | services/ | RAG генерация |
|
||||
| 4 | unifiedMessageProcessor.js | services/ | Обработка сообщений |
|
||||
| 5 | botManager.js | services/ | Координатор ботов |
|
||||
| 6 | encryptedDatabaseService.js | services/ | Работа с БД |
|
||||
| 7 | vectorSearchClient.js | services/ | Векторный поиск |
|
||||
| 8 | logger.js | utils/ | Логирование |
|
||||
| 9 | encryptionUtils.js | utils/ | Шифрование |
|
||||
| 10 | wsHub.js | backend/ | WebSocket |
|
||||
| 11 | chat.js | routes/ | API чата |
|
||||
| 12 | settings.js | routes/ | API настроек AI |
|
||||
| 13 | app.py | vector-search/ | Vector search сервис |
|
||||
| 14 | vector_store.py | vector-search/ | FAISS хранилище |
|
||||
| 15 | ChatInterface.vue | frontend/ | UI чата |
|
||||
|
||||
---
|
||||
|
||||
## 📋 ДЕТАЛЬНЫЙ СПИСОК
|
||||
|
||||
### BACKEND SERVICES (31)
|
||||
|
||||
```
|
||||
✅ АКТИВНО ИСПОЛЬЗУЮТСЯ (24):
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
1. ai-assistant.js ⭐ Главный AI интерфейс
|
||||
2. ollamaConfig.js ⭐ Настройки Ollama
|
||||
3. ragService.js ⭐ RAG генерация
|
||||
4. unifiedMessageProcessor.js ⭐ Процессор сообщений
|
||||
5. botManager.js ⭐ Координатор ботов
|
||||
6. encryptedDatabaseService.js ⭐ Работа с БД
|
||||
7. vectorSearchClient.js ✅ Векторный поиск
|
||||
8. conversationService.js ✅ Беседы
|
||||
9. messageDeduplicationService.js ✅ Дедупликация
|
||||
10. aiAssistantSettingsService.js ✅ Настройки AI
|
||||
11. aiAssistantRulesService.js ✅ Правила AI
|
||||
12. aiProviderSettingsService.js ✅ Провайдеры
|
||||
13. webBot.js ✅ Web бот
|
||||
14. telegramBot.js ✅ Telegram бот
|
||||
15. emailBot.js ✅ Email бот
|
||||
16. guestService.js ✅ Гости
|
||||
17. guestMessageService.js ✅ Перенос гостей
|
||||
18. identity-service.js ✅ Идентификаторы
|
||||
19. botsSettings.js ✅ Настройки ботов
|
||||
20. admin-role.js ✅ Админская роль
|
||||
21. auth-service.js ✅ Аутентификация
|
||||
22. session-service.js ✅ Сессии
|
||||
23. userDeleteService.js ✅ Удаление данных
|
||||
24. index.js ⚠️ Устаревший экспорт
|
||||
|
||||
⚠️ ЧАСТИЧНО (2):
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
25. ai-cache.js ⚠️ Только monitoring
|
||||
26. ai-queue.js ⚠️ Отдельный API
|
||||
|
||||
📦 ВСПОМОГАТЕЛЬНЫЕ (2):
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
27. notifyOllamaReady.js 📦 Ollama скрипт
|
||||
|
||||
🧪 ТЕСТОВЫЕ (1):
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
28. testNewBots.js 🧪 Тесты ботов
|
||||
|
||||
❌ МЕРТВЫЙ КОД (1):
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
29. adminLogicService.js ❌ Не импортируется
|
||||
```
|
||||
|
||||
### BACKEND ROUTES (13)
|
||||
|
||||
```
|
||||
⭐ КЛЮЧЕВЫЕ (3):
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
1. chat.js ⭐ Основной API чата
|
||||
2. settings.js ⭐ ВСЕ настройки AI
|
||||
3. messages.js ⭐ CRUD, broadcast
|
||||
|
||||
✅ СПЕЦИАЛИЗИРОВАННЫЕ (10):
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
4. ollama.js ✅ Управление Ollama
|
||||
5. rag.js ✅ RAG API
|
||||
6. ai-queue.js ⚠️ Очередь API
|
||||
7. monitoring.js ✅ Мониторинг
|
||||
8. auth.js ✅ Аутентификация
|
||||
9. identities.js ✅ Идентификаторы
|
||||
10. tables.js ✅ RAG таблицы
|
||||
11. uploads.js ✅ Загрузка файлов
|
||||
12. system.js ✅ Системные настройки
|
||||
13. admin.js ✅ Админ панель
|
||||
```
|
||||
|
||||
### BACKEND UTILS (3)
|
||||
|
||||
```
|
||||
1. logger.js ⭐ Логирование (ВЕЗДЕ!)
|
||||
2. encryptionUtils.js ⭐ Шифрование (ВЕЗДЕ!)
|
||||
3. constants.js ✅ AI константы
|
||||
4. userUtils.js ✅ isUserBlocked
|
||||
```
|
||||
|
||||
### BACKEND SCRIPTS (3)
|
||||
|
||||
```
|
||||
1. check-ollama-models.js 🔧 Проверка моделей
|
||||
2. fix-rag-columns.js 🔧 Исправление RAG
|
||||
3. wait-for-postgres.sh 🔧 Ожидание БД
|
||||
```
|
||||
|
||||
### BACKEND TESTS (4)
|
||||
|
||||
```
|
||||
1. ragService.test.js 🧪 Тесты RAG
|
||||
2. ragServiceFull.test.js 🧪 Полные тесты RAG
|
||||
3. adminLogicService.test.js 🧪 Тесты админской логики
|
||||
4. vectorSearchClient.test.js 🧪 Тесты векторного поиска
|
||||
```
|
||||
|
||||
### BACKEND OTHER (1)
|
||||
|
||||
```
|
||||
1. wsHub.js ⭐ WebSocket хаб
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐍 VECTOR-SEARCH Python (3 файла)
|
||||
|
||||
**Директория:** `vector-search/`
|
||||
|
||||
```
|
||||
1. app.py ⭐ FastAPI приложение
|
||||
- GET /health
|
||||
- POST /upsert
|
||||
- POST /search
|
||||
- POST /delete
|
||||
- POST /rebuild
|
||||
|
||||
2. vector_store.py ⭐ FAISS векторное хранилище
|
||||
- VectorStore класс
|
||||
- Embeddings через Ollama
|
||||
- Индексация и поиск
|
||||
|
||||
3. schemas.py ✅ Pydantic схемы
|
||||
- UpsertRequest
|
||||
- SearchRequest
|
||||
- DeleteRequest
|
||||
- RebuildRequest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 SCRIPTS КОРНЕВЫЕ (2 файла)
|
||||
|
||||
**Директория:** `scripts/`
|
||||
|
||||
```
|
||||
1. test-ai-assistant.sh 🧪 Полный тест AI
|
||||
- Проверка контейнеров
|
||||
- Тест Ollama
|
||||
- Тест Backend API
|
||||
- Тест RAG системы
|
||||
- Тест производительности
|
||||
|
||||
2. manage-models.sh 🔧 Управление моделями
|
||||
- status - статус моделей
|
||||
- preload - предзагрузка
|
||||
- keep - поддержание в памяти
|
||||
- clear - очистка памяти
|
||||
- test - тест производительности
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 FRONTEND (26 файлов)
|
||||
|
||||
### COMPONENTS (11)
|
||||
|
||||
```
|
||||
1. ChatInterface.vue ⭐ Главный UI чата
|
||||
2. Message.vue ✅ Компонент сообщения
|
||||
3. MessagesTable.vue ✅ Таблица сообщений
|
||||
4. OllamaModelManager.vue ✅ Управление моделями
|
||||
5. AIQueueMonitor.vue ⚠️ Мониторинг очереди
|
||||
6. ai-assistant/RuleEditor.vue ✅ Редактор правил
|
||||
7. ai-assistant/SystemMonitoring.vue ✅ Мониторинг системы
|
||||
8. identity/EmailConnect.vue ✅ Email подключение
|
||||
9. identity/TelegramConnect.vue ✅ Telegram подключение
|
||||
10. identity/WalletConnection.vue ✅ Wallet подключение
|
||||
11. identity/index.js ✅ Экспорт
|
||||
```
|
||||
|
||||
### VIEWS (12)
|
||||
|
||||
```
|
||||
1. AdminChatView.vue ✅ Админский чат
|
||||
2. PersonalMessagesView.vue ✅ Личные сообщения
|
||||
3. settings/AiSettingsView.vue ⭐ Главная страница настроек AI
|
||||
4. settings/AIProviderSettings.vue ✅ Настройки провайдеров
|
||||
5. settings/AI/AiAssistantSettings.vue ⭐ Настройки ассистента
|
||||
6. settings/AI/OllamaSettingsView.vue ✅ Настройки Ollama
|
||||
7. settings/AI/OpenAISettingsView.vue ✅ Настройки OpenAI
|
||||
8. settings/AI/EmailSettingsView.vue ✅ Настройки Email бота
|
||||
9. settings/AI/TelegramSettingsView.vue ✅ Настройки Telegram
|
||||
10. settings/AI/DatabaseSettingsView.vue ✅ Настройки БД
|
||||
11. contacts/ContactDetailsView.vue ✅ Детали контакта
|
||||
12. tables/* (5 views) ✅ RAG таблицы
|
||||
```
|
||||
|
||||
### SERVICES (2)
|
||||
|
||||
```
|
||||
1. messagesService.js ⭐ API клиент для сообщений
|
||||
2. adminChatService.js ✅ API клиент админского чата
|
||||
```
|
||||
|
||||
### COMPOSABLES (1)
|
||||
|
||||
```
|
||||
1. useChat.js ⭐ Логика чата
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔢 ФИНАЛЬНАЯ СТАТИСТИКА
|
||||
|
||||
### Всего файлов: 86
|
||||
|
||||
#### По директориям:
|
||||
- **Backend:** 55 файлов
|
||||
- services: 31
|
||||
- routes: 13
|
||||
- utils: 3
|
||||
- scripts: 3
|
||||
- tests: 4
|
||||
- other: 1 (wsHub)
|
||||
|
||||
- **Vector-search:** 3 файла (Python)
|
||||
|
||||
- **Scripts:** 2 файла (bash)
|
||||
|
||||
- **Frontend:** 26 файлов
|
||||
- components: 11
|
||||
- views: 12
|
||||
- services: 2
|
||||
- composables: 1
|
||||
|
||||
#### По статусу:
|
||||
- ⭐ **КЛЮЧЕВЫЕ** (критичны): 15 файлов
|
||||
- ✅ **АКТИВНЫЕ** (используются): 53 файла
|
||||
- ⚠️ **ЧАСТИЧНО** (не в основном потоке): 7 файлов
|
||||
- 🧪 **ТЕСТЫ/СКРИПТЫ**: 11 файлов
|
||||
- ❌ **МЕРТВЫЙ КОД**: 2 файла
|
||||
|
||||
---
|
||||
|
||||
## ✅ ВСЁ ПРОВЕРЕНО!
|
||||
|
||||
**Проверенные директории:**
|
||||
- ✅ backend/services/
|
||||
- ✅ backend/routes/
|
||||
- ✅ backend/utils/
|
||||
- ✅ backend/scripts/
|
||||
- ✅ backend/tests/
|
||||
- ✅ vector-search/
|
||||
- ✅ scripts/
|
||||
- ✅ frontend/src/components/
|
||||
- ✅ frontend/src/views/
|
||||
- ✅ frontend/src/services/
|
||||
- ✅ frontend/src/composables/
|
||||
|
||||
**Ничего не пропущено! Это ПОЛНЫЙ инвентарь AI системы.**
|
||||
|
||||
---
|
||||
|
||||
**Дата:** 2025-10-08
|
||||
**Проверил:** Все директории проекта
|
||||
**Метод:** grep + find + систематическая проверка
|
||||
|
||||
Reference in New Issue
Block a user