В 2017 году ПИК пришла к нам с задачей автоматизировать работу проверяющих технадзора. Это люди, отвечающие за качество выполненных работ. Раньше они ходили по домам, записывали все замечания на бумаге, а потом отправляли на рассмотрение и согласование.
ПИК ведет одновременное строительство десятков жилых комплексов, за каждым из которых закреплены проверяющие. Конечно, вести бумажные документы для такой огромной системы — утомительно и непродуктивно.
Если конкретизировать, проблемы были такие:
А решать их мы решили так:
Заказчик написал нам 11 июня. 12 июня мы встретились, а уже через месяц надо было запустить MVP. Сроки поджимали, поэтому дизайн сделали максимально простым.
Немного расскажем о том, как устроены замечания на стройке. Объекты строительства вложены друг в друга:
На каждом уровне можно создать замечание. Проверяющие привязывают замечания к объекту и детализируют, к чему именно они относятся: пол, комната, стена.
Для MVP мы совместно определили следующий сценарий работы приложения:
Так это выглядело в реализованном виде:
Приложение решили писать на языке Kotlin. Писать код на Kotlin быстрее и удобнее, чем на Java, но у него был еще один важный плюс.
Проект стартовал в 2017 году и развивался еще несколько лет. Если в 2017 найти Java-разработчиков под Android было несложно, то в 2019 это стало уже затруднительно. Google порекомендовал Kotlin как предпочтительный язык для Android, и новые разработчики сразу начинают с него. Своевременное внедрение актуальной технологии позволило не тратить время на поиск разработчиков под устаревшую.
При каждой синхронизации проверяющий должен скачать большое количество данных. Этот процесс идет долго, а замечания во время синхронизации вносить нельзя — иначе пострадает их согласованность.
Сначала на все время процесса добавили блокировку интерфейса. Так проверяющий точно не мог случайно внести замечания в записи в момент их синхронизации. А чтобы ускорить синхронизацию, сделали ее многопоточной. Данные, полученные в разных потоках, не должны конфликтовать, поэтому мы привязали потоки синхронизации к корпусам: их данные не зависят друг от друга.
Обычно синхронизация запускается автоматически, и это удобно. В 2017 году стандартным методом реализации автоматической синхронизации на Android был SyncAdapter. Но при проверке выяснилось, что он запускает синхронизацию при малейшем проявлении сети.
Нам этот вариант не подошел: если на объектах стройки и появлялась связь, она была слабой и кратковременной. Таких периодов появления связи не хватало для полноценной синхронизации, поэтому она проваливалась.
Поэтому мы выбрали ручную синхронизацию. Она хорошо ложится на режим работы сотрудника. Утром он приходит в офис и вручную синхронизирует замечания. Затем в течение дня без доступа к сети работает с ними на основе загруженных данных. Вечером возвращается в офис и снова синхронизируется.
Чтобы минимально отвлекать сотрудников от работы, нужно распространять обновления с наименьшей головной болью для пользователей.
Для распространения приложения мы выбрали платформу HockeyApp. Сейчас она называется Appcenter. Для достижения наших целей у HockeyApp есть ряд преимуществ по сравнению Google Play:
Принудительное обновление. Некоторые версии можно отметить обязательными для установки. Тогда пользователь просто не пройдет дальше первого экрана, пока не обновит приложение. Так мы могли принудительно устанавливать критически важные обновления.
Мы использовали инструмент Fabric — сейчас он называется Firebase Crashlytics. С его помощью можно определить конкретного пользователя, у которого возникла та или иная ошибка. Так мы могли максимально быстро узнавать об ошибках и устранять их.
Чтобы не тратить время разработки на некритичные баги, согласовали с заказчиком правило: правим только те ошибки в приложении, которые возникают более чем у 3 человек, или у одного человека более 10 раз.
Переезжать из однои системы в другую всегда тяжело. ПИК переезжали из бумажной системы в информационную. Вот что сделала ?оманда проду?та на стороне за?азчи?а:
Таким образом проверяющие старались вносить больше замечаний, но писали только существенные пункты.
По результатам тестирования добавили еще кое-что:
Так это выглядело в реализованном виде:
В итоге мобильное приложение дало ПИК несколько ключевых плюсов: