Command Palette

Search for a command to run...

История изменений настроек

В этом документе вы узнаете, что Модуль интеграций записывает о каждом изменении настроек интеграций, как он определяет автора, как секреты остаются вне истории и как сделать так, чтобы изменения из вашего кода записывались с правильным автором.

Как смотреть историю в Medusa Admin, читайте в руководстве Просмотр истории изменений в Medusa Admin.

Что записывается

Воркфлоу модуля записывают изменение в том же запуске, который его вносит. У каждой записи есть тип, он хранится в :

В таблице истории и в разделе История изменений на странице интеграции каждая запись показана под заголовком, а не под названием из фильтра. В заголовке указано число полей записи, например Задано 3 поля для , Изменено 3 поля для и Удалено 3 поля для . Запись без полей называется Изменены настройки, а удаление без полей Настройки удалены. Для и остаются Интеграция включена и Интеграция выключена.

Сохранение без изменений и включение уже включённой интеграции записей не оставляют. Проверки соединения тоже не записываются, потому что настроек они не меняют. Вместо этого на каждую проверку модуль отправляет событие .

Каждое изменённое поле попадает в запись со своим идентификатором, ключом метки и значениями до и после изменения. Изменение собственного интеграции записывается как поле .


Кто внёс изменение

Автор хранится в записи в полях и . Это субъект, которого Medusa аутентифицировала для запроса, например или . Вместе с ними модуль сохраняет , email пользователя или название ключа API на момент изменения, поэтому запись остаётся подписанной и после удаления пользователя или ключа. Ещё в записи хранятся IP-адрес, клиент и ID запроса.

API-роуты Admin модуля передают всё это в воркфлоу сами. Если ваш код запускает воркфлоу без , модуль записывает изменение с типом автора . Изменение, сделанное ключом API, сохраняет со значением , ID ключа в и название ключа в . Medusa Admin показывает автором Система любого автора, который не пользователь, то есть и тип , и ключи API.

Если ваш код меняет настройки от имени пользователя Admin, например в вашем собственном API-роуте Admin, передайте аутентифицированного автора в :

src/api/admin/my-integration/sandbox/route.ts
1import type { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework/http"
2import { upsertIntegrationWorkflow } from "@gorgo/medusa-integration"
3
4export async function POST(req: AuthenticatedMedusaRequest, res: MedusaResponse) {
5 const { result } = await upsertIntegrationWorkflow(req.scope).run({
6 input: {
7 provider_id: "int_my",
8 values: { sandbox: false },
9 actor: {
10 type: req.auth_context.actor_type,
11 id: req.auth_context.actor_id,
12 ip: req.ip,
13 user_agent: req.get("user-agent"),
14 request_id: req.requestId,
15 },
16 },
17 })
18
19 res.json({ provider_id: result.provider_id })
20}

Чтобы назвать автора, достаточно и , потому что email пользователя или название ключа модуль найдёт сам. , и заполняют блок Метаданные изменения в Admin. Роут возвращает только , потому что содержит сохранённую запись вместе с зашифрованными секретами.

Внимание: 

Изменение, записанное через методы сервиса модуля, например , обходит воркфлоу и в историю не попадает. Почему любая запись должна идти через воркфлоу, читайте на странице Сервис Модуля интеграций.


Секреты в истории

Значения параметров с пометкой в историю не попадают. Для секретного параметра запись хранит только действие со значением, то есть , или . При удалении интеграции сохранённые секреты записываются как без расшифровки.

Если параметр стал секретным уже после того, как его изменения попали в историю, роуты чтения модуля возвращают его прежние значения как , а Admin показывает Значение скрыто.

Внимание: 

Пометка , добавленная позже, скрывает прежние значения только в Admin и Admin API. В сохранённых записях эти значения остаются открытым текстом, поэтому объявляйте учётные данные как до того, как администратор магазина сохранит их в первый раз. При запуске модуль предупреждает о каждом параметре, название которого похоже на учётные данные, но который не помечен . Как модуль обращается с секретами, описано на странице Дескриптор провайдера интеграций.

Если изменить флаг у параметра, который администратор магазина уже сохранил, интеграция продолжит работать. Параметр, ставший секретным, хранит значение открытым текстом, пока следующее сохранение его не зашифрует. Сохранённое значение параметра, который перестал быть секретным, модуль расшифровывает при чтении, поэтому запись и последующие изменения хранят его значения открытым текстом, как у любого другого параметра. На странице Дескриптор провайдера интеграций описано, в каком случае чтение всё же завершается ошибкой и как восстановить работу через или .


Ограничения размера

Модуль ограничивает размер записи, чтобы большой параметр типа не раздувал историю:

  • Значение длиннее 512 символов, строка или JSON структурированного значения, сохраняется сокращённым и с пометкой о сокращении. Admin показывает его с пометкой (сокращено).
  • Запись хранит не больше 100 полей параметров. Поле изменённого названия учитывается сверх этого.
  • Поля параметров одной записи занимают не больше 16 КБ. Поле, которое уже не помещается, сохраняет идентификатор и метку, но теряет значения. Когда лимит исчерпан, остальные поля в запись не попадают.

Хранение

История хранится в модели данных . Она не связана с моделью , поэтому записи переживают интеграцию, которую описывают, в том числе её удаление. Модуль хранит их бессрочно и сам не удаляет.

Запись создаётся в том же воркфлоу, что и изменение. Если следующий шаг воркфлоу падает и воркфлоу откатывается, модуль всегда удаляет запись. Прежнее состояние восстанавливает только , поэтому включение или выключение откатывается вместе со своей записью. Сохранение и удаление не откатываются, так что после неудачного следующего шага сохранённые или удалённые настройки остаются в силе без записи в истории. Если саму запись создать не удалось, изменение всё равно применяется, а модуль пишет предупреждение в лог.

Шаги каждого воркфлоу перечислены на странице Воркфлоу Модуля интеграций.


Чтение истории

Историю можно получить любым из способов:

Материалы

Изменено 12 ноября 2026 г.·Редактировать страницу