Governed substrate for autonomous agents: scoped identity (passports), audited actions, MCP workspace. Infra IPs and secrets redacted for public release.
58 KiB
Добро пожаловать в GOD CRM
GOD CRM -- это гибкая система управления данными, которая позволяет организовать информацию так, как удобно именно вам. Создавайте таблицы, настраивайте представления и автоматизируйте рутинные задачи.
Ключевые возможности
- Таблицы -- Храните любые данные в структурированных таблицах с кастомными полями
- Представления -- Смотрите на данные по-разному: таблица, канбан, календарь, галерея
- Виджеты -- Создавайте дашборды с визуализацией данных из разных таблиц
- Автоматизации -- Автоматизируйте действия при изменении данных
Быстрый старт
- Создайте пространство -- Пространство -- это контейнер для ваших проектов и таблиц. Например: "Работа", "Личное", "Стартап".
- Добавьте таблицу -- Таблица хранит ваши данные. Каждая запись -- это строка с набором полей (колонок).
- Настройте представление -- Выберите как отображать данные: таблица для детального просмотра, канбан для задач, календарь для событий.
- Добавьте виджеты на дашборд -- Выведите ключевые метрики и данные на дашборд пространства.
Пространства
Пространства -- это верхний уровень организации в GOD CRM. Используйте их для разделения разных областей работы или жизни.
Что такое пространство?
- Проекты -- пространство содержит проекты, каждый со своим набором таблиц и настроек
- Дашборд -- у каждого пространства есть дашборд с виджетами для быстрого обзора
- Кастомизация -- название, иконка и цвет для быстрой визуальной идентификации
Примеры использования
Работа
- CRM клиентов
- Трекер задач
- База знаний
Личное
- Финансы
- Привычки
- Цели на год
Стартап
- Roadmap
- Инвесторы
- Метрики
Обучение
- Курсы
- Книги
- Заметки
Таблицы
Таблицы -- основа GOD CRM. Каждая запись в таблице -- это объект с набором свойств, которые вы определяете сами.
Создание таблицы
- Перейдите в проект и нажмите
+ Создать таблицу - Укажите название, иконку и описание таблицы
- Добавьте колонки (поля) -- они определяют структуру данных
- Начните добавлять записи через кнопку
+ Добавить
Операции с записями
- Добавить -- Создайте новую запись в таблице
- Редактировать -- Двойной клик открывает карточку записи
- Импорт -- Загрузите данные из CSV файла
- Экспорт -- Выгрузите данные в CSV или Excel
Выделение и массовые операции
Построчное выделение
- Чекбокс слева от каждой строки для выделения
- Чекбокс в заголовке -- выделить/снять все видимые строки
- Выделенные строки подсвечиваются цветом
- Горячие клавиши: Shift+Click для диапазона, Ctrl+A для всех
Контейнер выделенных
Badge справа от кнопки "Фильтры" показывает количество выделенных строк. Клик открывает меню с действиями:
- По умолчанию -- без сортировки
- Выделенные сверху -- показать выделенные первыми
- Выделенные снизу -- показать выделенные последними
- Снять выделение -- очистить все
- Выбрать все отфильтрованные -- выделить результаты фильтров
Массовая замена (Find & Replace)
Кнопка "Замена" справа от контейнера открывает модалку для массового изменения данных.
Применить к:
- Выделенным строкам -- только отмеченные чекбоксами
- Отфильтрованным строкам -- результаты текущих фильтров
- Всем строкам -- вся таблица без ограничений
Типы операций:
Заменить значение-- Draft -> ActiveДобавить (prefix/suffix)-- Hello -> Hello WorldОчистить значение-- Text -> (пусто)Применить формулу-- {name} - {code}
Дополнительно:
- Поддержка регулярных выражений (regex)
- Учет регистра (case sensitive)
- Предпросмотр изменений перед применением
- Отображение количества затронутых строк
Пример: найти "Draft" и заменить на "Active" в колонке Status для 5 выделенных строк.
Представления
Одни и те же данные можно отображать по-разному. Представления позволяют выбрать наиболее удобный формат для текущей задачи.
Типы представлений
Таблица
Классический табличный вид со всеми колонками. Идеален для детального просмотра и редактирования данных. Применение: CRM с контактами, Инвентарь, База данных
Канбан
Карточки, сгруппированные по колонкам статуса. Перетаскивайте карточки между колонками. Применение: Трекер задач, Процесс продаж, Найм сотрудников
Календарь
Записи отображаются на календаре по датам. Поддерживает события с длительностью. Применение: Встречи, Дедлайны, Контент-план
Таймлайн
Gantt-диаграмма с датами начала и окончания. Видна длительность и пересечения. Применение: Проекты, Roadmap, Планирование
Галерея
Карточки с превью изображений. Отлично для визуального контента. Применение: Портфолио, Каталог товаров, Мудборды
Чек-лист
Список задач с чекбоксами. Отмечайте выполненное, следите за прогрессом. Применение: To-do листы, Чек-листы, Привычки
График
Визуализация данных в виде графиков: столбчатые, линейные, круговые. Применение: Аналитика, Отчеты, Метрики
Типы колонок
Колонки определяют какие данные можно хранить в таблице. Выбирайте правильный тип для валидации и удобного редактирования.
Доступные типы
text -- Текст
Любой текст, заметки, описания.
Возможности:
- Шаблон отображения с переменными: {{name}} ({{code}})
- Префикс и суффикс для форматирования
- Поддержка формул в значении по умолчанию
- Перенос текста: одна строка, авто-перенос, ограниченный
Настройки:
formula-- Шаблон с переменными из других колонокprefix-- Текст перед значениемsuffix-- Текст после значенияdefaultValue-- Значение по умолчанию для новых строк
Пример: Шаблон: {{first_name}} {{last_name}} -> Иван Иванов
number -- Число
Числа, суммы, количество.
Возможности:
- Форматы: обычное число, валюта, процент (%)
- Минимальное и максимальное значение
- Шаг для кнопок +/- в ячейке
- Количество знаков после запятой
Настройки:
format-- number | currency | percentmin / max-- Ограничения значенийstep-- Шаг изменения (по умолчанию 1)decimals-- Знаков после запятой (0-10)
Пример: Формат: currency, decimals: 2 -> 1 234,50 руб.
select -- Выбор (Select)
Одно значение из списка опций с цветами.
Возможности:
- Список опций с цветовой кодировкой
- Импорт опций из CSV или другой таблицы
- Автоматический сбор опций из существующих данных
- Поддержка relation для подгрузки из связанной таблицы
Настройки:
options-- Массив { id, label, color }relation.tableId-- Таблица-источник опцийrelation.valueColumn-- Колонка со значениямиrelation.labelColumn-- Колонка с лейблами
Пример: Статус: Новый | В работе | Готово
multi-select -- Мульти-выбор (Multi-Select)
Несколько значений из списка (теги, категории).
Возможности:
- Выбор нескольких значений из списка
- Режим relation -- подгрузка опций из связанной таблицы
- 4 формата отображения: badges, list, count, first
- 4 формата хранения: json, comma, semicolon, newline
Настройки:
relation.tableId-- Таблица с опциямиrelation.valueColumn-- Колонка со значениями (id)relation.labelColumn-- Колонка с лейбламиrelation.colorColumn-- Колонка с цветами (опционально)relation.displayMode-- badges | list | count | firstrelation.storageFormat-- json | comma | semicolon | newline
Пример: Теги: [React] [TypeScript] [Node.js] или "3 тега"
datetime -- Дата и время
Конкретная дата и время.
Возможности:
- 3 формата хранения: ISO 8601, Unix (сек), Unix (мс)
- Выбор часового пояса: UTC или браузерный
- 11 форматов отображения
- Поддержка NOW() для текущей даты
Настройки:
storageFormat-- ISO8601 | unix | unix_mstimezone-- UTC | browserdisplayFormat-- 25.12.2024 10:30, 25 декабря 2024, и др.
Пример: Хранение: 2024-12-25T10:30:00Z -> Показ: 25 декабря 2024, 13:30
time -- Время (Cron)
Расписание для cron-задач (HH:MM, день месяца).
Возможности:
- Ввод времени в формате HH:MM
- Выбор дня месяца для периодических задач
- Интеграция с автоматизациями
- Визуальный редактор расписания
Настройки:
format-- HH:MM | cron expressiondayOfMonth-- День месяца (1-31)repeatType-- daily | weekly | monthly
Пример: 09:00 каждый день или 15:30 каждое 1-е число месяца
checkbox -- Чекбокс
Да/Нет, включено/выключено.
Возможности:
- Настраиваемые значения для Да/Нет
- 3 стиля: галочка, переключатель, да/нет
- Значение по умолчанию
Настройки:
trueValue-- Значение для "Да" (1, true, yes...)falseValue-- Значение для "Нет" (0, false, no...)style-- checkbox | toggle | yesno
Пример: Стиль toggle: ВКЛ / ВЫКЛ
url -- URL (ссылка)
Ссылки на сайты и ресурсы.
Возможности:
- Шаблон URL с переменными из других колонок
- Настраиваемый текст ссылки
- Открытие в новой вкладке
- Превью ссылки
Настройки:
template-- Шаблон: https://site.com/{{id}}linkText-- Текст вместо URL
Пример: Шаблон: https://shop.com/products/{{slug}} -> Открыть товар
email -- Email
Электронная почта.
Возможности:
- 4 формата отображения
- Кнопка "Написать письмо"
- Копирование по клику
- Маскирование для конфиденциальности
Настройки:
displayFormat-- full | link | masked | domain
Пример: Masked: u***@e***.com, Domain: @example.com
phone -- Телефон
Номера телефонов.
Возможности:
- 4 формата отображения
- Автоформатирование по стране
- Кнопки: позвонить, WhatsApp, Telegram
- Маскирование для конфиденциальности
Настройки:
format-- full | national | international | maskedcountry-- ru | us | uk | de
Пример: +79001234567 -> 8 (900) 123-45-67 (RU) или +7 *** *--67
file -- Файл
Загрузка файлов.
Возможности:
- Загрузка одного или нескольких файлов
- Формула для вычисляемого пути
- Префикс (домен) и суффикс (параметры)
- Форматы: полный URL, имя файла, путь
Настройки:
formula-- Шаблон: {{folder}}/{{filename}}prefix-- Например: https://cdn.site.com/suffix-- Например: ?v=2
Пример: prefix + formula -> https://cdn.site.com/docs/report.pdf
image -- Изображение
Загрузка и отображение изображений.
Возможности:
- 4 режима галереи: стек, карусель, сетка, одно фото
- Настраиваемая высота (32-200px)
- Форма: квадрат, скругленный, круг
- Лайтбокс при клике
Настройки:
galleryMode-- stack | carousel | grid | singleheight-- Высота в пикселях (32-200)shape-- square | rounded | circlefit-- cover | contain | fill
Пример: Режим stack: [фото][фото][фото] +3 фото
person -- Пользователь
Ссылка на пользователя системы.
Возможности:
- 3 источника: системные пользователи, из таблицы, ручной ввод
- 5 форматов отображения
- Аватар и имя
Настройки:
source-- system | table | manualdisplayFormat-- name | avatar | avatar_name | email | card
Пример: Иван Иванов или ivan@company.com
relation -- Связь (Relation)
Ссылка на запись из другой таблицы.
Возможности:
- Выбор связанной таблицы
- Настраиваемая колонка для отображения
- Переход к связанной записи по клику
- Множественная связь (многие-ко-многим)
Настройки:
linkedTableId-- ID связанной таблицыdisplayColumn-- Колонка для отображения
Пример: Клиент: -> Иванов Иван (клик открывает карточку)
table -- Встроенная таблица
Отображает записи из другой таблицы, отфильтрованные по текущей строке.
Возможности:
- Показывает связанные записи прямо в ячейке
- Фильтрация по ключу текущей строки
- Выбор колонок для отображения
- Пагинация при большом количестве
Настройки:
sourceTableId-- Таблица-источникfilterColumn-- Колонка для фильтрацииdisplayColumns-- Колонки для отображения
Пример: Товар -> [Подтовары: Размер S | Размер M | Размер L]
rollup -- Сводка (Rollup)
Агрегация данных из связанной таблицы.
Возможности:
- 10 функций агрегации
- 4 формата вывода: число, валюта, процент, компактный
- Автоматический пересчет при изменении данных
Настройки:
function-- sum | count | avg | min | max | percent | range | countAll | countValues | countUniqueformat-- number | currency | percent | compact
Пример: Сумма заказов: 125 400 руб. или Кол-во: 47 шт.
vector -- Вектор (AI поиск)
Векторные эмбеддинги для семантического поиска.
Возможности:
- AI-эмбеддинги для поиска по смыслу
- Формула для составления текста
- Интеграция с OpenAI text-embedding-ada-002
- Хранение в PostgreSQL + pgvector
Настройки:
formula-- Шаблон: {{title}} {{description}}prefix-- Контекст перед текстомsuffix-- Контекст после текста
Пример: Запрос: "синие джинсы" -> Найдено: "Брюки деним navy" (95%)
button -- Кнопка
Кнопка для действий.
Возможности:
- 3 типа действий: открыть URL, webhook, автоматизация
- Поддержка переменных в URL
- 3 стиля: primary, secondary, danger
Настройки:
action-- url | webhook | automationurl-- URL с переменными: /edit/{{id}}style-- primary | secondary | danger
Пример: [Редактировать] -> /admin/edit/{{id}}
audio -- Аудио
Аудио плеер для воспроизведения звуков.
Возможности:
- Встроенный аудио плеер в ячейке
- Поддержка URL на аудио файлы
- Формула для вычисления пути
- Префикс (домен CDN)
Настройки:
formula-- Шаблон: audio/{{filename}}.mp3prefix-- URL CDN: https://cdn.site.com/
Пример: [0:00 / 3:45] -> воспроизведение из CDN
password -- Пароль
Зашифрованный текст.
Возможности:
- Скрытое отображение: --------
- Безопасное хранение
- Кнопка показать/скрыть
- Копирование в буфер
Настройки:
showButton-- Показывать кнопку "глазик"
Пример: Поле ввода: [--------]
formula -- Формула
Вычисляемое поле.
Возможности:
- JavaScript выражения
- Доступ к данным других колонок
- Автопересчет при изменении
- Форматирование результата
Настройки:
expression-- JS выражение: price * qtyformat-- number | currency | percent
Пример: Итого: price * qty * (1 - discount/100) -> 8 500 руб.
dialog -- AI Диалог
AI диалог / переписка.
Возможности:
- История переписки с AI
- Контекст из текущей строки
- Интеграция с AI агентами
- Сохранение диалога в строке
Настройки:
agentId-- ID AI агента для диалогаcontextColumns-- Колонки для контекста
Пример: Диалог с AI по карточке клиента
chat -- AI Чат
AI чат-разговор.
Возможности:
- Полноценный чат с AI
- История сообщений
- Стриминг ответов
- Поддержка разных моделей
Настройки:
model-- Модель: gpt-4, claude-3, etc.systemPrompt-- Системный промпт
Пример: Чат с ИИ-ассистентом в ячейке
Векторная колонка (AI поиск)
Что такое векторная колонка?
Векторная колонка автоматически создает AI-эмбеддинги (векторные представления) из текстовых данных, что позволяет искать записи по смыслу, а не по точному совпадению слов.
Применение:
- Поиск похожих товаров
- Семантический поиск документов
- Рекомендации контента
- Дублирование записей
Технология:
- OpenAI text-embedding-ada-002
- Хранение в PostgreSQL + pgvector
- Косинусное сходство для поиска
- Автоматическая векторизация
Настройки векторной колонки
formula (необязательно) -- Формула для создания текста, который будет векторизован. Поддерживает переменные из других колонок.
{{title}} {{articul}}
{{description}}
Категория: {{category_id}}
Бренд: {{brand_id}}
prefix (необязательно) -- Текст, добавляемый перед формулой. Используется для контекста. Например: "Товар: "
suffix (необязательно) -- Текст, добавляемый после формулы. Например: " (в наличии)"
Пример: Поиск товаров
Пользователь ищет "синие джинсы мужские". Система найдет товары с похожим смыслом, даже если слова отличаются: "Брюки деним navy для мужчин".
Запрос: синие джинсы мужские -> Результат: Брюки деним navy (95% сходство)
Действия с колонками
Создание колонки
- Клик по кнопке
+ Добавить колонкув заголовке таблицы - Выберите тип колонки из списка (text, number, select и т.д.)
- Укажите название и системное имя (автоматически генерируется из названия)
- Настройте параметры в зависимости от типа
- Нажмите
Сохранить
Редактирование
Клик по иконке шестеренки в заголовке колонки или правая кнопка мыши -> Настройки
Удаление
Настройки колонки -> внизу кнопка "Удалить колонку". Данные будут потеряны!
Перемещение
Перетащите заголовок колонки влево/вправо для изменения порядка отображения
Скрытие/Показ
Правая кнопка на заголовке -> Скрыть колонку. Восстановить через меню "Скрытые колонки"
Дублирование
Настройки колонки -> Дублировать. Создает копию со всеми настройками
Изменение ширины
Перетащите границу между заголовками колонок или укажите точное значение в пикселях
Настройки отображения
Ширина колонки
Размер в пикселях (80-800px). Значения: Авто, 150px (по умолчанию), 200px, 300px...
Выравнивание текста
Горизонтальное выравнивание содержимого: Слева, По центру, Справа
Перенос текста
Поведение при переполнении ячейки:
- nowrap -- Одна строка с обрезкой ...
- wrap -- Автоматический перенос, высота по содержимому
- ellipsis -- Ограниченный перенос (2-3 строки) + ...
Типографика
Размер шрифта (10-24px), жирный, курсив, моноширинный
Цвета
Цвет текста и цвет фона ячейки
Формулы и переменные
Что такое формулы?
Формулы позволяют автоматически вычислять значения на основе других колонок. Используйте переменные в фигурных скобках {{column_name}} для подстановки значений.
Пример:
{{first_name}} {{last_name}} ({{email}})
Результат: Иван Петров (ivan@example.com)
Синтаксис переменных
{{column_name}} -- Базовая подстановка значения из колонки
{{title}} - {{price}} руб.
{{value}} -- Текущее значение ячейки (для формул типа файл, вектор)
Префикс: https://cdn.example.com/
Формула: {{folder}}/{{value}}
Результат: https://cdn.example.com/images/photo.jpg
NOW() -- Специальная функция для текущей даты и времени
Значение по умолчанию: NOW()
Результат: 2025-12-13T23:45:00
Где можно использовать формулы
- Текстовые колонки -- Шаблон отображения, префикс, суффикс
- Файлы и изображения -- Формула пути, префикс URL
- URL колонки -- Шаблон ссылки, текст ссылки
- Векторные колонки -- Формула векторизации текста
- Кнопки -- URL для перехода, webhook endpoint
- Значения по умолчанию -- Для любого типа колонки
Практические примеры формул
- Полное имя:
{{first_name}} {{middle_name}} {{last_name}} - URL товара:
https://shop.com/products/{{id}}/{{slug}} - Путь к файлу:
{{year}}/{{month}}/{{category}}/{{filename}} - Описание для поиска:
{{brand}} {{model}} {{color}} {{size}}
Важные замечания
- Если колонка не существует,
{{unknown}}будет выделена красным - Существующие колонки подсвечиваются
{{name}}зеленым - Формулы пересчитываются автоматически при изменении исходных данных
- В формулах учитывается регистр:
{{Name}}!={{name}}
Настройки колонок
- Название -- Отображаемое имя колонки
- Тип -- Определяет формат данных
- Обязательность -- Требовать заполнение
- Значение по умолчанию -- Автоматически подставляется
- Ширина -- Размер колонки в таблице
- Видимость -- Скрыть/показать колонку
Фильтры и поиск
Фильтры помогают найти нужные записи в большом объеме данных. Комбинируйте условия для точного результата.
Поиск
Быстрый поиск по всем текстовым полям:
- Введите текст в поле поиска -- результаты обновятся мгновенно
- Поиск работает по названию и текстовым колонкам
- Можно выбрать конкретные колонки для поиска
Типы фильтров
Фильтр по выбору
Показать записи с определенными значениями в колонке типа Select/Multiselect.
Пример: Статус = 'В работе' ИЛИ 'На проверке'
Фильтр по дате
Показать записи в определенном диапазоне дат.
Пример: Дедлайн: с 1 декабря по 31 декабря
Комбинированные фильтры
Несколько фильтров применяются одновременно (условие И).
Пример: Статус = 'В работе' И Исполнитель = 'Иван'
Сортировка
Упорядочивание записей:
- Клик по заголовку колонки -- сортировка по возрастанию
- Повторный клик -- сортировка по убыванию
- Работает для текста, чисел и дат
Виджеты и дашборды
Виджеты позволяют вынести данные из таблиц на дашборд в удобном формате. Создавайте обзорные панели для быстрого мониторинга.
Создание виджета
- Перейдите на дашборд пространства и нажмите
+ Добавить виджет - Выберите тип представления (канбан, календарь, график и т.д.)
- Укажите таблицу-источник данных
- Настройте маппинг полей и фильтры в настройках виджета
Типы виджетов
- Таблица
- Канбан
- Календарь
- Таймлайн
- График
- Чек-лист
Управление дашбордом
- Изменение размера -- перетащите угол виджета
- Перемещение -- перетащите виджет за заголовок
- Настройки -- нажмите шестеренку в углу виджета
- Удаление -- через меню настроек виджета
Автоматизации
Автоматизируйте рутинные действия. Когда происходит определенное событие -- система выполняет заданные действия автоматически.
Триггеры (когда запускать)
- Создание записи -- Когда в таблицу добавляется новая запись
- Обновление записи -- Когда изменяется любое поле записи
- Изменение поля -- Когда изменяется конкретное поле (например, статус)
- Удаление записи -- Когда запись удаляется из таблицы
Действия (что делать)
- Отправить уведомление -- Email или push-уведомление пользователю
- Обновить запись -- Автоматически изменить поля записи
- Создать запись -- Добавить новую запись в эту или другую таблицу
- Вызвать Webhook -- Отправить HTTP-запрос на внешний сервис
Примеры автоматизаций
- КОГДА Статус задачи -> 'Готово' ТОГДА Отправить уведомление автору задачи
- КОГДА Создана новая заявка ТОГДА Назначить ответственного менеджера
- КОГДА Дедлайн через 1 день ТОГДА Напомнить исполнителю
Webhooks
Интеграция с внешними сервисами.
Webhooks позволяют отправлять данные из CRM во внешние системы при определенных событиях.
- Интеграция с Telegram ботами
- Синхронизация с внешними CRM
- Отправка данных в аналитические системы
- Запуск процессов в n8n, Zapier, Make
REST API
GOD CRM предоставляет полнофункциональный REST API для интеграции с внешними системами. Все эндпоинты возвращают JSON и требуют аутентификации.
Аутентификация
API поддерживает два способа аутентификации: JWT токены и API ключи.
API Ключи (рекомендуется для интеграций)
Создайте API ключ в Настройках -> API Ключи. Ключ начинается с sk-
Использование через заголовок X-API-Key:
X-API-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Или через Authorization:
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
JWT Токены (для веб-приложений)
Получите токен через POST /api/v3/auth/login
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Базовый URL
https://crm.hltrn.cc/api/v3
Управление API ключами
GET /api-keys -- Получить список ваших API ключей
POST /api-keys -- Создать новый API ключ
Request Body:
{
"name": "string",
"scopes": ["*"],
"expires_in_days": "number"
}
DELETE /api-keys/:id -- Удалить (отозвать) API ключ
Доступные права (scopes)
*-- полный доступtables:readtables:writerows:readrows:writewidgets:readwidgets:write
Таблицы API
GET /tables -- Получить список всех таблиц
POST /tables -- Создать новую таблицу
Request Body:
{
"name": "string",
"space_id": "number",
"emoji": "string"
}
GET /tables/:id -- Получить информацию о таблице
PATCH /tables/:id -- Обновить таблицу
Request Body:
{
"name": "string",
"emoji": "string"
}
DELETE /tables/:id -- Удалить таблицу
Колонки API
GET /tables/:tableId/columns -- Получить колонки таблицы
POST /tables/:tableId/columns -- Создать колонку
Request Body:
{
"name": "string",
"type": "text|number|select|datetime|...",
"options": "object"
}
PATCH /columns/:id -- Обновить колонку
DELETE /columns/:id -- Удалить колонку
Типы колонок
text, number, select, multi_select, datetime, time, checkbox, url, email, phone, rating, file, image, relation, lookup, formula, rollup, json, vector
Записи API
GET /tables/:tableId/rows -- Получить записи таблицы
Query: ?limit=50&offset=0&sort=column_id&order=asc
POST /tables/:tableId/rows -- Создать запись
Request Body:
{
"values": {
"column_id": "value"
}
}
GET /rows/:id -- Получить запись по ID
PATCH /rows/:id -- Обновить запись
Request Body:
{
"values": {
"column_id": "new_value"
}
}
DELETE /rows/:id -- Удалить запись
POST /tables/:tableId/rows/batch -- Массовое создание записей
Request Body:
{
"rows": [
{ "values": {} },
{ "values": {} }
]
}
Представления API
GET /tables/:tableId/views -- Получить представления таблицы
POST /tables/:tableId/views -- Создать представление
Request Body:
{
"name": "string",
"type": "table|kanban|calendar|gallery",
"config": "object"
}
PATCH /views/:id -- Обновить представление
DELETE /views/:id -- Удалить представление
Виджеты API
GET /dashboards/:dashboardId/widgets -- Получить виджеты дашборда
POST /dashboards/:dashboardId/widgets -- Создать виджет
Request Body:
{
"type": "chart|stat|kanban|calendar|...",
"config": "object",
"position": { "x": 0, "y": 0, "w": 2, "h": 2 }
}
PATCH /widgets/:id -- Обновить виджет
DELETE /widgets/:id -- Удалить виджет
Типы виджетов
- chart -- графики
- stat -- статистика
- kanban -- канбан-доска
- calendar -- календарь
- task_list -- список задач
- table -- мини-таблица
Вебхуки API
GET /tables/:tableId/webhooks -- Получить вебхуки таблицы
POST /tables/:tableId/webhooks -- Создать вебхук
Request Body:
{
"url": "string",
"events": ["row.created", "row.updated", "row.deleted"],
"secret": "string"
}
DELETE /webhooks/:id -- Удалить вебхук
События вебхуков
row.created-- создание записиrow.updated-- обновление записиrow.deleted-- удаление записи
Внешние источники API
GET /data-sources -- Получить список источников данных
POST /data-sources -- Создать внешний источник
Request Body:
{
"name": "string",
"type": "postgres|mysql|api",
"connection": "object"
}
POST /data-sources/:id/sync -- Синхронизировать данные
DELETE /data-sources/:id -- Удалить источник
Vector API (Семантический поиск)
Что это?
Vector API позволяет создавать векторные эмбеддинги текста и искать похожие записи по смыслу, а не по точному совпадению слов. Использует OpenAI embeddings и PostgreSQL с расширением pgvector.
| Параметр | Значение |
|---|---|
| Модель | text-embedding-ada-002 |
| Размерность | 1536 dimensions |
| Сходство | Cosine similarity |
POST /api/v3/ai/vector/embed -- Создать и сохранить эмбеддинг для текста
Request Body:
{
"workspaceId": "number",
"tableId": "number",
"rowId": "number",
"text": "string",
"metadata": "object"
}
Пример запроса /embed:
{
"workspaceId": 1,
"tableId": 5,
"rowId": 123,
"text": "Смартфон Apple iPhone 15 Pro 256GB Blue Titanium",
"metadata": {
"category": "electronics",
"price": 99999
}
}
POST /api/v3/ai/vector/search -- Поиск похожих записей по тексту запроса
Request Body:
{
"workspaceId": "number",
"queryText": "string",
"tableId": "number",
"limit": "number (default: 10)",
"metadataFilters": "object"
}
Пример запроса /search:
{
"workspaceId": 1,
"queryText": "телефон айфон синий",
"tableId": 5,
"limit": 5,
"metadataFilters": {
"category": "electronics"
}
}
Пример ответа:
{
"success": true,
"results": [
{
"rowId": 123,
"similarity": 0.94,
"metadata": {
"category": "electronics",
"text_content": "Смартфон Apple iPhone 15 Pro 256GB Blue Titanium"
}
},
{
"rowId": 124,
"similarity": 0.89,
"metadata": {
"text_content": "iPhone 15 Blue 128GB"
}
}
],
"count": 2
}
POST /api/v3/ai/vector/batch -- Массовое создание эмбеддингов
Request Body:
{
"workspaceId": "number",
"items": [
{ "tableId": "number", "rowId": "number", "text": "string", "metadata": "object" }
]
}
POST /api/v3/ai/vector/generate-cell -- Создать эмбеддинг для векторной колонки с учетом формулы
Request Body:
{
"tableId": "number",
"rowId": "number",
"columnId": "number"
}
Как работает /generate-cell
Этот эндпоинт читает настройки векторной колонки (formula, prefix, suffix), подставляет значения из других колонок строки, формирует итоговый текст и создает эмбеддинг.
- Формула колонки: Префикс: "Товар: " + Formula: {{title}} {{category}} + Суффикс: " в наличии"
- Данные строки: title: "iPhone 15", category: "Смартфоны"
- Итоговый текст: "Товар: iPhone 15 Смартфоны в наличии"
- Создание эмбеддинга через OpenAI API
GET /api/v3/ai/vector/stats/:workspaceId -- Получить статистику по эмбеддингам
Требования
- OPENAI_API_KEY -- API ключ OpenAI в переменных окружения
- PostgreSQL + pgvector -- база данных с расширением для векторов
- База business_crm_vectors -- отдельная БД для хранения эмбеддингов
Примеры использования
Создание записи (cURL)
curl -X POST https://crm.hltrn.cc/api/tables/1/rows \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"values": {
"name": "Новый клиент",
"email": "client@example.com",
"status": "new"
}
}'
JavaScript/Fetch
const response = await fetch('/api/tables/1/rows', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
values: {
name: 'Новый клиент',
email: 'client@example.com',
}
})
});
const newRow = await response.json();
console.log('Created row:', newRow.id);
Обработка ошибок
API возвращает стандартные HTTP коды и JSON с описанием ошибки:
| Код | Описание |
|---|---|
200 |
OK -- успешно |
201 |
Created -- создано |
400 |
Bad Request -- ошибка запроса |
401 |
Unauthorized -- не авторизован |
404 |
Not Found -- не найдено |
500 |
Server Error -- ошибка сервера |
Формат ошибки:
{
"error": true,
"message": "Table not found",
"code": "TABLE_NOT_FOUND"
}
AI Агенты
Интеллектуальные помощники, которые понимают ваши данные и помогают работать с ними. Агенты могут отвечать на вопросы, анализировать данные и выполнять задачи.
Что такое AI Агенты?
AI Агенты -- это настраиваемые AI-помощники на базе GPT-4, Claude или других моделей. Каждый агент имеет свою роль, знания и инструменты.
- Персонализация -- Настройте системный промпт, модель и инструменты под свои задачи
- Контекст данных -- Агент понимает структуру ваших таблиц и может работать с данными
- Множество провайдеров -- OpenAI, Anthropic, Google, Ollama -- выбирайте подходящую модель
- Мониторинг -- Отслеживание использования токенов, стоимости и качества ответов
Быстрый старт
- Создайте пространство "AI Agents" -- Или используйте существующее. В пространстве должны быть таблицы: Agents, Models, Providers, API Keys.
- Добавьте API ключ провайдера -- В таблицу API Keys добавьте ключ от OpenAI, Anthropic или другого провайдера.
- Создайте агента -- В таблице Agents создайте запись с именем, описанием, системным промптом и выбором модели.
- Начните диалог -- Нажмите на иконку чата в правом нижнем углу и выберите агента.
Настройка агента
name-- Имя агента для отображения в спискеdescription-- Краткое описание назначения агентаsystem_prompt-- Системный промпт, определяющий поведение и роль агентаmodel-- Связь с таблицей Models -- выбор AI моделиprovider_id-- Связь с таблицей Providers -- выбор провайдера APIapi_key_id-- Связь с таблицей API Keys -- ключ для авторизацииtools-- JSON массив доступных инструментов агентаis_active-- Checkbox -- активен ли агент для использования
AI агенты и векторный поиск
Семантический поиск данных
AI агенты могут использовать векторный поиск для интеллектуального анализа данных. Вместо точного совпадения слов, агент понимает смысл запроса и находит релевантные записи.
Пример 1: Поиск похожих товаров
Вопрос: "Найди товары похожие на iPhone 15"
Агент: Использует Vector API для поиска товаров с похожими характеристиками: смартфоны премиум-класса, большой экран, хорошая камера -> находит Samsung S24 Ultra, Google Pixel 8 Pro
Пример 2: Поиск документов по смыслу
Вопрос: "Где информация про работу с клиентами?"
Агент: Ищет документы семантически связанные с CRM, клиентским сервисом, продажами -> находит "CRM Руководство", "Обработка заявок", "Скрипты продаж"
Пример 3: Рекомендации
Вопрос: "Что еще может понравиться клиенту, который купил ноутбук для дизайна?"
Агент: Анализирует покупку через векторный поиск -> рекомендует графический планшет, внешний монитор 4K, мышь для дизайнеров, подписку Adobe Creative Cloud
Как включить векторный поиск для агента
- Создайте векторную колонку в нужной таблице
- Настройте формулу векторизации (какие поля включать)
- Добавьте инструмент
vector_searchагенту - В системном промпте укажите, когда использовать векторный поиск
Поддерживаемые провайдеры
- OpenAI -- GPT-4, GPT-4 Turbo, GPT-3.5
- Anthropic -- Claude 3.5, Claude 3 Opus
- Google -- Gemini 1.5 Pro, Gemini Flash
- Ollama -- Llama 3.2, Mistral, CodeLlama
Логи сообщений
Все взаимодействия с агентами автоматически логируются в таблицу "Message Logs":
- agent_name
- user_id
- model
- message
- response
- tokens_in/out
- status
- timestamp
Советы
- Системный промпт -- Четко определите роль агента. Например: "Ты аналитик продаж. Отвечай кратко и по делу."
- Выбор модели -- GPT-4 Turbo для сложных задач, GPT-3.5 для простых -- экономьте токены разумно.
- Переменные в промптах -- Используйте шаблоны вида {{table.column}} для динамической подстановки данных из таблиц.
AI Agents API
API для работы с AI-агентами, провайдерами и моделями. Позволяет управлять искусственным интеллектом в вашем рабочем пространстве.
Обзор возможностей
- AI Агенты -- Создание и управление интеллектуальными помощниками
- Чат с агентами -- Отправка сообщений и получение ответов от AI
- Провайдеры -- OpenAI, Anthropic, Google, Ollama
- Модели -- GPT-4, Claude, Gemini и другие
Базовый URL
https://crm.hltrn.cc/api/v3/ai
Агенты
GET /ai/agents -- Получить список всех агентов
GET /ai/agents/:spaceId -- Получить агентов для конкретного пространства
POST /ai/agents -- Создать нового агента
Request Body:
{
"name": "string",
"description": "string",
"model": "gpt-4-turbo",
"provider": "openai",
"system_prompt": "string",
"tools": ["string"]
}
PATCH /ai/agents/:id -- Обновить агента
Request Body:
{
"name": "string",
"model": "string",
"system_prompt": "string"
}
DELETE /ai/agents/:id -- Удалить агента
Чат с агентом
POST /ai/chat -- Отправить сообщение агенту и получить ответ
Request Body:
{
"agentId": "number",
"message": "string",
"conversationId": "string",
"context": "object"
}
Пример ответа:
{
"success": true,
"response": "Привет! Я готов помочь вам с задачами...",
"conversationId": "conv_abc123",
"model": "gpt-4-turbo",
"usage": {
"promptTokens": 150,
"completionTokens": 85,
"totalTokens": 235
}
}
GET /ai/conversations/:conversationId -- Получить историю диалога
DELETE /ai/conversations/:conversationId -- Удалить диалог
Провайдеры AI
GET /ai/providers -- Получить список провайдеров AI
Поддерживаемые провайдеры:
openai-- OpenAI (GPT-4, GPT-3.5)anthropic-- Anthropic (Claude)google-- Google (Gemini)ollama-- Ollama (локальные модели)
POST /ai/providers -- Добавить провайдера
Request Body:
{
"name": "string",
"provider_key": "openai|anthropic|google|ollama",
"base_url": "string",
"is_active": true
}
PATCH /ai/providers/:id -- Обновить провайдера
DELETE /ai/providers/:id -- Удалить провайдера
Модели
GET /ai/models -- Получить список всех моделей
GET /ai/models?providerId=:id -- Получить модели конкретного провайдера
Популярные модели:
- OpenAI: gpt-4-turbo, gpt-4o, gpt-3.5-turbo
- Anthropic: claude-3-5-sonnet-20241022, claude-3-opus
- Google: gemini-1.5-pro, gemini-1.5-flash
- Ollama: llama3.2, mistral, codellama
POST /ai/models -- Добавить модель
Request Body:
{
"provider_id": "number",
"model_id": "gpt-4-turbo",
"display_name": "GPT-4 Turbo",
"context_window": 128000,
"is_active": true
}
PATCH /ai/models/:id -- Обновить модель
DELETE /ai/models/:id -- Удалить модель
Обновление моделей
POST /ai/providers/:providerId/refresh-models -- Обновить список моделей от провайдера через API
Пример ответа:
{
"success": true,
"message": "Обновлено моделей: 17",
"added": 12,
"updated": 5,
"models": [
{ "model_id": "gpt-4-turbo", "display_name": "GPT-4 Turbo" },
{ "model_id": "gpt-4o", "display_name": "GPT-4o" }
]
}
Важно: Для обновления моделей требуется настроенный API ключ провайдера в таблице API Keys. Поддерживается автоматическое обновление для OpenAI и Anthropic.
API Ключи для AI
API ключи провайдеров хранятся в таблице "API Keys" пространства "AI Agents".
Структура записи API Key:
{
"provider": "openai",
"key_name": "OpenAI API",
"api_key": "sk-...",
"is_active": true,
"last_used": "2024-01-15"
}
Инструменты агентов
Агенты могут использовать инструменты для взаимодействия с CRM.
| Инструмент | Описание |
|---|---|
get_workspace_info |
Получить информацию о пространствах, проектах и таблицах |
query_table_data |
Выполнить запрос к данным таблицы |
create_table |
Создать новую таблицу |
create_row |
Добавить запись в таблицу |
update_row |
Обновить запись в таблице |
create_dashboard |
Создать дашборд |
create_widget |
Добавить виджет на дашборд |
search_records |
Поиск записей по критериям |
Примеры использования
Отправить сообщение агенту (cURL)
curl -X POST https://crm.hltrn.cc/api/v3/ai/chat \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"agentId": 1,
"message": "Покажи статистику продаж за этот месяц",
"context": {
"spaceId": 5,
"tableId": 12
}
}'
JavaScript / Fetch
const response = await fetch('/api/v3/ai/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
agentId: 1,
message: 'Создай отчет по задачам',
conversationId: 'conv_existing_id' // опционально
})
});
const { response: aiResponse, usage } = await response.json();
console.log('AI ответил:', aiResponse);
console.log('Использовано токенов:', usage.totalTokens);
Обновить модели провайдера
// Получить свежий список моделей от OpenAI
const result = await fetch('/api/v3/ai/providers/1/refresh-models', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_TOKEN' }
});
const { added, updated, models } = await result.json();
console.log(`Добавлено: ${added}, обновлено: ${updated}`);
Обработка ошибок
| Код | Описание |
|---|---|
400 |
Неверный запрос |
401 |
Не авторизован |
404 |
Агент не найден |
500 |
Ошибка AI провайдера |
Формат ошибки AI:
{
"success": false,
"error": "AI_PROVIDER_ERROR",
"message": "OpenAI API rate limit exceeded",
"details": {
"provider": "openai",
"model": "gpt-4-turbo"
}
}