Привет, меня зовут Александр, я начальник отдела мобильной разработки в СИГМЕ. Хочу рассказать, как мы делали приложение для мобильных бригад. Тех самых ребят, которые выезжают на место аварий на объектах энергетики и делают так, чтобы свет и энергия в наших домах не отключались. За 18 лет СИГМА накопила уникальную экспертизу в разработке ИТ-решений для энергетики. Наша суперсила — создавать приложения для автоматизации бизнес-процессов, связанных с обслуживанием оборудования и безопасностью персонала. Поэтому погнали за подробностями.

Как все начиналось

В 2018 году у нас стартовал проект по разработке Автоматизированной системы управления мобильными бригадами (АСУ МБ). Это решение для цифровизации деятельности автономных команд, занимающихся диагностикой и ремонтом оборудования на линиях электропередач, электростанциях и других промышленных объектах. Система большая и одна из её ключевых составляющих — мобильное приложение. Бригады оснащаются мобильными устройствами и всю свою работу координируют через предустановленное приложение.

Проект по его разработке отдали на подряд, но партнеры не справились. Тогда за работу взялась наша команда. Пришлось все переделывать: мы выбрали новый архитектурный стек и написали заново клиентскую часть. Приложение решили строить на чистой архитектуре — с Moxy и Java. Спустя год усердной работы команда из 10 Android-разработчиков успешно выпустила первый релиз. Оказавшись в конце годового отрезка с горящими сроками, выдохнули — «Мы справились». Но тут возникла задача по адаптации кода/технологического стека под новые реалии: рынок мобильной разработки уже успел кардинально измениться.  Java уже не в моде, все пишут на Kotlin, а вместо Moxy пора использовать MVVM.

Мы не стали исключением и начали плавно переходить на эти технологии. Перспективы дальнейшего развития проекта и маячащие на горизонте проекты с похожими бизнес-процессами подтолкнули нас к использованию многомодульной архитектуры. Мы выделили «ядро» проекта с целью его дальнейшего переиспользования. В течение следующего года, параллельно выпуская новые релизы, успешно переехали на новый стек. А сейчас уже активно используем Kotlin Multiplatform, Compose и думаем о переезде на MVI.

«Толстый клиент» и полноценный офлайн-режим

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

Так выглядит личный кабинет пользователя
Так выглядит личный кабинет пользователя

Толстый клиент — главная фича приложения и в то же время самая сложная его часть. У него множество преимуществ:

  • высокая производительность и скорость обработки данных

  • широкая функциональность

  • независимость от удаленных серверов

  • возможность работы без интернет-соединения

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

Приложение большое и объемное, я бы назвал его таким супераппом в мире энергетики и цифрового сотрудника. Толстый клиент — толстая база данных: в БД порядка 200 таблиц, а в перспективе их станет на сотню больше. Соответственно, мы пишем много SQL-запросов, нередко пишем сложные SQL-запросы и особенно «не любим» миграции, т.к. поддерживаем версионирование схемы БД. Но толстой является не только БД, но и кодовая база — около полумиллиона строчек кода в ~150 Gradle-модулях.  

Как ранее было сказано, в процессе разработки мы (Android команда), а также другие смежные команды (бэкенд, веб-фронт) выполняли унификацию и перенос общих бизнес-процессов в отдельные компоненты (модули, библиотеки, сервисы). Синергия всех компонентов — наша цифровая платформа СИГМА.Алькор. Благодаря слаженной и усердной работе мы получили продукт, с помощью которого можем, как из «кирпичиков», собирать целые решения для бизнеса электроэнергетики. На данный момент компонентная база решения все больше и больше обогащается новыми модулями, отвечая актуальным вызовам.

Как это работает

АСУ МБ — решение для сотрудников, работающих в полях: электриков, монтажников, обходчиков и не только. С помощью мобильного приложения в начале смены менеджеры просматривают задачи из ERP-системы, формируют, а затем распределяют их по бригадам и направляют на планшеты.

Особый предмет для гордости — первое в отечественной энергетике внедрение электронной цифровой подписи. За счет ЭЦП сотрудник может подписывать документы, даже если находится в офлайн-режиме на труднодоступном участке. Как это происходит на практике? Допустим, где-нибудь в Подмосковье сломался трансформатор. Электрики перед проведением работ должны пройти инструктаж по технике безопасности и подтвердить, что ознакомились с правилами. Делают они это в нашем приложении с помощью ЭЦП. Там же сотрудники могут фиксировать начало и окончание работ, оставлять примечания, списывать потраченные материалы.

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

На самом деле бизнес-функций в приложении очень много. Описанный пример — это лишь малая часть реализованных бизнес-процессов. Сейчас мы активно ведем работу над новым модулем — «Автоматизированное рабочее место водителя».

От джунов к мидлам и сеньорам

Проект мощно прокачал нас в плане новых знаний и навыков: использования многомодульной архитектуры, создания повторно-используемых библиотек, работы с системами геолокации, электронным документооборотом и ЭЦП. Над приложением работала большая команда, многие разработчики пришли на проект младшими специалистами и выросли до уровня ведущих. Я сам пришел именно на этот проект как разработчик и впоследствии уже стал руководителем отдела.  Проект тоже развивается (и не только этот), поэтому мы всегда рады пополнению в команде. Ищем талантливых и целеустремленных специалистов, готовых работать с новыми мобильными технологиями в рамках больших проектов. Присоединяйтесь — вакансии СИГМЫ можно посмотреть здесь, а на вопросы о решении и проекте я готов ответить в комментариях. Спасибо за внимание!

Автор:
Александр Гурьянов

Комментарии (8)


  1. Vorchun
    13.11.2023 13:10

    Вообще есть такой класс систем CMMS. Как-то делал обзор мировых сервисов, но вот российские не смотрел. Интересно как у нас с этим как с сервисом. Или каждая компания пишет для себя?


    1. Neikist
      13.11.2023 13:10

      C 14 по 18 год в конторе разрабатывающей 1С:ТОиР работал. Помню еще мобилку к нему делали, типовую и сильно допиленную для одного проекта (что на мой взгляд ужас, мобилку делать на 1с, особенно в случае проекта, она совсем под задачи не подходила в том случае).


      1. Vorchun
        13.11.2023 13:10

        Вот знаете, у нас в прошлом году была задача сделать мобильное для сотрудников склада и производства. Они работают в 1С. Мы выбрали React Native, потому что так было для нас проще. Но в то же время смотрели что есть в 1С. В современных редакциях 1С есть штуки для создания мобильных приложения (сейчас не вспомню как называется). И было ощущение, что вполне себе рабочий вариант. Если бы у нас было на одного 1Сника больше, то, скорее всего, пошли бы по этому варианту.


    1. AlexanderGuru
      13.11.2023 13:10

      Если тренды мировой практики можно увидеть в ежегодных отчётах или обзорах (например, "магический квадрант" от Gartner, хотя критерии и условия включения решений это отдельный вопрос), то у нас пока явно прослеживается тренд в написании решений под себя. На это есть ряд причин - одни и те же процессы, в одной и той же отрасли могут быть организованы и автоматизированы совершенно по разному (от учёта МТР до планирования).


  1. Rusrst
    13.11.2023 13:10

    Moxy так-то неплохое решение было что тогда, что сейчас в целом для небольших приложений. Но вот compose уже точно все в этом плане меняет...


    1. AlexanderGuru
      13.11.2023 13:10
      +2

      Согласен. Compose действительно поменял в лучшую сторону процесс разработки.


      1. themen2
        13.11.2023 13:10

        Почему,?


        1. AlexanderGuru
          13.11.2023 13:10

          Перечислить плюсы Compose? 0_о