Что под капотом системы уборок: Android, Django и API

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

Но красивый интерфейс — лишь верхушка айсберга.

Самое интересное началось тогда, когда мы стали реализовывать реальные рабочие сценарии.

Потому что между «сделать приложение со списком задач» и «создать систему, которой сотрудники пользуются каждый день» — огромная разница.

Архитектура

Мы выбрали стек, который позволяет самостоятельно поддерживать и развивать проект:

🐧 Debian — серверная операционная система. 🐍 Django — backend и бизнес-логика. 🐘 PostgreSQL — хранение данных. ⚙️ Gunicorn + Nginx — обработка запросов и выдача файлов. 📱 Android — приложение для сотрудников. 🌐 Веб-интерфейс — управление и контроль для руководителей.

Всё работает на собственной инфраструктуре. Ключевая логика сосредоточена на сервере, поэтому её можно развивать без постоянного переписывания мобильного приложения.

Проблема №1. Фотофиксация

Для контроля качества недостаточно поставить галочку «Готово».

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

Мы реализовали настройку требований к фото на уровне типа объекта.

Но тут возникает другая проблема.

150–170 уборок ежедневно — это огромный поток изображений.

Если хранить всё бесконечно, файловое хранилище быстро превратится в склад ненужных данных.

Поэтому предусмотрели отдельную политику хранения: фотографии в рабочей системе автоматически удаляются после установленного срока.

А материалы, которые необходимо сохранить в рамках обращений, остаются в отдельной системе заявок.

Проблема №2. Доработка — не новая уборка

Один из самых интересных сценариев.

Горничная завершила уборку. Супервайзер проверил результат и обнаружил замечание.

Что делать?

Наивный вариант — создать новую задачу или сбросить старую.

Но тогда теряется история, время и уже отмеченные пункты.

Мы реализовали отдельный цикл доработки.

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

При этом чек-лист сохраняется, а время выполнения продолжает учитываться.

Мелочь на уровне интерфейса, но довольно важное решение на уровне бизнес-логики.

Проблема №3. Интерфейс, который мешает работать

Поначалу столкнулись с неожиданным эффектом.

Сотрудник отмечает пункт чек-листа, страница обновляется и прокручивается наверх.

Представьте, как раздражает это при десятках повторяющихся действий.

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

Ещё один момент — скорость работы при просмотре фотографий и переключении между задачами.

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

Проблема №4. Обновления Android-приложения

Разрабатывать APK недостаточно.

Нужно ещё обеспечить его распространение и обновление.

Поэтому в backend предусмотрели отдельный API для обновлений мобильного приложения.

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

Что в итоге?

Получилась не просто программа для горничных.

Мы разработали собственную клиент-серверную платформу с ролями, бизнес-процессами, фотофиксацией, контролем качества, историей выполнения и управлением объектами.

И главное — она создавалась не ради технологии.

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

Для меня это и есть самая интересная сторона IT: не просто поддерживать инфраструктуру, а создавать инструменты, которые меняют повседневную работу.

А какой самый неожиданный нюанс бизнес-процесса вам приходилось учитывать при разработке?

Что под капотом системы уборок: Android, Django и API | Сетка — социальная сеть от hh.ru