Руководство Melbis Shop: оглавление
Окно «Проектирование → AI-компоненты» — всё, что магазин даёт AI-помощнику, на трёх вкладках:
Как помощник всем этим пользуется — «AI-помощник». Окно редактируется в режиме блокировки: правки применяются кнопками «Сохранить» / «Сохранить и выйти» (см. «Три режима работы с данными»). Открыть окно позволяет право «Проектирование → AI-компоненты → Получить», сохранить — «Сохранить».
Всё, что AI-помощник умеет, одинаково в любом магазине Melbis: файлы, данные, деревья, витрина. AI-инструменты — исключение: их пишет владелец под свой магазин. Завести товар так, как заводит его именно он, с его проверкой дублей и его расчётом цены; закрыть заказ по его правилам.
Список инструментов — данные, а не код: заведённая строка появляется у помощника со следующим подключением, и обновлять для этого ни программу, ни движок не нужно.
Инструмент стоит завести, когда видно одно из двух:
Слева «Каталог инструментов», справа «Команды инструмента» выбранного, а под ними у выбранной команды две вкладки: «Параметры команды» и «Права на команду».
Каталог устроен как остальные деревья программы: разделы-папки для группировки, признак группы ставится кнопкой на панели. Папка инструментом не является — у неё нет ни команд, ни разрешений, и помощнику она не видна.
Команду можно перенести в другой инструмент: строки, перетащенные из таблицы команд на инструмент в каталоге, переезжают к нему. Папка их не принимает.
| Поле | Что задаёт |
|---|---|
| Наименование | имя строки в каталоге; помощник видит его как название инструмента |
| Модуль | имя файла модуля в папке units; им же помощник
зовёт инструмент |
| Описание для AI-помощника | что инструмент делает и когда его звать |
Описание читает не человек, а модель, и это единственное, по чему она решает, брать инструмент или нет. Поэтому пишется оно как инструкция, а не как подпись в интерфейсе: что делает, в каких случаях звать, чего не делает, какие есть оговорки. Всё, чего в описании нет, помощник додумает сам.
Модуль готовит разработчик — как устроен такой модуль, описано в разделе «AI-инструменты» руководства разработчика.
| Поле | Что задаёт |
|---|---|
| Команда | слово, которым помощник называет одно дело инструмента |
| Описание для AI-помощника | что команда делает, когда её звать и чего она не делает |
Порядок строк задаётся стрелками — в этом же порядке команды видит помощник.
Имя команды — это имя функции модуля, которая её
выполняет: CmdList, CmdAdd,
CmdUpdate, CmdRemove. Приставка
Cmd отличает команду от внутренних функций модуля, которых
помощник не видит.
Список команд — ещё и защита от выдумки: слово, которого инструмент не объявлял, движок отбивает сразу и перечисляет в ответе объявленные.
Поля команды тоже объявляются здесь, по строке на поле: имя, описание, тип (число, строка, да/нет, день, час, json, поток строк, файлы), обязательность и значение по умолчанию. По этим строкам движок сам проверяет каждый вызов до модуля: лишнее поле, пропущенное обязательное или число, присланное словом, возвращаются отказом — разработчику модуля эта рутина не достаётся вовсе.
К типу можно дописать /json — тогда
поле принимает и одно значение, и список: int/json для
«одного товара или сразу нескольких», float/json для
диапазона цены, datetime/json для «с такого дня по такой».
Каждое значение списка движок проверяет тем же типом, поэтому список
остаётся таким же защищённым, как одиночное значение.
Отдельно стоит тип «поток строк»
(jsonl) — для инструментов, которые грузят пачку однородных
записей: товары из прайса, значения характеристик, цены. Помощник
передаёт в такое поле либо сами строки, либо файл со своей машины, по
записи на строку — и тогда данные едут в магазин, минуя переписку.
Разница ощутима: сотню товаров помощник надиктовывает минутами, а
файлом, который написал его же скрипт, грузит за секунду.
Право выдаётся на команду — отметкой на пересечении «команда × сотрудник или группа». Сколько у инструмента команд, столько отдельных разрешений: можно позволить читать список, не позволяя добавлять и менять. Права сотрудника и его групп складываются.
Права раздаются людям, а не помощнику. Помощник работает от имени сотрудника, который его запустил (см. «AI-помощник»), и грант считается по этому человеку. Отсюда и то, что один и тот же инструмент у разных сотрудников умеет разное.
Команду, грант и поля движок проверяет сам, до модуля. Незнакомое слово, невыданная команда и не сошедшееся поле возвращаются готовым отказом, модуль их не увидит вовсе — ему остаются правила предметной области.
Перечень инструментов и команд помощник видит целиком, независимо от прав, — и про невыданную команду отвечает адресом, а не «доступа нет»: какая команда какого инструмента и где её выдают. Этот адрес и стоит передать администратору как есть. Сотрудник, которому разрешено сохранять настройки AI, владеет всеми командами автоматически — о чём и говорит сноска под таблицами разрешений.
С демонстрационным магазином идёт готовый набор: товары с ценами и описаниями, каталог и характеристики, файлы и профили картинок, реестр настроек, сотрудники, задачи планировщика. Точный перечень в документации не живёт — он данные магазина: полный и всегда свежий список стоит в «Проектирование → AI-компоненты» на вкладке «AI-инструменты», и этот же список помощник берёт перед первой задачей.
Пара примеров, как это выглядит:
Они же служат образцами для разработки собственных.
Заметки, которые помощник ведёт о магазине: правила работы, распоряжения сотрудников, решения и их причины. Помощник читает их в начале работы, поэтому следующая сессия — на другом компьютере, в другом приложении — начинается не с нуля. Здесь видна вся память: кто может открыть окно, видит заметки всех сотрудников.
Слева дерево «Пользователи»: «Все пользователи», под ним группы, в каждой — её сотрудники. Узел решает, чья заметка:
| Узел | Чья заметка | Кто пишет |
|---|---|---|
| «Все пользователи» | для всех сотрудников | администратор, в этом окне |
| группа | для сотрудников группы, основной или дополнительной | администратор, в этом окне |
| сотрудник | его собственная | помощник этого сотрудника, с его согласия; администратор — здесь |
Справа «Заметки» выбранного узла, строки окрашены по типу, под таблицей — текст текущей заметки. Порядок меняют «Переместить вверх» и «Переместить вниз».
Передать заметку — перетащить её из таблицы на другой узел дерева: заметка переедет туда. С нажатым Ctrl она скопируется — так правило, которое помощник записал одному сотруднику, отдают всей группе, а у автора оно остаётся.
Пока окно открыто, помощник не может ни записать новую заметку, ни удалить свою: окно держит память в работе. Закончив, закройте его.
| Поле | Что задаёт |
|---|---|
| Тип | вид заметки, см. ниже |
| Категория | свободные слова, по которым заметки группируются; список предлагает уже занятые, можно вписать новые |
| Время | когда заметку правили последний раз; ставится само |
| Название | короткое имя заметки |
| Описание для AI-помощника | одна строка о том, про что заметка |
| Текст заметки | сама заметка; двойной щелчок открывает визуальный редактор, вторая кнопка поля — исходный HTML |
Чья это заметка, в карточке не задаётся: это узел дерева, под которым её добавили.
Помощник читает память в два приёма: сначала названия и описания всех заметок, потом текст тех, что относятся к делу. Поэтому описание пишется для этого выбора — о чём заметка, а не её пересказ.
| Тип | Что это |
|---|---|
| Критическое | что соблюдается в каждой сессии; такие заметки помощник читает до любой другой работы |
| Приказ | распоряжение сотрудника |
| Навык | как работать с этим человеком |
| По умолчанию | всё остальное |
Свои типы добавляют в «Реестре настроек», на закладке «Базовые настройки»; помощник считает их как «По умолчанию».
Когда заметки расходятся, «Критическое», «Приказ» и «Навык» старше остальных типов, а среди них заметка для всех старше групповой, групповая — старше своей.
Разделы, в которых помощники сотрудников хранят рабочие данные — для себя на потом и друг для друга: незаконченную работу, промежуточные результаты, разобранные сайты, готовые скрипты. Разделы и права на них задаются здесь, а темы и записи пишут помощники — в окне их только читают.
Слева «Разделы репозитория» — дерево с обычными действиями: добавить раздел или подраздел, редактировать, удалить, переместить, перетащить ветку. Папка (признак группы) только группирует разделы: ни тем, ни прав у неё нет. Новый подраздел получает копию прав родителя, дальше их правят отдельно.
| Поле | Что задаёт |
|---|---|
| Тип | «Персональный» — рабочие данные помощника одного сотрудника; «Общий» — то, что нужно помощникам всех сотрудников; «По умолчанию» — без отметки |
| Наименование | имя раздела в дереве |
| Ключ | короткое имя, по которому помощник может найти раздел |
| Описание для AI-помощника | для чего раздел: по нему помощник решает, что сюда класть |
Тип ничего не ограничивает: кто видит раздел, решают его права.
Вкладка «Права доступа» выбранного раздела: «Разрешения для групп пользователей» и «Разрешения для пользователей», по шесть флажков в строке. Щелчок по ячейке ставит или снимает флажок.
| Флажок | Что разрешает помощнику |
|---|---|
| Темы — Список | видеть темы раздела |
| Темы — Создание | заводить новые темы |
| Темы — Изменение | менять название, описание и параметры любой темы раздела |
| Темы — Удаление | удалять любую тему вместе со всеми её записями |
| Данные — Чтение | читать записи тем |
| Данные — Запись | добавлять записи |
Права сотрудника и его групп — основной и дополнительных — складываются. Раздел без единого флажка помощнику не виден. Сотруднику с правом сохранять это окно открыты все разделы со всеми флажками. Строка, в которой сняты все флажки, убирается при сохранении окна.
Флажки решают, какое действие пройдёт внутри раздела. Сам же репозиторий помощнику открывают права ветки «AI-помощник → Репозиторий» у сотрудника (см. «Пользователи и права доступа»).
Личный раздел сотрудника. Заведите раздел с типом «Персональный», в описании назовите, чей он, и дайте права только этому сотруднику. Если личные разделы есть у всех, одна заметка памяти для всех может сказать помощникам, как искать свой: например, «Персональный» раздел с ключом, равным номеру (ID) сотрудника.
Вкладка «Темы и данные» показывает, что помощники написали в выбранный раздел. С сервера всё приходит по кнопкам:
Запись не меняется: каждая новая добавляется к теме, последняя — то, на чём тема стоит сейчас, ранние — её история. Поэтому «Получить данные темы» докачивает только записи новее уже полученных, а текст записи приходит, когда на неё встаёт курсор.
У записи три вкладки:
Содержимое и приложение показываются как текст, как скрипт (с подсветкой Python) или как HTML-документ — вид выбирается в списке.
Смотреть темы и записи позволяют права «Проектирование → AI-компоненты → Репозиторий → Получить темы» и «Получить данные». Флажки разделов действуют на помощников, а не на это окно.
Кнопка «Экспорт» на панели каталога инструментов
собирает все инструменты с командами и полями, их модули и библиотеки в
один архив <магазин> tools <дата>.zip. Так
набор инструментов переносят в другой магазин или хранят про запас.
Разрешения в архив не входят — они про людей этого магазина; память и
репозиторий тоже.
Архив собирает сервер из того, что на него уже отправлено: несохранённые правки окна в архив не войдут, о чём программа и предупреждает. Нужно право «Проектирование → AI-компоненты → Экспорт».
Загрузки обратно нет, и это решение: в каждом магазине инструменты дорабатывают под себя, поэтому архив не накатывают, а сравнивают с магазином. Отдайте архив помощнику и попросите перенести разошедшееся — он сверит и перенесёт точечно.