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.manualTriggertypeVersion1— Узел Manual Trigger в выданном exportn8n-nodes-base.codetypeVersion2— Узел Source Requests в выданном exportn8n-nodes-base.settypeVersion3.4— Узел Branch Original в выданном exportn8n-nodes-base.mergetypeVersion3.2— Узел Merge by Position в выданном export
Подготовка
- Создать рабочую копию. Выполните python assets/setup.py, затем импортируйте submission/workflow.json в n8n 2.39.9.
Ожидаемое наблюдение: Создан отдельный submission/workflow.json; исходный starter остаётся неизменным.
Запуск
Исправить workflow. Внесите требуемое lesson-specific изменение в импортированный граф и экспортируйте его поверх submission/workflow.json.
Ожидаемое наблюдение: Изменение присутствует в параметрах и connections экспортированного workflow.Проверить 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.
Сброс
- Сбросить 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 не принимаются как доказательство.
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
