Files
DLE/aidocs/TASK_CHANNEL_ONBOARDING.md
2025-10-09 16:48:20 +03:00

155 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Задача: Система приветствий для каналов коммуникации
## Контекст
В системе реализованы три канала взаимодействия с пользователями:
- **Web** - чат на сайте
- **Telegram** - бот в мессенджере
- **Email** - почтовый робот
У каждого канала своя специфика первого контакта:
- Web: сразу при открытии чата
- Telegram: после нажатия `/start`
- Email: после получения первого письма
## Текущее состояние
### Что работает:
- ✅ AI Assistant с настройками промптов, RAG таблиц, правил
- ✅ Векторный поиск по базе знаний (таблицы типа Notion)
- ✅ Система плейсхолдеров для подстановки данных
- ✅ Обработка сообщений от авторизованных пользователей
### Что НЕ работает:
- ❌ Первое взаимодействие не использует RAG и настройки AI
- ❌ Нет автоматических приветствий с контекстом
- ❌ Каждый канал обрабатывается по-разному
- ❌ Нет UI для управления приветствиями
## Требования
### 1. Использовать существующую инфраструктуру
- Настройки из `/settings/ai/assistant` (system_prompt, RAG tables, rules)
- Векторный поиск для получения актуального контекста
- Плейсхолдеры из таблиц базы данных
### 2. Генерация приветствий с AI
При первом контакте:
1. Загрузить настройки AI Assistant
2. Выполнить RAG-поиск по выбранным таблицам
3. Сгенерировать контекстное приветствие через LLM
4. Запомнить, что приветствие показано
### 3. Специфика каналов
Учесть особенности каждого канала:
- **Web**: показать приветствие сразу при загрузке чата
- **Telegram**: отправить при команде `/start`
- **Email**: отправить автоответ на первое письмо
### 4. UI для управления
Добавить в `/settings/ai/assistant` секцию:
```
┌──────────────────────────────────────┐
│ Настройки первого контакта │
├──────────────────────────────────────┤
│ [Web] [Telegram] [Email] │
│ │
│ ☑ Включить AI-приветствие │
│ ☑ Использовать RAG │
│ ☑ Применять правила │
│ │
│ Дополнительный промпт: │
│ [текстовое поле] │
└──────────────────────────────────────┘
```
## Техническая реализация
### БД: Таблица конфигурации каналов
```sql
CREATE TABLE channel_welcome_configs (
id SERIAL PRIMARY KEY,
channel VARCHAR(20) UNIQUE NOT NULL,
is_enabled BOOLEAN DEFAULT true,
use_ai_assistant_settings BOOLEAN DEFAULT true,
custom_prompt_encrypted TEXT,
show_on VARCHAR(20) DEFAULT 'first_contact',
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
```
### БД: Таблица отслеживания первых контактов
```sql
CREATE TABLE first_contact_tracking (
id SERIAL PRIMARY KEY,
identifier_hash VARCHAR(64) NOT NULL,
channel VARCHAR(20) NOT NULL,
welcome_shown BOOLEAN DEFAULT false,
first_message_at TIMESTAMP DEFAULT NOW(),
UNIQUE(identifier_hash, channel)
);
```
### Backend: Сервис `ChannelWelcomeService`
```javascript
class ChannelWelcomeService {
// Проверить, показывали ли приветствие
async isFirstContact(identifier, channel);
// Загрузить настройки канала
async getChannelConfig(channel);
// Сгенерировать AI-приветствие
async generateWelcome(channel, identifier);
// Пометить, что приветствие показано
async markWelcomeShown(identifier, channel);
}
```
### Интеграция с существующим кодом
**1. Обновить `unifiedMessageProcessor.js`:**
```javascript
async function processMessage(messageData) {
const { userId, channel, identifier } = messageData;
// Проверяем первый контакт
if (await channelWelcomeService.isFirstContact(identifier, channel)) {
const welcome = await channelWelcomeService.generateWelcome(channel, identifier);
await channelWelcomeService.markWelcomeShown(identifier, channel);
// Добавляем приветствие в ответ
messageData.systemMessage = welcome;
}
// Остальная обработка...
}
```
**2. Обновить `WebBot`, `TelegramBot`, `EmailBot`:**
- Добавить метод `sendSystemMessage()` для отправки приветствий
- При первом сообщении запрашивать приветствие у `ChannelWelcomeService`
**3. Frontend: расширить `AiAssistantSettings.vue`:**
- Добавить секцию "Настройки каналов"
- Табы для Web/Telegram/Email
- Настройки: вкл/выкл, использовать RAG, доп. промпт
## Результат
После реализации:
- ✅ Каждый канал генерирует умные приветствия с RAG
- ✅ Используются существующие настройки AI Assistant
- ✅ Админ управляет через UI
- ✅ Отслеживание первых контактов
- ✅ Масштабируемость для новых каналов
## Приоритет
**Средний** - улучшает UX, но не критично для работы системы.
## Оценка времени
**3-4 часа** разработки + тестирование.