AI-ассистент
Вопросы по данным производства и подтверждение действий.
Задавайте встроенному ассистенту вопросы по производственным данным. Роли нужно право ai-chat.use; каждый инструмент дополнительно проверяет собственные разрешения. Чтение выполняется сразу, изменения требуют явного подтверждения.
AI-ассистент
Что видно
Кнопка со звёздочкой (иконка Sparkles) и подписью «Спросите ИИ-ассистента…»
в верхней панели навигации — на месте, где раньше был глобальный поиск
(GlobalSearch). Кнопка видна только оператору с правом ai-chat.use.
При клике открывается всплывающая панель чата (не отдельное окно рабочего стола, а флоут поверх интерфейса):
- Заголовок с иконкой и кнопкой закрытия.
- Область сообщений: реплики оператора и ассистента чередуются как обычный чат. Ответ ассистента печатается потоково, по мере генерации (текст «Думает…», пока не пришли первые токены).
- Внутри ответов ассистента конкретные объекты Vyrab (детали, заказы, несоответствия и т. п.) выводятся как названия-ссылки: клик по ним открывает карточку объекта в инспекторе объектов (Начало работы), не покидая текущий экран. Ассистенту запрещено печатать сырые Markdown-ссылки, URL или ID — интерфейс сам превращает известные из результатов инструментов названия в кликабельные ссылки, поэтому в тексте не может появиться посторонний/выдуманный адрес.
- Каждый вызов инструмента чтения показывается отдельной строкой-«чипом» (например, «🔍 search»); если инструмент вернул конкретный объект, у чипа есть кнопка с его типом и номером — тоже открывает карточку в инспекторе.
- Поле ввода снизу и кнопка отправки. Пока идёт генерация ответа или в поле есть введённый текст, панель не закрывается ни по клику вне неё, ни по Escape — случайная потеря фокуса не обрывает диалог.
Типовые сценарии
Вопрос о данных (без изменений):
- Оператор открывает панель и печатает вопрос на естественном языке — например, «какие материалы в дефиците по заказу №145» или «покажи заказы клиента, которые рискуют сорвать срок в ближайшую неделю».
- Ассистент сам решает, какой инструмент чтения вызвать (поиск по номенклатуре/заказам, статус производственного заказа, дефицит материалов, готовность заказа клиента, остатки склада, загрузка участков, сводка ОТК/брака, себестоимость детали — полный список ниже), выполняет его немедленно (без подтверждения) и формулирует ответ по результату.
- Если у оператора нет права на нужный инструмент, ассистент не притворяется, что данных не существует — он называет конкретное недостающее право.
Действие, требующее подтверждения:
- Оператор просит, например, «создай заказ клиента №2026-14 для клиента ООО Ромашка» или «подними приоритет заказа X до 5».
- Прежде чем менять данные, ассистент кратко описывает в тексте, что собирается сделать, и вызывает инструмент записи.
- В чате появляется карточка ожидающего действия: заголовок (человеко
читаемое название операции, если оно распознано интерфейсом — иначе имя
инструмента как есть), описание от модели и список конкретных
параметров вызова (
dlсо всеми переданными полями). Две кнопки — «Отмена» и «Подтвердить». - Пока карточка не разрешена, дальнейший ввод в чат не отправляется на выполнение действия сам по себе — диалог ждёт решения оператора именно по этой карточке.
- При «Подтвердить» действие выполняется тем же способом, что и обычный REST-запрос (переиспользуется код существующего роутера), и в чат добавляется результат. При «Отмена» ассистенту возвращается «Отклонено оператором» — он не пытается повторить действие сам.
Инструменты ассистента
Инструменты чтения (выполняются сразу, каждый защищён своим правом): поиск объектов по названию/номеру/артикулу; список номенклатуры; список и подробный статус производственных заказов; дефицит материалов (по всему активному плану или по одному заказу); заказ клиента целиком; готовность заказа клиента (обеспечение/производство/резерв/отгрузка); заказы с риском срыва срока; остаток и движения по номенклатуре на складе; перегруженные участки по сменным заданиям; сводка ОТК (Парето дефектов, открытые несоответствия); материальная и трудовая себестоимость детали.
Инструменты записи (всегда требуют подтверждения): создать заказ клиента (черновик); добавить строку в заказ клиента; создать заказ поставщику под дефицит; создать черновик производственного заказа; изменить приоритет производственного заказа; назначить/снять исполнителя операции; пересчитать и сохранить производственный план (планировщик). Набор осознанно небольшой — это не универсальный ввод данных, а точечные, явно перечисленные операции.
Особенности и ограничения
- Ассистент недоступен без настроенного на сервере ключа OpenAI
(
OPENAI_API_KEY) — если ключ не задан, в чате появится сообщение об ошибке «ИИ-ассистент не настроен…». Это настройка администратора, не оператора. - История диалога живёт только в браузере: закрытие вкладки или перезагрузка страницы обнуляет чат. Сервер не хранит переписку.
- Ограничение на число автоматических шагов внутри одного ответа (не более 8 вызовов инструментов подряд) — защита от зацикливания модели; при превышении диалог завершается ошибкой, а не бесконечным ожиданием.
- Право
ai-chat.use— это общий выключатель функции; оно не заменяет проверку прав на каждый конкретный инструмент. Оператор сai-chat.use, но без, например,cost.view, не получит от ассистента себестоимость — инструмент вернёт отказ по праву, а не выдуманные цифры. - Ассистенту явно запрещено переносить единицы измерения без пересчёта и придумывать названия объектов, которых не было в результатах инструментов — эти правила заданы системным промптом, а не проверяются кодом; это ограничивает, но не исключает ошибки модели полностью.
- Заголовок карточки подтверждения — человекочитаемый только для двух инструментов записи (создание заказа клиента и добавление строки); для остальных показывается техническое имя инструмента.