# Инструкции и тексты планов. В шаблонах user/retry сохраните ${payload}. # action_templates: {object} — название объекта, {target} — место назначения. teacher_system: |- Составь последовательность действий робота на русском языке по команде и сцене. Это высокоуровневый план для человека, а не программа управления: без Python, ROS, координат приводов и записей вида pick: part_0 -> slot_0. Для каждого действия верни text — самостоятельную русскую фразу с названием объекта из scene.components[].name. Например: «Захватить объект „распределительная коробка №1“», «Переместить объект „распределительная коробка №1“ к оператору», «Дождаться завершения сборки». Одновременно укажи skill, object и target из доступных операций: эти поля нужны только внутреннему валидатору и не попадут в обучающий текст ответа. Текст должен точно описывать выбранную операцию, без дополнительных действий. Соблюдай requires/forbids и эффекты add/delete. ready означает достижение goal; blocked допустим только если цель недостижима. Не меняй постановку задачи. Не отпускай удерживаемый объект до завершения работы, если задача требует удержания. Каждая операция содержит reference_text — проверенное русское описание. Используй его в text. Допускаются только изменения пунктуации, вводные «Сначала», «Затем», «Далее» и замены: «переместить»/«перенести», «захватить»/«взять», «проверить»/«проконтролировать», «вернуться»/«возвратиться», «положение»/«местоположение». Не добавляй действия, отрицания или условия, отсутствующие в reference_text. teacher_user: ${payload} teacher_retry: |- Исправь план с учётом ошибки проверки. ${payload} training_system: full: |- Составь полную последовательность действий робота на русском языке по заданию и сцене. Ответ — нумерованный список понятных действий с названиями объектов. Учитывай исходное состояние, зависимости и условия ожидания. Не пиши JSON, программный код или технические имена навыков. Если задача невыполнима, явно сообщи об этом. step: |- Укажи одно следующее действие робота на русском языке с учётом задания, текущей сцены и истории. Используй названия объектов. Не повторяй уже выполненные действия. Не пиши JSON или программный код. Если продолжить невозможно, сообщи об этом. branch: |- Составь план действий робота на русском языке с условиями продолжения: что делать при успехе и при ошибке. Используй нумерованные пункты и понятные названия объектов. При сбое остановись и запроси перепланирование по обновлённой сцене. Не пиши JSON, программный код или технические идентификаторы узлов. training_user: ${payload} task_instructions: manipulation: |- Перемести детали в сборочные позиции. Соблюдай зависимости деталей и проверь результат каждой операции. mechanical: Собери механический узел. Соблюдай зависимости деталей и проверь результат каждой операции. fastening: Установи и затяни крепёж. Соблюдай зависимости деталей и проверь результат каждой операции. press_fit: Собери прессовые соединения. Соблюдай зависимости деталей и проверь результат каждой операции. electrical: Выполни электромонтаж. Соблюдай зависимости деталей и проверь результат каждой операции. electronics: Установи электронные компоненты. Соблюдай зависимости деталей и проверь результат каждой операции. adhesive: Собери клеевые соединения. Соблюдай зависимости деталей и проверь результат каждой операции. welding: Соедини детали сваркой. Соблюдай зависимости деталей и проверь результат каждой операции. collaborative: |- Передай детали оператору для сборки. Соблюдай зависимости деталей и проверь результат каждой операции. inspection: |- Проверь детали в контрольной позиции. Соблюдай зависимости деталей и проверь результат каждой операции. operator_assistance: |- Удерживай распределительную коробку возле оператора, пока он устанавливает элементы. Когда сборка закончится, убери коробку на место хранения и вернись в исходное положение. object_names: manipulation: деталь mechanical: деталь fastening: крепёж press_fit: деталь electrical: провод electronics: электронный компонент adhesive: деталь welding: деталь collaborative: деталь inspection: деталь operator_assistance: распределительная коробка action_templates: detect: Определить положение объекта «{object}». approach: Переместиться к объекту «{object}». pick: Захватить объект «{object}». position: Переместить объект «{object}» к месту «{target}». place: Установить объект «{object}» в место «{target}». release: Отпустить объект «{object}». inspect: Проверить результат установки объекта «{object}». align: Совместить объект «{object}» с местом установки «{target}». insert: Вставить объект «{object}» в место «{target}». insert_fastener: Установить объект «{object}» в крепёжное отверстие «{target}». tighten: Затянуть крепёж «{object}» в месте «{target}». press_fit: Запрессовать объект «{object}» в место «{target}». route_wire: Проложить провод «{object}» к месту подключения «{target}». connect: Подключить провод «{object}» в месте «{target}». test_continuity: Проверить электрическую целостность соединения провода «{object}». seat_component: Установить электронный компонент «{object}» в место «{target}». test_connection: Проверить подключение компонента «{object}». clean_surface: Очистить поверхность объекта «{object}» для склеивания. apply_adhesive: Нанести клеевой состав на объект «{object}». bond: Прижать объект «{object}» к месту соединения «{target}». wait_cure: Дождаться отверждения клея на соединении объекта «{object}». clamp: Зафиксировать объект «{object}» в приспособлении «{target}». weld: Выполнить сварное соединение объекта «{object}» в месте «{target}». wait_operator: Дождаться готовности оператора принять объект «{object}». handover: Передать объект «{object}» оператору, сохраняя захват до отпускания. confirm_assembly: Получить подтверждение сборки объекта «{object}» от оператора. measure: Проверить размеры объекта «{object}». move_to_operator: Переместить объект «{object}» к оператору. hold: Удерживать объект «{object}» в неподвижном состоянии возле оператора. wait_assembly: Дождаться подтверждения завершения сборки объекта «{object}», продолжая удерживать его. move_to_storage: Переместить объект «{object}» в место «{target}». return_home: Вернуться в исходное положение. # Инструкции для второго JSONL. Названия навыков остаются английскими. structured_system: full: |- Составь полный план по заданию и сцене. Верни только JSON с полями status и plan. status: ready, если цель достижима; blocked, если задача невыполнима. plan — массив действий с skill, object и, когда требуется место назначения, target. skill — имя навыка на английском; object и target — русские названия из сцены. Для pick, release и inspect не добавляй target. Не используй технические ID объектов. При blocked сохрани выполнимую часть плана; если действий нет, верни пустой массив. step: |- Укажи следующее действие с учётом текущей сцены и истории. Верни только JSON с полями status и plan. Если действие доступно, status — ready, plan содержит ровно одно действие с skill, object и необязательным target. Если цель уже достигнута, верни ready и пустой plan; если продолжить невозможно — blocked и пустой plan. skill — имя навыка на английском, object и target — русские названия. Для pick, release и inspect target не нужен. Не повторяй историю. branch: |- Составь план с ветвлением. Верни только JSON с полями status и plan. status — ready или blocked для полного сценария. plan — массив действий: skill, object, необязательный target, id, on_success, on_failure. skill — имя навыка на английском; object и target — русские названия. id имеет вид step_1, step_2 и далее. Выполнение начинается с первого элемента. on_success указывает следующий id, а в последнем действии — ready или blocked. on_failure всегда replan_required: остановиться, обновить сцену и перепланировать. ready, blocked и replan_required — терминальные исходы, а не ID действий. Пустой plan означает отсутствие действий; итог задан status.