Система контроля выполнения уборки на распределенных объектах

Клининговая компания в Казахстане обслуживала несколько десятков объектов в разных частях города и пригороде. Основной задачей проекта стало создание единой системы, которая отвечала бы на простой операционный вопрос: «Что сейчас происходит на каждом объекте и есть ли риск, что обязательная уборка не будет выполнена?»

Карточка проекта

Отрасль
Клининг: офисы, торговые помещения, склады, небольшие бизнес-центры и административные здания
Основной рынок
Казахстан
Основная проблема
Руководитель знал, какие уборки запланированы, но не всегда мог быстро определить, какие из них действительно состоялись. Компания контролировала план, а требовалось контролировать факт
Ключевое решение
Цифровая цепочка доказательств выполнения работы: каждая уборка — отдельное задание со своим жизненным циклом
Основные пользователи
Клинер, диспетчер, супервайзер, руководитель
Технологический стек
Vue 3, TypeScript, PWA, Laravel, PostgreSQL, Redis, S3-совместимое хранилище, Docker, Nginx
Формат
Единое прикладное веб-приложение: адаптивный интерфейс для диспетчеров, супервайзеров и руководителей; мобильный PWA для клинеров

Контекст

Контекст проекта

Клининговая компания в Казахстане обслуживала несколько десятков объектов в разных частях города и пригороде: офисы, торговые помещения, склады, небольшие бизнес-центры и административные здания.

Часть объектов убиралась ежедневно, часть — несколько раз в неделю. На одних площадках постоянно работали закрепленные клинеры, на других сотрудники приезжали по графику или подменяли коллег.

По мере роста количества контрактов появилась операционная проблема: руководитель знал, какие уборки запланированы, но не всегда мог быстро определить, какие из них действительно состоялись.

Подтверждение выполнения работ существовало сразу в нескольких форматах:

  • сообщения сотрудников в Telegram;
  • фотографии в рабочих чатах;
  • звонки супервайзеру;
  • бумажные журналы на объектах;
  • таблицы с графиками;
  • устные подтверждения ответственных сотрудников.

Если клиент сообщал утром, что вечером уборка не была выполнена, восстановление событий превращалось в отдельное расследование: кто должен был приехать, был ли сотрудник на объекте, когда он начал работу, какие зоны убирал, были ли фотографии и почему супервайзер не увидел проблему раньше.

Основной задачей проекта стало создание единой системы, которая отвечала бы на простой операционный вопрос:

«Что сейчас происходит на каждом объекте и есть ли риск, что обязательная уборка не будет выполнена?»

Та же логика эксплуатационного слоя для multi-site сети разбирается в кейсе диспетчеризации сети коммерческих парковок — для парковочной инфраструктуры, а не клининговых контрактов.

Как было

Где возникал основной операционный разрыв

Проблема заключалась не столько в планировании смен, сколько в отсутствии надежной фиксации фактического исполнения.

Например, в расписании стояла уборка офиса с 19:00 до 21:00. Для диспетчера такая задача считалась назначенной. Но назначение сотрудника еще не означало выполнение работы.

Могло произойти несколько ситуаций:

  • сотрудник не вышел на смену;
  • приехал с существенным опозданием;
  • пришел к объекту, но не смог попасть внутрь;
  • начал работу, но не завершил обязательный чек-лист;
  • выполнил только часть зон;
  • забыл сделать фотографии;
  • сообщил о завершении в чате, хотя подтверждения отсутствовали;
  • подмена произошла устно и не попала в расписание.

Контролировали

план

Требовалось контролировать

факт

Для этого было недостаточно добавить еще один отчет. Необходимо было перестроить сам процесс подтверждения уборки.

Похожая фрагментация подтверждений через чаты и таблицы характерна и для гостеприимства — см. решение для календаря уборок в отелях и глэмпингах.

Концепция

Пользователи системы

В проекте выделили четыре основные роли.

Клинер

Для сотрудника система должна быть максимально простой. На объекте ему не нужна большая корпоративная CRM.

Рабочий сценарий

получить задание → подтвердить прибытие → выполнить обязательные действия → приложить подтверждения → завершить работу.

Основной интерфейс клинера реализован как мобильный PWA-интерфейс по образцу разработки корпоративных PWA-приложений — его можно открыть со смартфона без сложного обучения.

Диспетчер

Диспетчер отвечает за текущую ситуацию. Ему нужен не архив отчетов, а оперативная панель отклонений.

Видит

  • кто сегодня работает;
  • где есть невыход;
  • какие уборки еще не начались;
  • кому требуется замена;
  • какие задания просрочены.

Супервайзер

Супервайзер контролирует несколько объектов и разбирает исключительные ситуации:

  • неполный чек-лист;
  • отсутствие обязательной фотографии;
  • жалоба заказчика;
  • замечание после уборки;
  • систематические опоздания;
  • повторные проблемы на одном объекте.

Руководитель

Руководителю нужна агрегированная картина:

  • сколько обязательных работ выполнено;
  • где существуют системные нарушения;
  • какие объекты требуют повышенного внимания;
  • какие смены регулярно завершаются с отклонениями;
  • где возникают риски исполнения клиентских обязательств.

Концепция решения

Вместо попытки контролировать сотрудников через постоянные звонки система строит цифровую цепочку доказательств выполнения работы.

Каждая уборка становится отдельным заданием со своим жизненным циклом:

Запланировано → Назначено → Сотрудник прибыл → Работа начата → Выполняется → Завершено → Проверено.

Дополнительно существуют статусы отклонений:

  • Опоздание;
  • Не вышел;
  • Нет доступа;
  • Выполнено частично;
  • Требуется проверка;
  • Переделка.

Статус формируется не только вручную. Система учитывает события, которые происходят во время работы:

  • сканирование QR-кода объекта;
  • координаты устройства;
  • время начала;
  • прохождение чек-листа;
  • загрузку обязательных фотографий;
  • фиксацию проблемы;
  • время завершения.

Таким образом, руководитель видит не сообщение «убрал», а последовательность подтвержденных событий.

Dashboard текущего дня: запланировано, выполнено, в работе и очередь отклонений

Как подтверждается присутствие сотрудника

Одним GPS-контролем решили не ограничиваться.

На части объектов геолокация внутри здания работает нестабильно, а координаты сами по себе не доказывают, что сотрудник действительно получил доступ к нужной зоне.

Поэтому использовали комбинированное подтверждение.

На объекте размещается QR-код. Сотрудник открывает задание и сканирует его при начале работы.

Система сохраняет:

  • сотрудника;
  • объект;
  • задание;
  • время;
  • координаты устройства, если они доступны;
  • результат проверки QR-кода.

QR-код привязан к конкретному объекту и не заменяет авторизацию сотрудника.

Если уборка начинается необычно далеко от объекта или значительно позже установленного окна, система не обязательно блокирует сотрудника, а создает операционное отклонение.

Это важное решение: интерфейс не должен мешать выполнить работу из-за технической погрешности. Его задача — показать диспетчеру ситуацию, требующую проверки.

Мобильный сценарий клинера

В начале смены сотрудник видит только свои задания.

Например:

19:00 — офис, 3 этаж
Адрес объекта
Плановое время: 90 минут
Статус: «Можно начинать»

После прибытия сотрудник нажимает «Начать уборку».

Система предлагает отсканировать QR-код объекта.

После подтверждения открывается чек-лист:

  • входная зона;
  • рабочие помещения;
  • санузлы;
  • кухня;
  • коридоры;
  • вынос мусора.

У конкретного объекта может быть собственный набор зон и требований.

Для некоторых пунктов достаточно отметить выполнение. Для критичных зон требуется фотография. Та же связка чек-листа и фото, но для выбора объекта, а не для уборки, — осмотр производственной площадки по чек-листу проекта.

Если сотрудник замечает проблему, не связанную непосредственно с уборкой — например, протечку, разбитый дозатор или отсутствие расходных материалов — он может нажать «Сообщить о проблеме», выбрать категорию и приложить фотографию.

Событие сразу становится доступно супервайзеру.

Мобильный PWA клинера: задание, чек-лист и завершение уборки

Контроль незавершенных и пропущенных уборок

Одной из ключевых функций стала обработка уборок, которые должны были начаться, но не начались.

Для каждого задания хранится допустимое временное окно.

Например:

  • плановое начало — 19:00;
  • допустимое опоздание — 15 минут.

Если в 19:15 подтвержденного начала нет, задача автоматически попадает в блок внимания диспетчера.

Система показывает:

«Уборка не начата. Исполнитель назначен. Связь с объектом отсутствует.»

Диспетчер может:

  • связаться с сотрудником;
  • отметить подтвержденное опоздание;
  • назначить замену;
  • изменить исполнителя;
  • перенести работу;
  • зафиксировать причину невыполнения.

Если сотрудника заменили, история первоначального назначения не исчезает.

Это позволяет позднее понять, какие объекты и сотрудники чаще всего создают необходимость срочного перепланирования.

Карточка объекта как единая история выполнения

Вторая важная часть системы — цифровая карточка каждого объекта.

Раньше информация об объекте могла быть распределена между договором, таблицей, сообщениями супервайзера и памяткой сотруднику.

Теперь в карточке объединены:

Основная информация

  • адрес;
  • контактное лицо заказчика;
  • график уборок;
  • допустимое время доступа;
  • ответственный супервайзер.

Зоны

Например:

  • ресепшен;
  • open space;
  • переговорные;
  • санузлы;
  • кухня;
  • лестницы.

Для каждой зоны можно задать собственный чек-лист.

Инструкции

Сотрудник перед сменой видит только актуальные инструкции:

  • где получить ключ;
  • куда выносить мусор;
  • какие помещения не трогать;
  • где хранится инвентарь;
  • какие фотографии обязательны.

История

На временной шкале отображаются:

  • уборки;
  • исполнители;
  • фотографии;
  • замечания;
  • жалобы;
  • переделки;
  • проблемы с доступом.

Так супервайзер может открыть объект и увидеть не только сегодняшнюю ситуацию, но и повторяющийся паттерн проблем.

Та же идея единой истории объекта с QR-подтверждением на месте разбирается в кейсе эксплуатационного двойника многоквартирного дома — для управляющей компании жилого фонда, а не клининговых контрактов.

Операционный dashboard

Главным рабочим экраном диспетчера стал dashboard текущего дня.

Вместо обычного отчета он построен по принципу management by exception — внимание пользователя направлено в первую очередь на то, что идет не по плану. Тот же подход к диспетчерскому экрану описан для диспетчеризации курьерской доставки.

Наверху отображается сводка:

  • запланировано;
  • выполнено;
  • выполняется;
  • еще не начато;
  • есть отклонения.

Ниже — все задания дня.

Можно быстро отфильтровать:

  • Опоздания;
  • Не начаты;
  • Нет исполнителя;
  • Нет фото;
  • Есть проблема;
  • Переделки.

Диспетчеру больше не требуется последовательно писать каждому клинеру и спрашивать статус.

Если процесс идет нормально, объект практически не требует внимания.

Если появляется отклонение, система поднимает его наверх.

Работа с фотоотчетами

Фотоотчет не сделали отдельной папкой с сотнями изображений.

Каждое фото имеет контекст:

объект → уборка → зона → пункт чек-листа → исполнитель → время.

Например:

Объект: офис
Зона: кухня
Требование: «Очистить рабочую поверхность»
Фото после выполнения
Исполнитель: сотрудник смены
Время: 20:12

Для обязательных фотографий система проверяет сам факт их наличия перед завершением задания.

Если какая-либо фотография отсутствует, сотрудник видит конкретное сообщение:

«Для завершения добавьте фотографию зоны "Санузел, 2 этаж".»

В дальнейшем эта же структура позволяет добавить автоматический анализ фотографий без перестройки основного процесса.

Переделки и замечания

Если супервайзер или заказчик обнаруживает недостаток, он создается не как сообщение в чате, а как замечание, связанное с конкретным объектом и уборкой.

Например:

Замечание: загрязнение пола возле входа.
Зона: входная группа.
Приоритет: высокий.
Ответственный: текущая смена.
Требуется: переделка и контрольное фото.

После выполнения сотрудник прикладывает новую фотографию.

Замечание получает статус «Исправлено», но окончательное закрытие может выполнить супервайзер.

Таким образом появляется полноценная цепочка:

уборка → замечание → переделка → подтверждение → закрытие.

Сценарий невыхода

Один из наиболее важных процессов выглядит следующим образом.

  1. В 18:45 сотруднику назначена уборка.
  2. В 19:00 подтверждения начала нет.
  3. В 19:15 система фиксирует отклонение.
  4. Диспетчер открывает карточку задания и связывается с сотрудником.
  5. Выясняется, что тот не сможет приехать.
  6. Диспетчер нажимает «Требуется замена».
  7. Система показывает доступных сотрудников и их текущие задания.
  8. После выбора нового исполнителя ему приходит новое задание с адресом, временем, инструкцией объекта, чек-листом и контактной информацией.

История фиксирует:

Первоначальный исполнитель → невыход → причина → назначена замена → новый исполнитель → фактическое начало.

Такой подход позволяет впоследствии анализировать причины сбоев, а не просто исправлять расписание задним числом.

Система правил вместо ручного контроля

После появления структурированных событий стало возможно автоматизировать часть работы диспетчера.

Например:

Если плановое время начала прошло более чем на допустимый интервал и события started нет, то создать отклонение «Уборка не начата».

Или:

Если сотрудник пытается завершить задание и обязательный пункт чек-листа не выполнен, то не завершать задание и показать недостающий пункт.

Или:

Если уборка завершена и присутствует открытое критичное замечание, то направить задание супервайзеру на проверку.

Правила остаются прозрачными и управляемыми. Для базового контроля не требуется сложная AI-модель.

Это также упрощает разбор спорных ситуаций: руководитель может понять, почему система отметила конкретное задание как проблемное.

MVP

Что вошло в MVP

Для первой версии сознательно не стали объединять управление клинингом, расчет зарплаты, бухгалтерию, склад и клиентский портал в одну систему — эти контуры логичнее подключать позже через интеграции Laravel с 1С.

MVP был сфокусирован именно на доказуемом исполнении работ.

В него вошли следующие блоки.

Что входит в MVP

1. Объекты

Карточки объектов, зоны, инструкции, графики и QR-коды.

2. Сотрудники

Список клинеров и супервайзеров, роли, доступность и привязка к заданиям.

3. Плановые уборки

Создание разовых и повторяющихся заданий.

4. Мобильное выполнение

Начало работы, QR-подтверждение, чек-лист, фотографии, фиксация проблем и завершение.

5. Операционный контроль

Экран сегодняшних уборок и отдельная очередь отклонений.

6. Фотоотчеты

Фотографии сохраняются в контексте конкретного объекта, задания, зоны и сотрудника.

7. История событий

Для каждого задания существует журнал: кто → что → когда сделал.

8. Уведомления

Система сообщает ответственным не о каждом нормальном событии, а преимущественно об отклонениях: уборка не началась, сотрудник опаздывает, задание осталось незавершенным, отсутствует обязательное фото, зарегистрирована проблема, требуется переделка. Так система не превращается в еще один источник информационного шума.

Что сознательно не вошло

Расчет зарплаты
Бухгалтерия
Склад
Клиентский портал

Стек

Техническая реализация

Система спроектирована как единое прикладное веб-приложение без избыточной инфраструктуры.

Client

  • Vue 3
  • TypeScript
  • адаптивный веб
  • PWA

Для диспетчеров, супервайзеров и руководителей используется адаптивный веб-интерфейс. Для клинеров тот же frontend работает как PWA, оптимизированный под смартфон.

API

  • Laravel
  • REST API

Backend отвечает за пользователей и роли, объекты, расписание, задания, чек-листы, статусы, журнал событий, работу с фотографиями, правила контроля, уведомления и отчеты. REST API оставляет возможность позднее подключить Telegram-бот, клиентский кабинет, отдельное мобильное приложение и интеграции с учетными системами.

Data

  • PostgreSQL
  • users
  • employees
  • objects
  • object_zones
  • cleaning_templates
  • cleaning_tasks
  • task_assignments
  • checklist_items
  • checklist_results
  • task_events
  • photos
  • issues
  • reworks
  • notifications

Особое значение имеет task_events. Вместо хранения только текущего статуса система фиксирует последовательность событий: assigned, qr_verified, started, checklist_updated, photo_uploaded, issue_created, completed, verified. Это дает возможность восстанавливать фактический ход любой уборки.

Queue / cache

  • Redis
  • очереди
  • временные задачи

Обработка уведомлений, проверка просроченных заданий, подготовка отчетов, фоновая обработка фотографий.

Storage

  • S3-совместимое хранилище
  • фотографии

В PostgreSQL остаются метаданные и связи с объектом, заданием, зоной и сотрудником.

Infrastructure

  • Nginx
  • Laravel
  • PostgreSQL
  • Redis
  • S3-хранилище
  • Docker

Для типового развертывания достаточно цепочки Nginx → Laravel → PostgreSQL + Redis + S3-хранилище. Приложение разворачивается через Docker-контейнеры без Kubernetes и отдельной микросервисной инфраструктуры.

Техническая архитектура: единое прикладное веб-приложение без избыточной инфраструктуры

Эффект

Как изменился рабочий процесс

До внедрения системы информация двигалась в основном через людей:

До

клинер → сообщение → супервайзер → сообщение → диспетчер → таблица → руководитель.

После

запланировано → сотрудник назначен → подтверждено прибытие → зафиксировано выполнение → сохранены доказательства → автоматически выявлены отклонения.

После внедрения основным источником статуса стало само задание.

Коммуникация между людьми не исчезла.

Но Telegram и телефон перестали играть роль базы данных.

Ими стали пользоваться для решения исключений, а не для хранения истории операций.

Что получил руководитель

Самое заметное изменение — возможность перейти от постоянного ручного контроля к контролю отклонений.

Руководителю больше не нужно проверять каждый объект.

На одном экране видно:

  • какие работы идут по плану;
  • какие еще не начались;
  • где произошло опоздание;
  • где потребовалась замена;
  • где не хватает подтверждений;
  • какие объекты регулярно создают проблемы.

История стала пригодна для анализа.

Можно посмотреть:

  • объекты с наибольшим количеством отклонений;
  • количество невыходов по сотрудникам;
  • фактическое время работы;
  • повторные переделки;
  • регулярные проблемы доступа;
  • выполнение обязательных процедур.

Что получил заказчик

Для корпоративного клиента становится возможным сформировать отчет не на основе ручного комментария менеджера, а на основе накопленных событий.

В отчете могут отображаться:

  • дата и время уборки;
  • объект;
  • фактическое начало и завершение;
  • выполненные зоны;
  • фотографии;
  • замечания;
  • переделки;
  • статус проверки.

При спорной ситуации менеджер открывает конкретную уборку и видит всю цепочку событий.

Это особенно важно для распределенных объектов, где представитель заказчика физически не присутствует во время каждой уборки.

Результат проекта

Проект не сводился к цифровизации существующего журнала уборок.

Главным изменением стала сама модель операционного управления.

Раньше компания пыталась получить подтверждение постфактум.

После внедрения системы выполнение работ стало оставлять структурированный цифровой след автоматически в процессе смены.

В результате компания получила:

  • единый источник информации по текущим уборкам;
  • прозрачную историю исполнения по объектам;
  • раннее обнаружение пропущенных работ;
  • управляемый процесс невыходов и замен;
  • связку чек-листов и фото с конкретной уборкой;
  • доказательства выполнения работ;
  • историю замечаний и переделок;
  • основу для аналитики качества и трудозатрат.

Точные показатели эффекта зависят от количества объектов, графиков и организационной структуры конкретной компании, поэтому результат проекта корректнее оценивать через операционные показатели: снижение количества необнаруженных вовремя невыходов, сокращение ручных проверок статусов и полноту цифровой истории выполненных работ.

До и после: Telegram, таблицы и журналы уступили место единому заданию уборки

Развитие

Следующий этап развития

После накопления достаточного объема структурированных данных систему можно развивать постепенно.

AI-проверка фотографий

Модель анализирует обязательные фотографии и отмечает случаи, требующие внимания супервайзера:

  • фотография не соответствует заданной зоне;
  • изображение слишком темное или размыто;
  • вероятно загружена нерелевантная фотография;
  • результат заметно отличается от типичного состояния зоны.

AI здесь не должен автоматически объявлять уборку качественной или некачественной. Его полезнее использовать как первичный фильтр для инспектора — в том же духе, что и сценарии AI-автоматизации бизнес-процессов на накопленных операционных данных.

Прогноз невыходов

На основании истории смен можно рассчитывать риск проблемного назначения, учитывая:

  • предыдущие невыходы;
  • опоздания;
  • частоту замен;
  • расстояние между последовательными объектами;
  • загрузку сотрудника.

Результатом становится не автоматическое наказание сотрудника, а предупреждение диспетчеру при составлении расписания.

Умная диспетчеризация

При невыходе система может ранжировать возможных замен:

  • кто свободен;
  • кто находится ближе;
  • кто уже работал на этом объекте;
  • кто успевает завершить предыдущую смену;
  • кому доступ не создаст конфликт расписания.

Контроль SLA

Для корпоративных контрактов можно добавить автоматический контроль:

какие обязательные работы по договору должны быть выполнены → какие реально подтверждены системой → где возникает риск нарушения обязательств.

Аналитика экономики объекта

Связав фактическое время работы с плановым нормативом, система сможет показывать:

  • объекты с постоянным перерасходом часов;
  • зоны, требующие больше времени, чем ожидалось;
  • изменение трудозатрат;
  • контракты, требующие пересмотра нормативов.

Таким образом, первоначальный продукт для подтверждения факта уборки постепенно превращается в операционную систему управления распределенной клининговой компанией — без необходимости сразу создавать тяжелую комплексную платформу.

Обсудить проект

Нужна разработка операционного контура клининга, контроля уборок на объектах, MVP на Laravel + Vue — частный разработчик на Laravel ведёт такие проекты от архитектуры до запуска. Другие концепции — в каталоге решений.

Связаться