Корпоративное ПО
.NET Core
Клиент (NDA) — разработчик HRM-приложения, похожего на социальную сеть, но для корпоративных нужд. Это приложение предоставляет компании возможность управлять внутренними процессами и коммуницировать между сотрудниками. Для каждого клиента создается своя индивидуальная версия с необходимым набором функций, таких как поддержка видеозвонков, маркетплейс для корпоративных продуктов (которые можно приобрести за условную виртуальную валюту), опросы и тесты для сотрудников и другие рабочие инструменты.
Команда клиента пригласила нашего backend-разработчика для работы над ключевыми задачами, связанными с улучшением функционала и архитектуры приложения.
1. Оптимизация модуля «Маркет» и «Благодарности».
В приложении были два модуля: «Маркет», где можно было покупать товары за корпоративную валюту, и «Благодарности», которые начисляли эту валюту. Эти модули использовали одну и ту же систему для работы с валютой и были тесно связаны между собой, что ограничивало возможность их использования по отдельности.
Был разработан промежуточный модуль «Кошелек», который объединил работу с корпоративной валютой. Это позволило снизить зависимость между модулями, сделать приложение более настраиваемым для разных клиентов и соблюсти принцип «единичной ответственности» (каждый модуль отвечает только за свою задачу).
В результате заказчики могли использовать модули «Маркет» и «Благодарности» как отдельно, так и вместе, а также легко добавлять или изменять функционал, что повысило гибкость всего приложения.
2. Переход от статических объектов к динамическим
Проект находился на стадии перехода от статичных объектов — жестко прописанных в коде — к динамическим объектам. Динамический объект — это объект, который пользователь может создать сам в процессе работы приложения, задавая его нужные параметры и настраивая функциональность по своему усмотрению.
В HRM-приложении динамическими объектами могут быть различные элементы, которые создаются и настраиваются пользователями (HR-менеджерами, администраторами или самими сотрудниками) в реальном времени в процессе работы приложения. Например, HR-менеджер может создать опрос для оценки удовлетворенности сотрудников: добавить вопросы, варианты ответов и условия для подсчета результатов. Впоследствии он может изменить опрос, если потребуется его актуализация.
Команда разработки усовершенствовала алгоритмы для работы с динамическими объектами, добавив поддержку основных CRUD-операций (создание, чтение, обновление и удаление). Теперь пользователи смогут создавать объекты и настраивать их под свои потребности, что добавиляет гибкости в приложение.
3. История изменений для всех динамических объектов
После внедрения динамических объектов, каждый из них может быть изменен пользователем. Чтобы отслеживать изменения и понимать, кто и когда вносил правки, мы добавили систему ведения «истории изменений» для всех динамических объектов. Теперь приложение фиксирует каждое изменение и позволяет пользователю или администратору просматривать, кто сделал изменение и когда.
Это улучшило управление данными и обеспечило дополнительную безопасность, так как всегда можно увидеть, какие изменения были внесены в объекты и кто за них ответственен.
Разработка промежуточного модуля «Кошелек» сделала систему более гибкой, а переход от статических объектов к динамическим открыл новые возможности для пользователей. Также введение истории изменений повысило контроль над данными, обеспечив более прозрачное управление.
.net, postgresql, rabbitMq, docker