ваше сообщение коммита
This commit is contained in:
95
md/rag-assistant-details.md
Normal file
95
md/rag-assistant-details.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# VC HB3 - Accelerator: Детали задания для ИИ-ассистента
|
||||
|
||||
## 1. Описание проекта
|
||||
VC HB3 - Accelerator — это венчурный фонд и поставщик софта, который с помощью акселерационных программ помогает предпринимателям создавать токенизированные стартапы во всех отраслях. Фонд объединяет предпринимателей из разных юрисдикций, предоставляет инструменты для токенизации, прозрачных инвестиций и управления цифровыми юридическими лицами.
|
||||
|
||||
## 2. Цели и задачи ИИ-ассистента
|
||||
- Помогать клиентам быстро находить ответы на вопросы о продуктах, услугах и условиях фонда.
|
||||
- Предлагать релевантные продукты и услуги на основе сегментации клиентов.
|
||||
- Автоматизировать консультации, обработку типовых запросов и навигацию по возможностям фонда.
|
||||
- Содействовать формированию групп акселератора и информировать о возможностях участия.
|
||||
|
||||
## 3. Сегментация клиентов
|
||||
ИИ-ассистент должен различать следующие основные сегменты клиентов:
|
||||
|
||||
### 3.1. Предприниматели
|
||||
- Интересуются запуском стартапа, токенизацией бизнеса, участием в акселераторе.
|
||||
- Могут быть из разных юрисдикций и отраслей.
|
||||
- Ищут инструменты для управления, учета, приема платежей, автоматизации.
|
||||
|
||||
### 3.2. LP (Liquidity Providers)
|
||||
- Инвесторы, желающие получить доступ к метрикам DLE, ранним инвестициям, доле в фонде.
|
||||
- Интересуются прозрачностью, возвратом инвестиций, управлением токенами.
|
||||
|
||||
### 3.3. Стартапы-участники акселератора
|
||||
- Уже приобрели софт, участвуют в акселерационных программах.
|
||||
- Ищут финансирование, экспертизу, партнерство.
|
||||
|
||||
### 3.4. Холдеры админ токенов
|
||||
- Заинтересованы в управлении фондом, получении обновлений, возврате средств.
|
||||
|
||||
### 3.5. Регуляторы и партнеры
|
||||
- Интересуются прозрачностью, юридическими аспектами, сотрудничеством.
|
||||
|
||||
## 4. Примеры типовых запросов и сценариев
|
||||
- Как установить и настроить софт?
|
||||
- Как получить финансирование для стартапа?
|
||||
- Как стать участником акселератора?
|
||||
- Как LP может получить доступ к метрикам?
|
||||
- Как вернуть средства за админ токены?
|
||||
|
||||
---
|
||||
|
||||
## 5. RAG-таблица (для дальнейшего наполнения)
|
||||
| Вопрос | Ответ | Категория |
|
||||
|--------|-------|-----------|
|
||||
| | | |
|
||||
|
||||
## 6. Сценарии взаимодействия
|
||||
(заполняется по мере детализации бизнес-процессов)
|
||||
|
||||
## 7. Использование тегов для сегментации и персонализации
|
||||
Для каждого вопроса и ответа в RAG-таблице добавляется столбец с мультивыбором тегов клиентов. Это позволяет:
|
||||
- Связывать вопросы и ответы с определёнными сегментами пользователей (например, предприниматель, LP, стартап, холдер, регулятор, отрасль, регион и т.д.).
|
||||
- Персонализировать рекомендации ассистента на основе тегов пользователя.
|
||||
- Масштабировать базу знаний, добавляя новые теги и сегменты по мере развития проекта.
|
||||
|
||||
**Пример расширенной структуры RAG-таблицы:**
|
||||
| Вопрос | Ответ | Категория | Теги клиентов |
|
||||
|--------|-------|-----------|--------------|
|
||||
| Как получить финансирование? | ... | Инвестиции | предприниматель, стартап, акселератор |
|
||||
| Как вернуть средства за токены? | ... | Тарифы | холдер, LP |
|
||||
| Как установить софт? | ... | Продукт | предприниматель, стартап |
|
||||
|
||||
## 8. Фильтры для работы с таблицами
|
||||
Для удобства редактирования и поиска в таблицах реализуются фильтры:
|
||||
- По тегам клиентов (мультивыбор).
|
||||
- По категориям вопросов/ответов.
|
||||
- По продуктам и услугам.
|
||||
- По статусу (активен, архив и др.).
|
||||
|
||||
Фильтры позволяют быстро находить, редактировать и анализировать релевантные записи, а также персонализировать отображение данных для разных ролей пользователей.
|
||||
|
||||
## 9. Пользовательские таблицы, multiselect-столбцы и связи
|
||||
|
||||
### 9.1. Гибкая структура пользовательских таблиц
|
||||
- Пользователь может создавать собственные таблицы (user_tables), столбцы (user_columns) и строки (user_rows).
|
||||
- Для каждого столбца можно выбрать тип: text, select, multiselect, relation и др.
|
||||
- Для multiselect/select-столбцов значения (опции) хранятся в поле options столбца и могут добавляться/удаляться прямо из интерфейса.
|
||||
|
||||
### 9.2. Хранение и настройка связей
|
||||
- Для связи между сущностями (например, пользователь — партнеры, вопрос — продукты) используется отдельная таблица связей (например, user_multiselect_values: id, user_id, column_id, value).
|
||||
- Это позволяет хранить любые связи "многие-ко-многим" между пользователями, вопросами, продуктами и т.д.
|
||||
- Для multiselect-столбцов в RAG-таблице вопросы/ответы можно выбирать продукты/услуги, к которым относится запись.
|
||||
|
||||
### 9.3. Фильтрация и производительность
|
||||
- Фильтрация реализуется через SQL-запросы с JOIN по user_tables, user_columns, user_rows, user_cell_values и таблице связей.
|
||||
- Для multiselect-столбцов фильтрация по значениям возможна через LIKE или jsonb-операторы (при хранении массивов).
|
||||
- Производительность обеспечивается индексами по row_id, column_id и, при необходимости, по value (jsonb gin-индекс).
|
||||
- Такая архитектура масштабируется и используется в современных low-code/CRM системах (Notion, Airtable и др.).
|
||||
|
||||
### 9.4. Пример использования
|
||||
- Пользователь создает таблицу "Партнеры" с multiselect-столбцом.
|
||||
- В интерфейсе контакта можно выбрать партнеров для пользователя — значения сохраняются в user_multiselect_values.
|
||||
- В RAG-таблице вопросы/ответы можно связать с продуктами/услугами через multiselect-столбец.
|
||||
- ИИ-ассистент может фильтровать и персонализировать ответы по этим связям.
|
||||
150
md/user-tables-relation-task.md
Normal file
150
md/user-tables-relation-task.md
Normal file
@@ -0,0 +1,150 @@
|
||||
# Техническое задание: Пользовательские таблицы с настраиваемыми связями
|
||||
|
||||
## Цель
|
||||
Реализовать систему пользовательских таблиц, в которых при создании столбца можно настраивать нужные связи (relation/reference/lookup) с другими таблицами.
|
||||
|
||||
---
|
||||
|
||||
## Основные требования
|
||||
|
||||
1. **Пользователь может создавать любые таблицы** (например, "Клиенты", "Теги", "Продукты", "RAG-таблица" и т.д.).
|
||||
2. **Для каждой таблицы можно добавлять столбцы разных типов:**
|
||||
- text, number, date, select, multiselect
|
||||
- relation/reference (связь с другой таблицей)
|
||||
- lookup (вывод связанных данных из другой таблицы)
|
||||
3. **Для столбцов типа relation/reference:**
|
||||
- Можно выбрать, с какой таблицей и каким полем устанавливается связь
|
||||
- Можно выбрать тип связи: один-к-одному, один-ко-многим, многие-ко-многим
|
||||
- В ячейке такого столбца пользователь может выбрать одну или несколько строк из связанной таблицы
|
||||
4. **Связи хранятся в отдельной таблице связей или в value ячейки (массив id)**
|
||||
5. **В интерфейсе:**
|
||||
- При создании/редактировании столбца типа relation пользователь выбирает таблицу и поле для связи
|
||||
- В таблице, в ячейке relation-столбца, отображается выпадающий список/мультивыбор с данными из связанной таблицы
|
||||
6. **Фильтрация и поиск:**
|
||||
- Можно фильтровать строки по связанным значениям (например, все вопросы, относящиеся к определённому тегу или продукту)
|
||||
7. **Масштабируемость:**
|
||||
- Архитектура должна поддерживать создание большого количества таблиц, столбцов и связей без потери производительности
|
||||
|
||||
---
|
||||
|
||||
## Примеры сценариев
|
||||
|
||||
### 1. Связь "Клиент — Теги"
|
||||
- Пользователь создаёт таблицу "Клиенты" и таблицу "Теги"
|
||||
- В таблице "Клиенты" добавляет столбец типа relation, связывающий клиента с одним или несколькими тегами
|
||||
- В каждой строке можно выбрать теги из справочника
|
||||
|
||||
### 2. Связь "Вопрос — Продукты"
|
||||
- В RAG-таблице добавляется столбец типа relation к таблице "Продукты"
|
||||
- Для каждого вопроса можно выбрать, к каким продуктам он относится
|
||||
|
||||
### 3. Lookup-столбец
|
||||
- В таблице "Клиенты" можно добавить lookup-столбец, который автоматически подтягивает связанные значения из другой таблицы (например, список продуктов, которыми пользуется клиент)
|
||||
|
||||
---
|
||||
|
||||
## Требования к backend
|
||||
- Расширить модели user_tables, user_columns, user_rows, user_cell_values
|
||||
- Добавить таблицу связей (например, table_relations: id, from_row_id, column_id, to_table, to_row_id)
|
||||
- API для создания/редактирования столбцов с типом relation
|
||||
- API для получения и сохранения связей
|
||||
|
||||
## Требования к frontend
|
||||
- UI для выбора типа столбца (relation/reference/lookup)
|
||||
- UI для выбора связанной таблицы и поля
|
||||
- UI для выбора значений в ячейке relation-столбца (выпадающий список, мультивыбор)
|
||||
- Фильтрация и отображение связанных данных
|
||||
|
||||
---
|
||||
|
||||
## Преимущества
|
||||
- Максимальная гибкость и масштабируемость
|
||||
- Возможность строить сложные взаимосвязанные базы знаний, CRM, RAG-ассистентов
|
||||
- Удобство для ИИ и аналитики
|
||||
|
||||
## Типы столбцов для пользовательских таблиц
|
||||
|
||||
1. **text** — однострочный текст
|
||||
2. **textarea** — многострочный текст (заметки, описания)
|
||||
3. **number** — число (целое или дробное)
|
||||
4. **date** — дата
|
||||
5. **datetime** — дата и время
|
||||
6. **time** — только время
|
||||
7. **boolean/checkbox** — булево значение (чекбокс)
|
||||
8. **select** — выпадающий список (одиночный выбор)
|
||||
9. **multiselect** — выпадающий список (множественный выбор)
|
||||
10. **file/image** — файл или изображение (загрузка и хранение)
|
||||
11. **relation/reference** — связь с другой таблицей (выбор одной или нескольких строк из другой таблицы)
|
||||
12. **lookup** — автоматический вывод связанных данных из другой таблицы по relation
|
||||
13. **email** — email-адрес с валидацией
|
||||
14. **phone** — телефон с валидацией
|
||||
15. **url** — ссылка/URL с валидацией
|
||||
16. **currency** — число с символом валюты
|
||||
17. **percent** — число с отображением в процентах
|
||||
18. **color** — выбор цвета (colorpicker)
|
||||
19. **user/assignee** — ссылка на пользователя системы (ответственный)
|
||||
20. **status** — список статусов (например, “В работе”, “Готово”)
|
||||
21. **formula** — вычисляемое поле на основе других столбцов
|
||||
22. **progress/rating** — визуальное отображение прогресса, рейтинга (шкала, звёзды)
|
||||
23. **json/object** — хранение структурированных данных (JSON)
|
||||
|
||||
## Плейсхолдеры для интеграции с ИИ-ассистентом
|
||||
|
||||
- Для каждого столбца при создании автоматически генерируется плейсхолдер (placeholder), который можно использовать в промтах и шаблонах для ИИ-ассистента.
|
||||
- Плейсхолдер формируется на основе названия столбца (транслитерация, нижний регистр, замена пробелов на подчёркивания, например: "Партнеры венчурного фонда" → {partners_venchurnogo_fonda}).
|
||||
- Плейсхолдер уникален в рамках таблицы. При совпадении имён добавляется суффикс или используется id столбца.
|
||||
- В таблице user_columns рекомендуется добавить поле placeholder (string, unique).
|
||||
- В интерфейсе при создании/редактировании столбца отображать сгенерированный плейсхолдер (и, при необходимости, давать возможность его редактировать).
|
||||
- В системных промтах и шаблонах для LLM/ассистента значения автоматически подставляются по плейсхолдерам.
|
||||
|
||||
**Пример использования в промте:**
|
||||
```
|
||||
Вопрос: {question}
|
||||
Ответ: {answer}
|
||||
Партнеры: {partners}
|
||||
```
|
||||
|
||||
## Использование плейсхолдеров в системном промте ассистента
|
||||
|
||||
- На странице настроек ассистента (`/settings/ai/assistant`) под полем для системного промта автоматически отображается список всех плейсхолдеров, созданных пользователем в пользовательских таблицах.
|
||||
- Для каждого плейсхолдера показывается:
|
||||
- Сам плейсхолдер (например, `{partners}`)
|
||||
- Название столбца и таблицы, к которому он относится (например, “Партнеры венчурного фонда” — RAG-таблица)
|
||||
- Список плейсхолдеров обновляется автоматически при добавлении/удалении столбцов.
|
||||
|
||||
**Инструкция для пользователя:**
|
||||
> Используйте плейсхолдеры из списка ниже для подстановки значений из пользовательских таблиц в системный промт. Например:
|
||||
> ```
|
||||
> Вопрос: {question}
|
||||
> Ответ: {answer}
|
||||
> Партнеры: {partners}
|
||||
> ```
|
||||
> Плейсхолдеры автоматически заменяются на соответствующие значения при генерации ответа ассистента.
|
||||
|
||||
## Сценарий: добавление тегов пользователю через пользовательские таблицы
|
||||
|
||||
1. **Добавление тега на странице контакта**
|
||||
- На странице контакта (`/contacts/1`) при нажатии на кнопку "Добавить тег" система автоматически создаёт пользовательскую таблицу "Теги клиентов" (если она ещё не создана).
|
||||
- Пользователь может добавить новый тег (например, "VIP", "B2B", "Startup") — он появляется в этой таблице.
|
||||
|
||||
2. **Выпадающий список тегов**
|
||||
- После добавления хотя бы одного тега появляется выпадающий список (или мультивыбор), в котором отображаются все теги из таблицы "Теги клиентов".
|
||||
- Пользователь может выбрать один или несколько тегов для текущего контакта.
|
||||
|
||||
3. **Связь пользователя с тегом**
|
||||
- При выборе тега для пользователя создаётся связь между пользователем и тегом.
|
||||
- Эта связь хранится в отдельной пользовательской таблице (например, `user_tag_links` или универсальной таблице связей), где фиксируется, какой пользователь связан с каким тегом.
|
||||
- Пример структуры таблицы связей:
|
||||
| id | user_id | tag_id |
|
||||
|----|---------|--------|
|
||||
| 1 | 1 | 2 |
|
||||
| 2 | 1 | 3 |
|
||||
|
||||
4. **Обратная связь (теги → пользователи)**
|
||||
- В таблице "Теги клиентов" можно реализовать обратную связь: для каждого тега показывать список пользователей, у которых он установлен (например, через relation/lookup-столбец).
|
||||
|
||||
5. **Итог:**
|
||||
- Пользователь может создавать и редактировать теги.
|
||||
- Для каждого контакта можно выбрать теги из выпадающего списка.
|
||||
- Все связи между пользователями и тегами хранятся в отдельной таблице.
|
||||
- Можно быстро получить список всех пользователей с определённым тегом и наоборот.
|
||||
Reference in New Issue
Block a user