Files
DLE/docs/interactive-content-sharing.md

199 lines
16 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.

# Интерактивный обмен веб-страницами с ИИ-ассистентом в корпоративном чате
## Описание задачи
Реализовать функционал, позволяющий пользователям создавать веб-страницы с данными о компании, продуктах или статьями (блог), делиться ими в корпоративном чате в виде интерактивных сообщений с кнопками, а также обеспечивать автоматическое добавление этих страниц в базу знаний (RAG) для поиска и генерации ответов ИИ-ассистентом. Страницы должны быть доступны для поиска в интернете по ключевым словам.
---
## Основные требования
1. **Создание веб-страниц**
- Форма на странице `/content` для ввода информации (название, описание, текст, теги, изображения и т.д.).
- Возможность предпросмотра и редактирования страницы до публикации.
- Кнопка "Поделиться", после нажатия которой страница сохраняется и становится доступной для дальнейших действий.
2. **Публикация и доступность**
- После публикации страница доступна по уникальному URL (например, `/content/page/123` или `/content/page/название`).
- Страница оптимизирована для SEO (мета-теги, ЧПУ-адреса, sitemap.xml).
- При необходимости — настройка индексации для поисковых систем (robots.txt).
- **Оптимизация для ИИ-поиска**: страницы должны быть структурированы и открыты для индексации поисковыми ИИ (Perplexity, GPT, Gemini и др.). Рекомендуется:
- Использовать семантическую разметку (schema.org, JSON-LD)
- Добавлять структурированные данные (FAQ, Article, Product)
- Открывать страницы для crawler-ботов ИИ (не блокировать их в robots.txt)
- Обеспечивать чистый, легко читаемый HTML-код
- Добавлять релевантные ключевые слова и теги
3. **Интеграция с корпоративным чатом**
- После публикации пользователь может отправить страницу в чат с помощью кнопки "Поделиться в чат".
- В чате появляется интерактивное сообщение (карточка) с краткой информацией о странице и кнопкой (например, "Показать содержимое").
- При нажатии на кнопку ассистент отправляет содержимое страницы (или его резюме) в чат.
- Возможность задать вопрос по содержимому страницы через чат (ассистент ищет ответ только в этой странице).
- При публикации страницы в чатах пользователей (веб, Telegram, email) вместе с ответами на сообщения должно автоматически добавляться интерактивное сообщение с заголовком страницы и кнопкой "Подробнее". При нажатии на кнопку ИИ-ассистент отправляет содержимое веб-страницы в чат.
4. **Интеграция с RAG (Retrieval-Augmented Generation)**
- После публикации страница автоматически разбивается на смысловые блоки (например, по абзацам).
- Каждый блок векторизуется (создается embedding) и сохраняется в векторное хранилище (Qdrant, Pinecone и т.д.) с метаданными (id страницы, теги, автор, дата).
- Ассистент использует эти данные для поиска и генерации ответов на вопросы пользователей.
- В форме создания страницы добавить выпадающий список "Интегрировать с RAG" (Да/Нет). При выборе "Да" ИИ-ассистент анализирует содержимое страницы, автоматически предлагает список возможных вопросов и ответов (Q&A) по теме страницы. Пользователь может отредактировать эти вопросы и ответы, отметить чекбоксами нужные и нажать "Добавить" — выбранные Q&A будут сохранены в базу знаний для последующего поиска и генерации ответов.
5. **Поиск в интернете**
- Страницы доступны для индексации поисковыми системами.
- Поиск по ключевым словам приводит к отображению соответствующих страниц.
---
## Пользовательские сценарии
1. **Создание и публикация страницы**
- Пользователь заполняет форму на `/content`, нажимает "Поделиться".
- Страница сохраняется, появляется уникальный URL.
2. **Обмен в чате**
- Пользователь нажимает "Поделиться в чат".
- В чате появляется карточка с кнопкой "Показать содержимое".
- Другой пользователь нажимает кнопку — ассистент отправляет содержимое страницы в чат.
3. **Поиск и ответы ассистента**
- Пользователь задаёт вопрос по теме страницы.
- Ассистент ищет ответ в RAG по содержимому страницы и формирует релевантный ответ.
4. **Поиск через интернет**
- Внешний пользователь находит страницу через поисковик по ключевым словам.
---
## Техническая реализация
### Frontend
- Vue.js, локальные scoped-стили
- Форма создания/редактирования страницы
- Компонент карточки для чата с интерактивной кнопкой
### Backend
- Node.js/NestJS/Fastify/Express
- REST API для создания, публикации, получения страниц
- Векторизация и интеграция с векторным хранилищем (Qdrant, Pinecone)
- Генерация и отправка сообщений в чат
### Векторное хранилище (RAG)
- Сохранение embedding-блоков с метаданными
- Поиск по embedding для генерации ответов ассистентом
### SEO и индексация
- Генерация мета-тегов, sitemap.xml
- ЧПУ-адреса страниц
- Настройка robots.txt
---
## Диаграмма взаимодействия
```mermaid
sequenceDiagram
participant User
participant Frontend
participant Backend
participant VectorDB
participant Chat
participant SearchEngine
User->>Frontend: Заполняет форму на /content
Frontend->>Backend: POST /api/content (данные)
Backend->>Backend: Создает страницу, сохраняет в БД
Backend->>VectorDB: Векторизация, добавление в RAG
Backend->>Frontend: Возвращает ссылку на страницу
Frontend->>Chat: Отправляет карточку в чат
Chat->>User: Показывает карточку + ответ ассистента
SearchEngine->>Backend: Индексирует страницу (если разрешено)
```
---
## Примечания
- Все компоненты должны быть реализованы с учетом безопасности и приватности данных.
- Необходимо предусмотреть возможность удаления и редактирования страниц.
- Для интеграции с ИИ-ассистентом использовать современные RAG-фреймворки (LlamaIndex, LangChain и т.д.).
- Для векторизации использовать актуальные модели (OpenAI, Sentence Transformers и др.).
---
## Автоматический выбор и добавление интерактивных сообщений ИИ-ассистентом
ИИ-ассистент может самостоятельно анализировать контекст диалога и принимать решение о добавлении интерактивных сообщений (карточек) в чат, чтобы повысить релевантность и удобство взаимодействия.
### Принцип работы
1. **Анализ контекста диалога**
- Ассистент анализирует сообщения пользователя, определяет тему, намерение и ключевые слова.
- Выполняет поиск по базе знаний (RAG) для нахождения релевантных страниц или блоков.
2. **Принятие решения о вставке интерактивного сообщения**
- Если найден релевантный контент, ассистент решает, нужно ли добавить карточку с кнопкой (например, "Подробнее").
- Решение зависит от:
- Тематики и повторяемости вопросов
- Новизны или важности контента
- Явных триггеров в сообщениях пользователя (например, "покажи инструкцию", "расскажи подробнее" и т.д.)
3. **Формирование интерактивного сообщения**
- Ассистент формирует карточку с заголовком, кратким описанием и кнопкой (например, "Подробнее").
- При нажатии на кнопку пользователем ассистент отправляет содержимое страницы или выбранного блока в чат.
### Пример сценария
- Пользователь: "Как подключить наш продукт X?"
- Ассистент:
1. Находит в RAG инструкцию по подключению продукта X.
2. Отвечает кратко и автоматически добавляет интерактивную карточку с кнопкой "Показать инструкцию".
3. При нажатии на кнопку отправляет подробную инструкцию в чат.
### Преимущества
- Пользователь получает релевантную информацию в нужный момент, не перегружая чат лишними карточками.
- Ассистент становится более "умным" и проактивным.
- Повышается вовлечённость и удовлетворённость пользователей.
---
## Публикация страниц в социальных сетях и блогах через API
Система может поддерживать публикацию созданных страниц на страницах компании в социальных сетях и блогах (Medium, LinkedIn, Instagram, Paragraph, Telegraph, Telegram и др.) с помощью соответствующих API.
### Возможности
- Публикация статей и постов на платформах: Medium, LinkedIn (страницы компаний), Instagram (бизнес-аккаунты), Paragraph, Telegraph, Telegram (боты/каналы) и др.
- Выбор платформ для публикации пользователем (чекбоксы или список).
- Формирование контента с учётом особенностей каждой платформы (текст, изображения, разметка).
### Принцип работы
1. Пользователь выбирает опцию "Опубликовать в соцсетях" после создания страницы.
2. Открывается окно выбора платформ и авторизации (OAuth2, если требуется).
3. Для каждой платформы формируется подходящий формат контента.
4. Система отправляет запросы к API выбранных платформ для публикации.
5. Пользователь получает уведомление об успешной публикации или ошибке.
### Ограничения и нюансы
- Для некоторых платформ требуется бизнес-аккаунт и прохождение модерации приложения (LinkedIn, Instagram).
- Формат и объём контента может отличаться (например, Instagram — только изображение+текст).
- Возможны лимиты на частоту публикаций и размер постов.
- Некоторые платформы могут задерживать публикацию для модерации.
### Пример архитектуры
```mermaid
sequenceDiagram
participant User
participant Frontend
participant Backend
participant SocialAPI
User->>Frontend: Нажимает “Опубликовать в соцсетях”
Frontend->>Backend: POST /api/publish-to-social (данные, токены)
Backend->>SocialAPI: Публикует на выбранных платформах
SocialAPI-->>Backend: Ответ (успех/ошибка)
Backend-->>Frontend: Сообщение о результате
Frontend-->>User: Уведомление
```
### Рекомендации
- Для каждой платформы реализовать отдельный модуль интеграции или использовать сторонние сервисы (Zapier, Make).
- Предусмотреть очередь публикаций и логи для отслеживания статуса.
- Обеспечить безопасное хранение и обновление токенов авторизации.