Как мобильное приложение для клининга решает проблему согласования?
Разработка мобильного приложения для клининговой службы сокращает время согласования заказа с часов до секунд. В типичном сервисе уборка назначается через звонок или мессенджер: оператор согласовывает время, записывает в Excel, затем подтверждает клиенту. Процесс занимает от 10 минут до часа. Если клиент не дозвонился — он уходит. Автоматизация с мобильным приложением решает эту проблему: клиент видит свободные слоты, выбирает подходящий, оплачивает — и заказ попадает в систему. Исполнитель получает push-уведомление. Всё занимает меньше минуты. Наша команда реализовала такую схему в десятках проектов. Результат — экономия времени клиента на 80% и снижение затрат на операторов на 40%. Средняя экономия клиента при регулярных заказах составляет 1500–3000 рублей в месяц.
Почему единое приложение с тремя ролями — необходимость?
Оптимальная архитектура — одно Flutter-приложение с ролями клиента, исполнителя и администратора. Роль определяется при авторизации, UI переключается полностью. Это дешевле и проще в поддержке, чем три отдельных приложения.
| Роль | Ключевые функции |
|---|---|
| Клиент | Выбор услуги, онлайн-расчёт (площадь, доп. услуги, срочность), оплата, история, отзывы |
| Исполнитель | Расписание, навигация через Yandex MapKit, чек-лист, фотоотчёт с GPS-меткой, статусы прибытия |
| Администратор | Назначение, карта в реальном времени, управление тарифами, статистика |
Как мы реализуем динамический расчёт стоимости?
Стоимость уборки — функция от типа (стандартная, генеральная, после ремонта), площади, дополнительных услуг (чистка холодильника, окна) и срочности. Форма заказа показывает итог в реальном времени при изменении любого параметра. На бэкенде — таблица тарификации с базовыми ставками и коэффициентами. Администратор меняет цены в панели — никакого хардкода. Например, срочный заказ умножает базовую цену на 1.5, а мытьё окон добавляет 25%. На практике, стандартная уборка квартиры 60 м² с мытьём окон обходится клиенту в 2500–3500 рублей. Пример кода расчёта:
double calculatePrice(ServiceType type, double area, List<Extra> extras, bool urgent) { double base = _basePrices[type] ?? 1000; double areaCoeff = area > 100 ? 1.2 : 1.0; double extrasCoeff = extras.fold(0.0, (sum, e) => sum + e.coefficient); double urgencyCoeff = urgent ? 1.5 : 1.0; return base * areaCoeff * (1 + extrasCoeff) * urgencyCoeff; } База данных — PostgreSQL с PostGIS для геопоиска. Запросы выполняются за <50 мс.
Автоматическое vs ручное распределение: критерии выбора
Два режима:
-
Автоматическое: алгоритм ищет доступного исполнителя в зоне объекта (PostGIS, геозоны), с рейтингом >4.0, без конфликтов в расписании. Назначает → push исполнителю → принятие или отклонение. Время назначения — 2-5 секунд. В 95% случаев назначение выполняется автоматически, что снижает отток клиентов на 25%.
-
Ручное: диспетчер видит список свободных исполнителей на нужный слот и назначает вручную. Используется для нестандартных заказов (очень крупных, с особым инвентарём). Время — 1-5 минут.
| Параметр | Авто | Ручное |
|---|---|---|
| Время назначения | 2-5 секунд | 1-5 минут |
| Загрузка диспетчера | Минимальная | Полная занятость |
| Гибкость | Низкая (только по правилам) | Высокая |
Как фотоотчёт с геометками снижает количество споров?
Исполнитель фотографирует объект до и после уборки через камеру приложения. Каждый снимок привязывается к заданию с timestamp и GPS-координатами. Клиент видит фотоотчёт и подтверждает выполнение или оставляет претензию. Практика показывает: спорных ситуаций становится в 5 раз меньше, так как есть документальное подтверждение. Согласно App Store Review Guidelines 5.1, приложение должно запрашивать разрешение на доступ к камере — мы закладываем это на этапе проектирования.
Как работают рекуррентные заказы и push-уведомления?
Рекуррентные заказы: «уборка каждые 2 недели по пятницам» — задание автоматически создаёт новые заявки по расписанию. Оплата списывается с привязанной карты через ЮKassa recurring или ручная оплата. Уведомление приходит за 2 дня — можно перенести или пропустить. Повторные заказы увеличиваются на 40% после внедрения рекуррентной модели. Push-уведомления (FCM) используются для: уведомления о новом заказе, напоминания за 24 часа, изменение статуса, подтверждение оплаты, сообщение от клиента. Задержка доставки пушей не превышает 5 секунд.
Что входит в разработку и сопровождение?
- Мобильное приложение для iOS и Android (Flutter 3.x с Bloc)
- Административная панель (Laravel 11, PostgreSQL, PostGIS)
- Интеграция с платёжным шлюзом (recurring через ЮKassa)
- Настройка push-уведомлений (FCM)
- API-документация для дальнейшей поддержки
- Обучение персонала административной панели
- Гарантийная поддержка 3 месяца после релиза
Процесс работы: от идеи до релиза
- Аналитика и прототипирование — собираем требования, рисуем пользовательские сценарии для трёх ролей.
- UI/UX дизайн — проектируем интерфейсы, адаптированные под сценарии использования.
- Разработка — пишем код на Flutter и Laravel, интегрируем платежи, карты, пуши.
- Тестирование — QA на реальных устройствах, проверка на соответствие App Store и Google Play требованиям.
- Деплой — публикация в магазины приложений, настройка серверов.
- Пост-релиз — обучение персонала, гарантийная поддержка 3 месяца.
Сроки и стоимость
MVP (клиент + исполнитель, базовое назначение, оплата) — от 14 до 18 недель. Полная версия (рекуррентные заказы, автоназначение, расширенная аналитика) — от 22 недель. Стоимость рассчитывается индивидуально. Закажите разработку под ключ и автоматизируйте свой сервис. Получите консультацию — обсудим ваш проект и подготовим предложение.







