Руководство Melbis Shop: оглавление
Семья shop работает с магазином снаружи: открывает
страницу витрины так, как её получает посетитель, запускает на витрине
собственный модуль агента и копирует код магазина на этот компьютер.
| Инструмент | Что делает | Куда обращается |
|---|---|---|
shop_page |
открывает страницу или отправляет форму | адрес страницы на сайте |
shop_run |
запускает модуль агента | agent.php в корне сайта |
shop_download |
копирует модули, профайлы или базу | движок, как инструменты engine_* |
shop_page и shop_run прав не требуют: они
идут на сайт дорогой посетителя, а не в движок. Одно исключение:
shop_page с debug=true спрашивает у движка код
отладчика и поэтому требует права «Получить конфигурацию».
shop_download требует права «Экспорт → Магазин».
У семьи свои правила — shop.md в папке
Engine\MCP. Первый вызов любого инструмента
shop_* в сессии отказывает с ними; после подтверждения
через session_rules_accept
работают все инструменты семьи.
shop_page запрашивает страницу, как браузер посетителя,
и сохраняет HTML в mcp\melbis\pages\. Каждое чтение — новый
визит: без кук и без сессии.
Страница может прийти из кеша. Сохранение файла модуля сбрасывает кеш только этого модуля — что очищается само, описано в «Конфигурации и кеше». Если правка на странице не видна, причиной бывает кеш другого модуля, который выводит изменённое место.
Это разметка, а не картинка. По HTML видно, что изменилось в коде страницы; как она выглядит, видит только человек в браузере.
Отчёт отладчика. С debug страница
запрашивается в машинном виде отладчика («Средства отладки»): весь отчёт сохраняется
рядом со страницей, в ответ приходят главные числа и модули страницы.
Код отладчика сервер берёт из конфигурации магазина, поэтому такой вызов
требует права «Прямой доступ → Разработка → Получить конфигурацию». В
ответ и в имена файлов код не попадает. Если кода нет, его задаёт
владелец: «Проектирование → Инсталляция», поле «Пароль отладчика».
Подписи на оригинальном языке могут отличаться.
С полем post вызов становится отправкой формы. Так
работает всё живое на витрине: корзина, заявка, отзыв, заказ. В отличие
от чтения, отправка меняет магазин — появляются строки корзины, заявки,
письма менеджеру, а в работающем магазине и настоящий заказ. Тестового
режима у витрины нет.
Куки отправок сохраняются, пока работает MCP-сервер,
поэтому отправки подряд — один посетитель. Чтение страницы этих кук не
видит: положить товар в корзину и посмотреть корзину — две отправки. В
демо-магазине корзина отвечает на поля func и
id:
{"url": "/?mod=melbis_basket", "post": {"func": "Plus", "id": 12}}
{"url": "/?mod=melbis_basket", "post": {"func": "Goods"}}Поля формы называются так, как их пишет разметка
страницы. Список значений уходит как имя[]=… по одному на
значение — так браузер отправляет флажки и множественный выбор, и только
так PHP читает поле массивом. Токен формы, если он есть, сам не берётся:
сначала читают страницу.
shop_run запускает модуль через точку входа
agent.php в корне сайта и возвращает ответ витрины. Так
выполняется работа, для которой нет AI-инструмента: отчёт по нескольким
таблицам, проверка всего каталога, разовая правка со своей логикой.
Точка входа запускает модуль, только если:
session_connect;agent_;units/;ajax_load: 1 в манифесте, в
программе — «Модуль входной точки».Ключ сессии один на логин: параллельные сессии
одного пользователя делят его. Сервер магазина хранит ключ в памяти
сутки, каждый session_connect продлевает срок, а перезапуск
сервера ключ стирает.
Параметры уходят так же, как поля формы, — список
приходит массивом, — и модуль получает их одним сериализованным
аргументом: в манифесте объявлено post: serial, значения
лежат в $mVars['post'] — см. «Модульный скрипт». Служебные
login, secret и mod точка входа
убирает до запуска модуля.
Ответ проходит через парсер, как любая страница:
шаблоны, теги, кеш. Весь он сохраняется в
mcp\melbis\runs\<модуль>.txt. Если модуль упал,
сообщение, файл и строку движок записывает в журнал витрины
core/log/melbis/front.log.
Прав на запуск нет. Запустить готовый модуль
agent_* может любой, кто вошёл в магазин; создать или
изменить модуль — логин с правом «Прямой доступ → Разработка → Изменение
данных».
Оба запускают PHP-код магазина, но это разные двери.
shop_run |
tool_run |
|
|---|---|---|
| Куда идёт | витрина, agent.php в корне сайта |
движок, core/mcp.php |
| Что запускает | модуль-точку входа agent_* |
команду AI-инструмента |
| Как | через парсер: шаблоны, кеш | вызывает функцию команды в модуле инструмента |
| Что возвращает | ответ модуля текстом | JSON команды: result, message,
detail, tables, files |
| Кто разрешает | только ключ сессии | реестр AI-инструментов и выданная команда |
| Для чего | свой код: попробовать, разовая работа | работа, которую предусмотрел владелец |
tool_run — рабочий вызов, shop_run —
мастерская. Черновик из мастерской нередко становится AI-инструментом:
«AI-инструменты».
shop_download — единственный инструмент семьи, который
берёт из движка данные. Архив он собирает так же, как «Копирование» в программе, и
распаковывает на этом компьютере:
action |
Что в копии |
|---|---|
modules |
units/, templates/ и файлы корня
сайта |
profiles |
profiles/ — профайлы пользователей программы:
сохранённые настройки окон и условия запросов |
database |
dump.sql — дамп всей базы магазина |
config.json в копию не попадает никогда. Файлов
элементов из files/ среди видов копии нет: их скачивает engine_files_load.
Копия — снимок на момент вызова. Правка в ней не уходит на сервер, а
поздние правки магазина в неё не попадают: файлы магазина меняют
инструменты engine_*.