Appearance
Технологические операции
Технологическая операция — шаг маршрута изготовления. Маршрут определяет, в каком порядке и на каком оборудовании обрабатывается деталь: раскрой (10) → кромление (20) → сверление (30). Каждый шаг ссылается на операцию из справочника и дополняет её параметрами: время, рабочие места, условия выполнения.
Как открыть
Боковое меню → Технология → Операции
Или: откройте технологический объект → вкладка «Маршрут»
Что на экране
Справочник операций
Таблица всех операций предприятия:
| Столбец | Что показывает |
|---|---|
| Код | UPPER_SNAKE_CASE: CUT_LDSP, EDGE_PVC, DRILL_HINGE |
| Название | Раскрой ЛДСП, Кромление PVC, Присадка петель |
| Тип | cutting / edging / drilling / milling / sanding / finishing / assembly / packing / quality_check |
| Категория | Подготовка / Обработка / Сборка / Отделка / Контроль |
| Время наладки | Нормативное время наладки (мин) — один раз на партию |
| Время обработки | Нормативное время на единицу (мин) |
| Активна | Используется ли операция |
Типы операций
| Тип | Описание |
|---|---|
| cutting | Раскрой — распил листовых материалов |
| edging | Кромление — нанесение кромки на торцы |
| drilling | Сверление — присадка отверстий |
| milling | Фрезерование — обработка кромок и пазов |
| sanding | Шлифовка — абразивная обработка |
| finishing | Отделка — покраска, лакировка, грунтовка |
| assembly | Сборка — соединение компонентов |
| packing | Упаковка — подготовка к отгрузке |
| quality_check | Контроль качества — проверка параметров |
| maintenance | ТО — техническое обслуживание оборудования |
| cleaning | Уборка/подготовка — уборка стружки, смена расходников |
| changeover | Переналадка — смена инструмента/оснастки |
Маршрут объекта
Маршрут — это упорядоченная последовательность шагов (TechnologicalOperation), привязанная к технологическому объекту.
Пример маршрута: Боковина
| Шаг | Операция | Время наладки | Время обработки | Рабочее место |
|---|---|---|---|---|
| 10 | Раскрой ЛДСП | 15 мин | 2 мин/шт | Форматно-раскроечный Altendorf |
| 20 | Кромление PVC | 10 мин | 1 мин/шт | Кромкооблицовочный Homag |
| 30 | Сверление присадка | 5 мин | 1.5 мин/шт | Присадочный Blum |
Расчёт для партии из 20 деталей:
- Раскрой: 15 + (2 × 20) = 55 мин
- Кромление: 10 + (1 × 20) = 30 мин
- Сверление: 5 + (1.5 × 20) = 35 мин
- Итого: 120 мин (2 часа)
Нумерация шагов
Шаги нумеруются с шагом 10: 10, 20, 30... Это позволяет вставить промежуточный шаг (например, 15 — «Шлифовка» между раскроем и кромлением) без перенумерации всего маршрута.
Пара (technological_object, step_number) уникальна — у одного объекта не может быть двух шагов с одинаковым номером.
Поля шага маршрута
| Поле | Обязательно | Описание |
|---|---|---|
| technological_object | Да | К какому объекту относится шаг |
| operation | Да | Операция из справочника (FK) |
| step_number | Да | Номер шага: 10, 20, 30... |
| step_code | Нет | Код для печатных форм: «010», «020» |
| duration_minutes | Нет | Время на единицу (мин). NULL = берётся из справочника |
| setup_minutes | Нет | Время наладки (мин). NULL = берётся из справочника |
| notes | Нет | Заметки технолога |
| operator_instructions | Нет | Инструкции для рабочего (Markdown) |
Переопределение нормативов
Если duration_minutes не указано, используется default_duration_minutes из справочника операций. Если указано — переопределяет для конкретного объекта. Так одна и та же операция «Раскрой» может занимать 2 мин/шт для ЛДСП и 5 мин/шт для МДФ.
Альтернативные рабочие места
Поле workplace_options определяет, на каких рабочих местах можно выполнить операцию:
json
[
{"workplaceId": "uuid-altendorf", "priority": 1},
{"workplaceId": "uuid-holzma", "priority": 2},
{"workplaceId": "uuid-manual-saw", "priority": 3}
]| Поле | Описание |
|---|---|
| workplaceId | UUID рабочего места |
| priority | Приоритет: 1 = основное, 2 = первая альтернатива, 3 = запасное |
Диспетчер при планировании выбирает рабочее место с учётом приоритета и текущей загрузки. Если основной станок занят — партия отправляется на альтернативный.
Условные операции
Некоторые операции выполняются не всегда, а только при определённых свойствах продукта.
property_activator
Условие активации через классификаторы:
json
{"classifierCode": "DOOR_FINISH", "value": "GLOSS"}Составные условия:
json
{
"AND": [
{"classifierCode": "MATERIAL", "value": "MDF"},
{"classifierCode": "FINISH", "value": "PAINTED"}
]
}json
{
"OR": [
{"classifierCode": "FINISH", "value": "GLOSS"},
{"classifierCode": "FINISH", "value": "SATIN"}
]
}| Поле | Описание |
|---|---|
| property_activator | Условие активации (JSON). Пустой = безусловная операция |
| is_conditional | Расчётный флаг: true если property_activator задан |
Визуальное отличие
Условные операции в интерфейсе выделяются: курсивом, иконкой-ромбом и оранжевой полосой слева. Так технолог сразу видит, какие шаги маршрута зависят от конфигурации.
Пример
Маршрут фасада:
- Шаг 10: Раскрой МДФ — безусловная
- Шаг 20: Шлифовка — безусловная
- Шаг 30: Грунтовка — условная (только если finish = PAINTED)
- Шаг 40: Покраска — условная (только если finish = PAINTED)
- Шаг 50: Плёнкование — условная (только если finish = FILM)
- Шаг 60: Контроль — безусловная
Для фасада с плёнкой выполняются шаги: 10 → 20 → 50 → 60. Для крашеного фасада: 10 → 20 → 30 → 40 → 60.
Типы сбора (assembly_type)
Для операций сборки определяется тип сбора:
| Тип | Описание | Пример |
|---|---|---|
| constructive | Стандартная сборка по BOM | Сборка корпуса шкафа из деталей |
| technological | Точка схождения маршрутов — здесь встречаются разные детали | Сборка двери: рама + вставка с разных участков |
| dynamic | Групповая загрузка по критерию | Кромление всех деталей одного цвета за один проход |
По умолчанию — constructive.
Субподряд
Если операция выполняется внешним поставщиком, установите is_outsourced = true. Субподрядные операции:
- Не планируются на собственные рабочие места
- Требуют создания заявки поставщику
- Имеют отдельный учёт сроков (срок поставки вместо времени обработки)
Шаблоны маршрутов
Для типовых деталей используются готовые шаблоны (OperationTemplate):
| Поле | Описание |
|---|---|
| code | Код: T-PANEL-001, T-DOOR-002 |
| name | Название: Плитная деталь МДФ |
| category | Группа: Фасады, Полки, Корпуса |
| operations | JSON-маршрут: [{step: 10, operation: "CUT_MDF", duration: 3}, ...] |
| usage_count | Сколько раз использован |
| is_recommended | Рекомендованный — показывается первым |
Шаблоны экономят время
Вместо того чтобы каждый раз создавать маршрут из 5-7 операций, технолог применяет шаблон одним нажатием. Система отслеживает usage_count и avg_actual_time_minutes, чтобы улучшать нормативы.
Создание шага маршрута
- Откройте технологический объект → вкладка «Маршрут»
- Нажмите «Добавить операцию»
- Заполните:
| Поле | Обязательно | Описание |
|---|---|---|
| Операция | Да | Выберите из справочника |
| Номер шага | Да | 10, 20, 30... |
| Время обработки | Нет | Переопределение норматива (мин/шт) |
| Время наладки | Нет | Переопределение норматива (мин) |
| Рабочие места | Нет | Альтернативные РМ с приоритетами |
| Условие | Нет | property_activator для условной операции |
| Инструкции | Нет | Markdown-текст для рабочего |
- Нажмите «Сохранить»
API
| Метод | Endpoint | Описание |
|---|---|---|
| GET | /api/v1/operations/ | Справочник операций |
| POST | /api/v1/operations/ | Создать операцию в справочнике |
| GET | /api/v1/technological-operations/ | Все шаги маршрутов |
| POST | /api/v1/technological-operations/ | Создать шаг маршрута |
| GET | /api/v1/technological-operations/{id}/ | Детали шага |
| PUT | /api/v1/technological-operations/{id}/ | Обновить шаг |
| GET | /api/v1/operation-templates/ | Шаблоны маршрутов |