ваше сообщение коммита
This commit is contained in:
199
docs/interactive-content-sharing.md
Normal file
199
docs/interactive-content-sharing.md
Normal file
@@ -0,0 +1,199 @@
|
||||
# Интерактивный обмен веб-страницами с ИИ-ассистентом в корпоративном чате
|
||||
|
||||
## Описание задачи
|
||||
|
||||
Реализовать функционал, позволяющий пользователям создавать веб-страницы с данными о компании, продуктах или статьями (блог), делиться ими в корпоративном чате в виде интерактивных сообщений с кнопками, а также обеспечивать автоматическое добавление этих страниц в базу знаний (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).
|
||||
- Предусмотреть очередь публикаций и логи для отслеживания статуса.
|
||||
- Обеспечить безопасное хранение и обновление токенов авторизации.
|
||||
Reference in New Issue
Block a user