Документация/AI-ассистент
РУКОВОДСТВО VYRAB

AI-ассистент

Вопросы по данным производства и подтверждение действий.

Задавайте встроенному ассистенту вопросы по производственным данным. Роли нужно право ai-chat.use; каждый инструмент дополнительно проверяет собственные разрешения. Чтение выполняется сразу, изменения требуют явного подтверждения.

AI-ассистент

Что видно

Кнопка со звёздочкой (иконка Sparkles) и подписью «Спросите ИИ-ассистента…» в верхней панели навигации — на месте, где раньше был глобальный поиск (GlobalSearch). Кнопка видна только оператору с правом ai-chat.use.

При клике открывается всплывающая панель чата (не отдельное окно рабочего стола, а флоут поверх интерфейса):

  • Заголовок с иконкой и кнопкой закрытия.
  • Область сообщений: реплики оператора и ассистента чередуются как обычный чат. Ответ ассистента печатается потоково, по мере генерации (текст «Думает…», пока не пришли первые токены).
  • Внутри ответов ассистента конкретные объекты Vyrab (детали, заказы, несоответствия и т. п.) выводятся как названия-ссылки: клик по ним открывает карточку объекта в инспекторе объектов (Начало работы), не покидая текущий экран. Ассистенту запрещено печатать сырые Markdown-ссылки, URL или ID — интерфейс сам превращает известные из результатов инструментов названия в кликабельные ссылки, поэтому в тексте не может появиться посторонний/выдуманный адрес.
  • Каждый вызов инструмента чтения показывается отдельной строкой-«чипом» (например, «🔍 search»); если инструмент вернул конкретный объект, у чипа есть кнопка с его типом и номером — тоже открывает карточку в инспекторе.
  • Поле ввода снизу и кнопка отправки. Пока идёт генерация ответа или в поле есть введённый текст, панель не закрывается ни по клику вне неё, ни по Escape — случайная потеря фокуса не обрывает диалог.

Типовые сценарии

Вопрос о данных (без изменений):

  1. Оператор открывает панель и печатает вопрос на естественном языке — например, «какие материалы в дефиците по заказу №145» или «покажи заказы клиента, которые рискуют сорвать срок в ближайшую неделю».
  2. Ассистент сам решает, какой инструмент чтения вызвать (поиск по номенклатуре/заказам, статус производственного заказа, дефицит материалов, готовность заказа клиента, остатки склада, загрузка участков, сводка ОТК/брака, себестоимость детали — полный список ниже), выполняет его немедленно (без подтверждения) и формулирует ответ по результату.
  3. Если у оператора нет права на нужный инструмент, ассистент не притворяется, что данных не существует — он называет конкретное недостающее право.

Действие, требующее подтверждения:

  1. Оператор просит, например, «создай заказ клиента №2026-14 для клиента ООО Ромашка» или «подними приоритет заказа X до 5».
  2. Прежде чем менять данные, ассистент кратко описывает в тексте, что собирается сделать, и вызывает инструмент записи.
  3. В чате появляется карточка ожидающего действия: заголовок (человеко читаемое название операции, если оно распознано интерфейсом — иначе имя инструмента как есть), описание от модели и список конкретных параметров вызова (dl со всеми переданными полями). Две кнопки — «Отмена» и «Подтвердить».
  4. Пока карточка не разрешена, дальнейший ввод в чат не отправляется на выполнение действия сам по себе — диалог ждёт решения оператора именно по этой карточке.
  5. При «Подтвердить» действие выполняется тем же способом, что и обычный REST-запрос (переиспользуется код существующего роутера), и в чат добавляется результат. При «Отмена» ассистенту возвращается «Отклонено оператором» — он не пытается повторить действие сам.

Инструменты ассистента

Инструменты чтения (выполняются сразу, каждый защищён своим правом): поиск объектов по названию/номеру/артикулу; список номенклатуры; список и подробный статус производственных заказов; дефицит материалов (по всему активному плану или по одному заказу); заказ клиента целиком; готовность заказа клиента (обеспечение/производство/резерв/отгрузка); заказы с риском срыва срока; остаток и движения по номенклатуре на складе; перегруженные участки по сменным заданиям; сводка ОТК (Парето дефектов, открытые несоответствия); материальная и трудовая себестоимость детали.

Инструменты записи (всегда требуют подтверждения): создать заказ клиента (черновик); добавить строку в заказ клиента; создать заказ поставщику под дефицит; создать черновик производственного заказа; изменить приоритет производственного заказа; назначить/снять исполнителя операции; пересчитать и сохранить производственный план (планировщик). Набор осознанно небольшой — это не универсальный ввод данных, а точечные, явно перечисленные операции.

Особенности и ограничения

  • Ассистент недоступен без настроенного на сервере ключа OpenAI (OPENAI_API_KEY) — если ключ не задан, в чате появится сообщение об ошибке «ИИ-ассистент не настроен…». Это настройка администратора, не оператора.
  • История диалога живёт только в браузере: закрытие вкладки или перезагрузка страницы обнуляет чат. Сервер не хранит переписку.
  • Ограничение на число автоматических шагов внутри одного ответа (не более 8 вызовов инструментов подряд) — защита от зацикливания модели; при превышении диалог завершается ошибкой, а не бесконечным ожиданием.
  • Право ai-chat.use — это общий выключатель функции; оно не заменяет проверку прав на каждый конкретный инструмент. Оператор с ai-chat.use, но без, например, cost.view, не получит от ассистента себестоимость — инструмент вернёт отказ по праву, а не выдуманные цифры.
  • Ассистенту явно запрещено переносить единицы измерения без пересчёта и придумывать названия объектов, которых не было в результатах инструментов — эти правила заданы системным промптом, а не проверяются кодом; это ограничивает, но не исключает ошибки модели полностью.
  • Заголовок карточки подтверждения — человекочитаемый только для двух инструментов записи (создание заказа клиента и добавление строки); для остальных показывается техническое имя инструмента.

Настройка сервера

См. интеграции и безопасность.