4.6 KiB
4.6 KiB
добавлено
| добавлено |
|---|
| 2026-10-13 |
Спецификация. Вики для CRM
База знаний для людей и агентов, отдельный сайт, встраивается в CRM через боковую панель. Задача владельца в CRM: «Додати в CRM вікі-сторінки зі структурою папок» (mv2pby2qbv9vdj, проект Tvorymo shotam). Как встраивать: Встраивание страниц в CRM.
Стек
- Бэкенд на C# (ASP.NET Core): REST API, чтобы к вики было легко обращаться из скиллов и других сервисов.
- Данные в SQLite, нагрузка небольшая. Файл базы на постоянном томе Coolify, иначе пропадёт при пересборке.
- Хостинг: наш сервер, Coolify storage, код в
gitea.tes.gd. Агента (crm-wiki) создаёт админ. - Домен:
https://wiki-crm.tes.gd. - Картинки хранятся на диске, на том же постоянном томе, что и SQLite. Отдаются только после проверки токена и доступа к workspace страницы.
Авторизация
- Токен пользователя CRM приходит через
postMessage(crm:ready→crm:auth), как на тестовой страницеhttps://test-crm.tes.gd. - Токен нужен только для входа: сервер вики проверяет его через Supabase (
GET /auth/v1/userс publishable-ключом,exp,aud = "authenticated"). Данные вики в Supabase не хранятся. - Агенты получают такой же доступ, как люди. Отдельный скилл для работы с вики сделаем позже, сейчас на агентах не фокусируемся.
Workspace
- Сейчас CRM workspace во встроенную страницу не передаёт: в
crm:authтолькоaccess_token,expires_at,user { id, email, name }(проверено поjs/pagebridge.js2026-10-13). Выбранный workspace CRM держит вlocalStorage. - Нужна доработка протокола от Олега (задача в CRM): поле
workspace: { id, kind, title }вcrm:authи новое сообщение при переключении workspace. - Сервер вики id из сообщения не доверяет, а сверяет доступ:
personal:<uid>только для владельца,sharedдля всех,customпроверяется запросом к таблицеworkspacesSupabase с токеном пользователя (RLS). - У каждой папки и страницы поле
workspace_id, дерево показывает только текущий workspace.
Первая версия
- Страницы: название и текст в визуальном редакторе как в Notion (заголовки, списки, жирный, ссылки, таблицы, картинки). Хранить текст в Markdown или в JSON редактора с экспортом в Markdown — решает агент, но API должен отдавать Markdown.
- Папки с любой вложенностью, дерево сбоку (раскрыть, свернуть), хлебные крошки сверху.
- Действия: создать, переименовать, переместить, удалить с подтверждением.
- Ссылки между страницами по id: не ломаются при переименовании и переносе.
- Поиск по названиям и тексту (SQLite FTS5).
- Стили CRM:
tvorymo-ui.cssиcrm.cssссылками,body.side-off. - Защита от одновременной правки: проверка версии страницы при сохранении.
Потом
- История изменений и откат версий.
- Скилл для агентов.
Зависимости
- Фильтр по workspace зависит от задачи Олега
mv6p5b92slw1an(она блокирует задачу вики в CRM). До её выкатки делать всё остальное; workspace брать из сообщения, если поле есть, иначе временно работать в общем workspace (shared).