Техническое задание: Мини-CRM система на Django
Цель проекта
Разработать легковесную, но функциональную CRM-систему для базового управления продажами и клиентами с возможностью последующего расширения функционала.
Основные функциональные требования
1. Управление данными
- Реализовать три основные сущности:
- Lead (Лид) - потенциальный клиент/контакт.
- Deal (Сделка) - коммерческое предложение или этап продажи.
- Company (Компания) - организация-клиент.
- Для каждой сущности предусмотреть стандартный CRUD (создание, чтение, обновление, удаление).
- Обеспечить связи между сущностями (например, лид относится к компании, сделка привязана к лиду).
2. Система ролей и прав доступа
- Реализовать две базовые роли пользователей:
- Manager (Менеджер) - полный доступ на создание, редактирование и удаление записей.
- Viewer (Наблюдатель) - доступ только на просмотр данных без возможности изменений.
3. Уведомления
- Настроить отправку email-уведомлений при изменении статуса у сущностей (Lead/Deal).
- Отправку писем реализовать через очередь задач (например, Celery + Redis) для асинхронной обработки и избежания блокировки интерфейса.
4. Документация API
- Интегрировать Swagger (DRF Spectacular или аналоги) для автоматической генерации интерактивной документации по API.
5. Технические аспекты
- Проект должен быть написан на Django и Django REST Framework.
- Код должен быть чистым, документированным и готовым к масштабированию.
- Предоставить инструкцию по развертыванию (например, в Docker).