Углублённая модель данных n8n

Merge и потеря связей между items

Содержание курса

0 / 1 баллов

Лаборатория: Merge и потеря связей между items

Один и тот же набор запросов объедините двумя способами: по позиции и по request_id. Покажите, почему позиционный Merge молча склеивает чужие записи после перестановки, и оставьте рабочую ветку с явным ключом.

Файлы лабораторной

Скачайте из блока «Файлы шага» n8n_lab_02_setup.py и n8n_lab_02_README.md. Запустите setup-скрипт в пустой папке: он восстановит рабочую структуру и создаст submission/workflow.json.

Зафиксированная среда

  • n8n 2.39.9; цель: either. Источник фиксации: Pinned course runtime 2.39.9; exact node typeVersions read from the supplied export on 2026-09-22.

  • n8n-nodes-base.manualTrigger typeVersion 1 — Узел Manual Trigger в выданном export

  • n8n-nodes-base.code typeVersion 2 — Узел Source Requests в выданном export

  • n8n-nodes-base.set typeVersion 3.4 — Узел Branch Original в выданном export

  • n8n-nodes-base.merge typeVersion 3.2 — Узел Merge by Position в выданном export

Подготовка

  1. Создать рабочую копию. Выполните python assets/setup.py, затем импортируйте submission/workflow.json в n8n 2.39.9.
    Ожидаемое наблюдение: Создан отдельный submission/workflow.json; исходный starter остаётся неизменным.

Запуск

  1. Исправить workflow. Внесите требуемое lesson-specific изменение в импортированный граф и экспортируйте его поверх submission/workflow.json.
    Ожидаемое наблюдение: Изменение присутствует в параметрах и connections экспортированного workflow.

  2. Проверить submission. Выполните python assets/run.py. Runner сам читает submission/workflow.json, прогоняет fixtures и перезаписывает observations/report; student_evidence не используется.
    Ожидаемое наблюдение: Receipt N8N_LAB_02_OK появляется только для исправленного графа.

Матрица приёмки

  • position mismatch. Runner подаёт fixture в deterministic engine после проверки текущего submission/workflow.json; ручные actual и execution_id не принимаются. Наблюдения: Позиционный Merge даёт три несовпадающие пары.; Execution показывает, из каких двух входов пришли элементы.. Зафиксируйте: lesson_id, submission_sha256, case_id, derived_actual, observation_sha256, receipt.

  • key repair. Runner подаёт fixture в deterministic engine после проверки текущего submission/workflow.json; ручные actual и execution_id не принимаются. Наблюдения: Merge по request_id восстанавливает три однозначные пары.; В результате нет потерянных или повторённых request_id.. Зафиксируйте: lesson_id, submission_sha256, case_id, derived_actual, observation_sha256, receipt.

Сброс

  1. Сбросить derived evidence. Выполните python assets/reset.py. Чтобы вернуть starter, отдельно снова выполните python assets/setup.py.
    Ожидаемое наблюдение: Удалены observations.json и verification_report.json; workflow не подменяется скрытым эталоном.

Что отправить

Сдайте receipt из assets/run.py и сохраните generated evidence/verification_report.json. Runner не читает student_evidence.

Обязательные поля: lesson_id, submission_sha256, case_id, derived_actual, observation_sha256, receipt.

В поле ответа вставьте значение receipt из отчёта runner.

Границы проверки

  • Runner исполняет детерминированную учебную модель узлов и state/stub-контрактов после разбора export; живой n8n 2.39.9 остаётся отдельной ручной проверкой.

  • Ни actual, ни execution_id, ни текстовое заявление learner_change не принимаются как доказательство.

О данных в ответах

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

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.