Платформа 4.0 / BOX 5.0
«Сигма»: контроль рабочего места сценарием
«Сигма»: контроль рабочего места сценарием: пошаговая учебная задача, проверка результата и ссылки на инструкции.
На этой странице
Практикум «Сигма»: контроль рабочего места через сценарий
В BOX 3.2 эта задача разбиралась на штатном контроле дисциплины. Здесь проектируем её сценарием Platform 4.0, с собственным правилом состояния зоны и интервалов. Для распознавания присутствия достаточно подходящей CV-модели; LLM не обязателен.
Условие: в рабочее время пост должен быть занят хотя бы одним человеком. Перерыв исключается из расчёта. Краткий уход допускается в пределах согласованного порога. Потеря видео считается отсутствием наблюдения, а не уходом сотрудника.
Кадр + время + ID камеры
→ Проверка пригодности изображения
→ Детекция людей
→ Принадлежность людей зоне рабочего места
→ Агрегация по каждой зоне, включая пустой список людей
→ Состояние зоны: ЗАНЯТО / ПУСТО / НЕИЗВЕСТНО / ВНЕ ГРАФИКА
→ Таймер отсутствия и границы интервала
→ События начала/окончания + данные для отчёта
Критическая особенность: логика должна получать сообщения и при нуле людей. Если фильтр удаляет пустой список или весь msg, нижестоящий таймер не узнаёт, что место пусто. Обычное событие по отсутствующему атрибуту существующего трека это не исправляет.
| Параметр проекта | Учебный пример | Как выбирать |
|---|---|---|
| Тип и ID зоны | workplace, пост 01 |
Точный идентификатор справочника и геометрия без прохода |
| Минимальная занятость | 1 человек | Требование к посту, не общее число людей в кадре |
| Рабочие интервалы | 09:00–18:00, перерыв 13:00–14:00 | Реальный график и часовой пояс площадки |
| Порог отсутствия | 60 секунд | Согласованное правило; не выводится из возможностей модели |
| Допустимый разрыв наблюдений | Например 5 секунд | После превышения состояние неизвестно; подобрать по потоку |
| Подтверждение возвращения | Несколько достоверных наблюдений / время | Не завершать интервал по единичной ложной детекции |
| Повторное уведомление | По регламенту | Отдельно от длительности одного интервала |
| Источник времени | Время кадров | Для видеофайла это время материала, а не скорость воспроизведения |
Состояние хранится по ключу (камера, зона, правило). Нужен блок состояния или программное расширение с документированным постоянным контекстом. Следующий алгоритм — псевдокод бизнес-логики, не готовый вставляемый Python-код:
при новом наблюдении зоны:
если вне рабочего графика:
завершить/приостановить расчёт по согласованному правилу
состояние = ВНЕ ГРАФИКА
иначе если кадр непригоден или интервал между кадрами слишком велик:
состояние = НЕИЗВЕСТНО
не включать этот интервал в доказанное отсутствие
иначе если достоверно есть нужное число людей:
подтвердить возвращение
закрыть открытый интервал отсутствия, если он был
состояние = ЗАНЯТО
иначе:
отметить начало наблюдаемой пустоты, если её раньше не было
состояние = ПУСТО
после порога создать одно событие начала отсутствия
не создавать новое начало на каждом кадре
Отдельно определите поведение при перезапуске сценария, смене версии, длительном обрыве и переходе через полночь. Если нет новых кадров, нужен контроль свежести вне самого покадрового обработчика; функция, вызываемая только на кадрах, не обнаружит остановку потока сама по себе.
Для отчёта сохраняйте ID камеры/зоны, начало, конец, длительность, рабочий график, версию правила, статус завершения и интервалы неизвестности. Один сигнал «место пусто» не создаёт автоматически интервальный отчёт КТД. Интеграцию этих интервалов в штатную отчётность необходимо реализовать и проверить отдельно, либо строить отчёт по согласованному набору событий/данных.
Приёмочная таблица:
| Эпизод | Ожидаемое поведение |
|---|---|
| Работник на посту | Занято, отсутствия нет |
| Уход короче порога | Нет события длительного отсутствия |
| Уход дольше порога | Одно начало и корректная длительность |
| Прохожий в соседнем проходе | Пост не считается занятым |
| Два человека, один ушёл | Занято, если требуется хотя бы один |
| Перерыв | Не включается в рабочее отсутствие |
| Потеря потока / закрытая камера | Неизвестно, отдельная диагностика |
| Возврат видео на пустой пост | Дальнейший отсчёт по явно принятому правилу; без выдуманного знания обрыва |
| Перезапуск / новая версия | Предсказуемое закрытие или восстановление интервала без дублей |
На цеховых видео «Сигмы» сначала разметьте интервалы вручную и сравните сценарный результат с ними. В этой редакции описан способ реализации; готовый испытанный граф интервального КТД и его интеграция с отчётом не заявляются.
