Задача
Разработать модуль хранения документов для внутренней самописной CRM клиента
Характеристики проекта
Длительность - 5 месяцев
Команда - 3 человека
Технологии - Django, Vue.js
Особенности проекта
Мы выполняли этот проект совместно с нашим партнером - агенством kokoc.tech. Мы отвечали за backend, а коллеги за frontend и менеджмент проекта. В этом кейсе мы разберем только backend часть.
Решение
Независимый, но связанный
Перед нами стояла задача создать автономный сервис, который хранил бы в себе все данные, относящиеся к документам, и предоставлял из коробки полный набор инструментов для управления документами. Для такой задачи идеально подходил Django - он позволяет быстро построить нужную базу данных и при этом предоставляет отличную административную панель для управления файлами.
Мы создали отдельный сервис, но плотно интегрировали его в существующую экосистему - сделали внешнюю аутентификацию через бэкенд клиента, сделали много фильтров, работающих через апи, внедрили внутрь проекта внешнюю систему прав.
Чтобы обеспечить быструю работу с “родительскими” сервисами, мы по максимуму оптимизировали запросы к основу бэкенду - большая часть данных кэшировалась через Redis.
Сами файлы хранятся на приватном облачном хранилище Яндекс Облако. Подключить его было очень просто, так как в нем используется всем привычный протокол s3.
Необычная бизнес логика
Документы внутри системы 5 разных типов - каждый со своей бизнес-логикой. Самое сложное в них - уникальная система нумерации документов для каждого типа. В некоторых случаях номера могут дублироваться, сбрасываться раз в год или заранее бронироваться.
Все что попало в систему не пропадает из нее. Удаленные файлы исчезают из интерфейса CRM, но остаются в S3 хранилище. А запись об удалении сохраняется в админ панели
Внедрение
До создания модуля документы заносились в 1С битрикс. Для запуска в продакшн мы сделали несколько скриптов, которые позволяют перенести документы из битрикса в микросервис. Во время передачи проекта мы подготовили для клиента подробные инструкции как правильно импортировать старые документы.
Чтобы в будущем было легко взаимодействовать с сервисом мы подготовили документацию в swagger. Она отображает 100% возможностей сервиса - все параметры фильтрации, авторизацию, параметры сортировки и т.д.
При этом документация выполнена в автоматическом режиме, что обеспечивает гарантию ее актуальности.
Результаты
Мы успешно сдали проект, прошли несколько итераций правок в бизнес логику и теперь занимаемся долгосрочным развитием crm системы. Надеемся еще поработать над совместными проектами вместе c kokoc.tech.