Как мы перевели авторизацию на Keycloak, подготовили продукт к поставке без внешних интеграций и добавили новые виды ремонтов и отчётов
Заказчик это крупная нефтяная компания. Ремонт скважин и буровых установок у неё ведётся в отдельной системе, где работают три стороны: заказчик ремонта, подрядчик, который выполняет работы, и служба супервайзерского контроля.
Поэтому система состоит из трёх модулей. В веб-приложении заказчики оформляют ремонты и следят за их состоянием. Подрядчик работает в десктопном приложении: документирует операции прямо на объекте. Супервайзеры пользуются отдельным веб-модулем и контролируют, как идёт ремонт. Данные между десктопом подрядчика и вебом заказчика синхронизируются.
Бэкенд написан на ASP.NET Core и .NET 6 с Dapper и PostgreSQL, веб на Angular и AngularJS, десктоп на Electron, обмен между компонентами через RabbitMQ. Фортех работал на проекте в 2024 году в два этапа: с января по июнь и с мая по сентябрь. В команде заказчика были фронтенд- и бэкенд-разработчики, архитектор, тестировщики, аналитики, DevOps-инженер и руководитель продукта.
На первом этапе нужно было подготовить продукт к поставке:
На втором этапе задачей было расширить функциональность: добавить новые виды ремонтов, учёт оборудования бригад и химических реагентов, исправить и добавить суточные отчёты.
Часть сервисов системы зависела от интеграций со сторонними базами Oracle. Доступ к ним пропал, а логика ремонтов должна была продолжать работать.
Отчёты выгружаются в Excel, и у каждого отчёта свой набор столбцов и строк. Скрывать функции нужно было и в интерфейсе, и в этих файлах.
Предметная область сложная: прежде чем менять данные, команде пришлось разобраться, какие справочники в базе заполняются интеграциями, а какие ведутся вручную.
Авторизация. Разработчик Фортех внедрил аутентификацию и авторизацию через Keycloak вместо доменной авторизации и написал документацию: как настроить Keycloak и как заводить пользователей.
Фича-флаги в отчётах. Для отчётов разработчик написал отдельную библиотеку. Она скрывает столбцы и строки в Excel-документах в зависимости от набора фича-флагов для каждого отчёта. Библиотеку показали бэкенд-команде, а переход со старого способа работы с Excel прошёл через ревью.
Работа без внешних баз. Команда исследовала базу данных проекта вместе с аналитиками и выделила рабочие справочники, которые заполнялись интеграциями. По итогам написали документацию с предпосылками, условиями и результатами исследования. Функции, которые зависели от недоступных баз Oracle, подменили заглушками, чтобы продукт работал без них.
Поставка. Непоставляемые модули скрыли, сделали механизм лицензирования на Guardant и развернули тестовый стенд.
Новые виды работ. На втором этапе команда добавила в систему учёт бригадного оборудования и химических реагентов, а также ремонты РИР, ОПЗ и глушение скважин. Под них сделали суточный рапорт. Заодно исправили существующие отчёты: суточный рапорт ТКРС и рейтинг бригад ТКРС.
Вход в систему работает через Keycloak, без привязки к доменной авторизации, а для администраторов есть инструкция по настройке.
Продукт можно поставлять без лишних модулей: фича-флаги управляют и интерфейсом, и тем, что попадает в выгружаемые отчёты. Система работает без недоступных внешних баз.
В систему добавлены новые виды ремонтов, учёт оборудования бригад и химических реагентов, суточные отчёты по ним, а старые отчёты исправлены. Оба этапа закрыты полностью.
Как перевести корпоративную систему с Active Directory на Keycloak?
Заменить доменную авторизацию на Keycloak на бэкенде, перенастроить роли и описать, как заводить пользователей. В этом проекте документация по настройке Keycloak стала частью работы, чтобы администраторы заказчика справлялись сами.
Как скрыть часть функций в выгружаемых отчётах Excel?
Через фича-флаги. Здесь написали библиотеку, которая по набору флагов для каждого отчёта убирает лишние столбцы и строки из документа перед выгрузкой.
Что делать, если пропал доступ к внешней базе, от которой зависит система?
Сначала разобраться, какие данные из неё нужны, и выделить их в собственные справочники. Остальные обращения к внешней базе можно подменить заглушками, чтобы логика продолжала работать.
Работает ли Фортех с промышленными системами?
Да. Здесь команда работала с системой, в которой одновременно работают заказчик ремонта скважин, подрядчик и супервайзеры.

Как мы делали плагины расчётов и визуализаций для геологов, потоковый экспорт и импорт проектов и переводили процессы на WebSocket

Как фронтенд-разработчик Фортех сделал умное автозаполнение по справочнику и девять конфигурируемых форм для компоновки буровой колонны

Как мы вернули в работу два веб-сервиса после переезда кода, переписали тяжёлый импорт данных участников из AmoCRM и сделали массовую рассылку в Telegram

Как мы за пять месяцев собрали ядро магазина на NestJS: гибкие цены для трёх типов клиентов, обмен с 1С без дублей и поиск с русской морфологией