Разработка мобильного приложения для передачи показаний счётчиков ЖКХ
Задача кажется простой: жилец вводит цифры — данные уходят в систему. На деле это форма с несколькими слоями валидации, интеграцией в биллинг и OCR-распознаванием, которое половину времени ошибается на рукописных цифрах циферблата.
Основная механика и где она ломается
Жилец заходит в приложение, видит список счётчиков по своему лицевому счёту (вода холодная, горячая, электричество, газ), вводит показания и отправляет. Это — 80% случаев. Остальные 20% создают 80% проблем.
Валидация показаний. Показания не могут быть меньше предыдущих — кроме случая замены счётчика. Если разница между текущими и предыдущими превышает пороговое значение (например, 50 кубов воды за месяц — подозрительно), система должна запросить подтверждение, а не молча принять. Пороги — настраиваемые параметры в административной панели, не захардкоженные константы.
Дедлайн передачи. Большинство УК принимают показания с 15 по 25 число. За пределами этого окна форма должна быть заблокирована с понятным сообщением — не просто «ошибка», а «Показания принимаются с 15 по 25 число. Следующее окно откроется через X дней». Реализуется через серверный конфиг, не через логику в приложении.
OCR-ввод через камеру. ML Kit Text Recognition (Android) / Vision Framework (iOS) для распознавания цифр с экрана счётчика. В теории удобно — в практике распознавание роликового счётчика с бликами работает в 60-70% случаев. Поэтому OCR — вспомогательный инструмент, не замена ручному вводу. Результат распознавания заполняет поле, жилец подтверждает или исправляет.
Интеграция с биллингом
Самая важная часть. Данные должны попасть в систему учёта управляющей компании — 1С:Бухгалтерия, РКЦ, Инфократ или другую. Способы: REST API (если биллинг поддерживает), файловый обмен XML/CSV по расписанию, прямая запись в базу (с разрешения вендора — редко, но бывает).
На стороне нашего бэкенда (Laravel + PostgreSQL) хранится история всех переданных показаний с timestamp, device ID и IP — для разбора споров о том, были ли показания переданы и когда.
Стек: Flutter + Dart для мобильного приложения, Laravel 10 API, PostgreSQL. Push-напоминания через FCM — за 5 дней до начала окна передачи и в последний день.
Сроки
Приложение для передачи показаний (один тип счётчика или несколько, с интеграцией в биллинг) — от 5 до 8 недель. Стоимость рассчитывается индивидуально.







