feat: новая функция
This commit is contained in:
154
aidocs/TASK_CHANNEL_ONBOARDING.md
Normal file
154
aidocs/TASK_CHANNEL_ONBOARDING.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# Задача: Система приветствий для каналов коммуникации
|
||||
|
||||
## Контекст
|
||||
|
||||
В системе реализованы три канала взаимодействия с пользователями:
|
||||
- **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 часа** разработки + тестирование.
|
||||
|
||||
Reference in New Issue
Block a user