Разработка модуля CMS для стриминговой платформы
Осенью 2022 года клиент обратился к нам за расширением системы управления контента (CMS). Клиент заказал разработку «под ключ» – полный цикл создания ПО: управление, аналитику, разработку и тестирование.
Задача
1) Добавить в CMS раздел для финансистов. Разрабатываемый сервис должен позволять:
- Вносить необходимую информацию по договорам и их типам, контенту.
- Рассчитывать по различным типам договоров: прогноз по амортизации, график платежей, кредиторскую задолженность.
- Выгружать различные отчеты в Excel.
Система уже имела часть необходимой функциональности, поэтому в рамках разработки требовалось как создание новых сущностей, так и расширение существующих.
2) Изменить старые стили приложения в соответствии с новыми требованиями дизайна.
Решение
Аналитика и составление ТЗ
При проработке технического решения нам нужно было предусмотреть несколько моментов:
- разобрать логику, заложенную на более ранних этапах разработки;
- пересмотреть бизнес-процессы, затрагиваемые при добавлении новых сущностей;
- отразить видение со стороны бизнеса.
Мы устранили выявленные противоречия в требованиях к существующей CMS и новому модулю, проработали параметры и процесс формирования отчетов, передали ТЗ на ревью QA-специалисту и разработчику. После согласования ТЗ заказчиком наша команда приступила к реализации модуля.
DevOps
- Подготовили стенды на серверах Simbirsoft для develop- и test-окружений.
- Настроили пайплайны CI/CD для автоматизации сборки и доставки кода на стенды окружений.
- Включили в паплайны линтинг. Это статистический анализ кода, он нужен, чтобы обнаруживать узкие места или несоответствия заданному стилю.
Разработка
Процесс разработки состоял из нескольких блоков:
- Доработать текущие модели БД и добавить новые.
- Создать переиспользуемые компоненты и стилизовать уже существующие, чтобы привести внешний вид приложения к единому знаменателю.
- Разработать блок CMS, с помощью которого можно формировать отчеты.
- Для того чтобы уменьшить время обработки отчетов и сделать их быструю выгрузку в режиме реального времени, мы организовали обработку данных на стороне базы, а не на стороне сервера.
- Добавить разделение по ролям с разным уровнем прав.
- Добавить refresh token в авторизацию пользователя. Сделали это, чтобы обеспечить безопасность и удобство пользователей. Обновление токена происходит в фоновом режиме, при этом сотрудник не «вылетает» из системы, когда истекает OAuth token.
Мы регулярно проводили промежуточное демо, чтобы клиент увидел результат, а мы проверили, что попадаем в его ожидания. Если было необходимо, мы вносили корректировки.
Результат
- Добавили в CMS заказчика новый раздел, необходимый для планирования и анализа финансовых показателей.
- Добавили новые стили в соответствии с дизайном проекта.
- Заменили устаревший и удалили неиспользуемый код. Код проекта стал чище и понятнее.
- Реализовали ролевую модель, теперь сотрудники имеют разные возможности по взаимодействию с системой в соответствии с уровнем доступа.
Технологии
Frontend: Nuxt (SPA), Vue 2, Nuxt, Vuex
Backend: Python 3.6, Django REST framework, Django ORM, PostgreSQL, RabbitMQ, Redis, Sphinx, Celery, Gunicorn, NGINX
DevOps: GitLab CI, Docker, Ansible, PostgreSQL