О проекте
Торговая компания с большим штатом менеджеров по продажам и закупкам столкнулась с проблемой неэффективной коммуникации между отделами. Запросы на подбор товаров и получение цен велись через email, мессенджеры и устные договоренности, что приводило к потере информации, дублированию работы и задержкам в обработке заказов клиентов.
Основные проблемы:
- Запросы терялись в почтовых цепочках
- Невозможно отследить статус запроса
- Отсутствие истории коммуникаций
- Сложность работы с множественными предложениями от разных поставщиков
- Нет единой базы для аналитики и отчетности
- Задержки в ответах на запросы клиентов
Нам нужно было создать единую систему, где весь процесс от запроса до получения цен будет прозрачным, структурированным и автоматизированным.
ЧТО МЫ СДЕЛАЛИ
Архитектура и разработка
- Разработали веб-портал на Django с нуля
- Создали масштабируемую архитектуру для работы с большим количеством пользователей
- Спроектировали гибкую базу данных PostgreSQL
- Реализовали REST API для возможных будущих интеграций
- Настроили безопасность и разграничение доступа
Функционал для отдела продаж
Создание запросов
- Простая форма создания нового запроса цены
- Возможность добавления неограниченного количества товаров в один запрос
- Указание необходимого количества каждого товара
- Поле для указания желаемых сроков поставки
- Уровень приоритетности запроса (низкий, средний, высокий, срочный)
- Прикрепление файлов (спецификации, чертежи, фото)
Работа с запросами
- Просмотр всех своих запросов с фильтрами и сортировками
- Отслеживание статуса каждого запроса в реальном времени
- Получение уведомлений о новых ответах от закупок
- Возможность редактировать запрос до начала обработки
- Комментирование и уточнение деталей с закупщиками
Анализ предложений
- Просмотр всех полученных предложений от закупщиков
- Сравнение цен от разных поставщиков в одной таблице
- Информация об условиях поставки, сроках, минимальных партиях
- Выбор оптимального предложения
- Возможность запросить пересмотр цены
Функционал для отдела закупок
Обработка запросов
- Получение новых запросов от менеджеров по продажам
- Приоритизация запросов по срочности
- Назначение ответственных закупщиков
- Постановка внутренних задач по запросу
Предоставление цен и условий
- Добавление множественных предложений на один товар от разных поставщиков
- Указание цены, условий оплаты, сроков поставки
- Информация о минимальной партии
- Наличие товара на складе поставщика
- Комментарии и особые условия
- Прикрепление прайс-листов и документов поставщиков
Управление статусами
- Изменение статуса запроса на каждом этапе
- Указание причин отказа или невозможности поставки
- Предложение альтернативных товаров-аналогов
- Уведомления менеджера о готовности предложения
Система множественных предложений
Гибкость в работе с ценами:
- Один товар может иметь несколько предложений от разных поставщиков
- Каждое предложение содержит полную информацию:
- Название поставщика
- Цена за единицу
- Минимальная партия
- Срок поставки
- Условия оплаты (предоплата, отсрочка)
- Наличие на складе
- Дополнительные условия
Сравнительный анализ:
- Автоматическая таблица сравнения всех предложений
- Выделение лучших условий по каждому параметру
- Расчет итоговой стоимости с учетом доставки
- Визуальные индикаторы оптимальных предложений
Коммуникация и документы
Система комментариев
- Обмен комментариями по каждому запросу
- Уведомления о новых комментариях
- История всех обсуждений
- Возможность упоминания коллег (@mention)
- Цепочка переписки привязана к конкретному запросу
Работа с файлами
- Прикрепление файлов к запросам
- Загрузка документов от поставщиков
- Прайс-листы, спецификации, сертификаты
- Автоматическая организация файлов по запросам
- Версионность документов
Причины отказа
- Структурированный выбор причины отказа
- Стандартные причины: товар снят с производства, превышен бюджет, не подходят сроки
- Возможность добавления произвольного комментария
- Предложение альтернатив при отказе
- Статистика отказов для анализа
Статусы и уведомления
Жизненный цикл запроса:
- Новый запрос
- В обработке
- Ожидание ответа поставщика
- Предложения получены
- На согласовании
- Утвержден
- Отклонен
- Закрыт
Система уведомлений:
- Email-уведомления о важных событиях
- Внутренние уведомления в портале
- Напоминания о просроченных запросах
- Уведомления о новых комментариях
- Настройка частоты и типов уведомлений
Аналитика и отчетность
Для руководства:
- Количество обработанных запросов за период
- Среднее время обработки запроса
- Топ-менеджеров по количеству запросов
- Статистика отказов и их причины
- Анализ загруженности закупщиков
- Сравнение цен от разных поставщиков
Для менеджеров:
- Личная статистика запросов
- История работы с каждым товаром
- Динамика цен поставщиков
- Эффективность закупок
Интерфейс и UX
- Интуитивно понятный интерфейс
- Адаптивный дизайн для работы с планшетов
- Быстрые фильтры и поиск
- Цветовая индикация статусов
- Keyboard shortcuts для опытных пользователей
- Экспорт данных в Excel
РЕЗУЛЬТАТЫ
- Создана единая система взаимодействия отделов продаж и закупок
- Время обработки запроса сократилось с 2-3 дней до 4-6 часов
- Исключены потерянные запросы — 100% прозрачность
- Увеличение скорости ответа клиентам на 70%
- Возможность сравнения множественных предложений экономит 15-20% на закупках
- Полная история коммуникаций для аудита и анализа
- Снижение нагрузки на почту и мессенджеры
- Автоматизация 85% рутинных операций при согласовании цен
- База знаний по ценам поставщиков накапливается в системе
- Упрощение обучения новых сотрудников благодаря структурированности процессов
ТЕХНОЛОГИИ
Backend: Django 5.x, Python 3.x, Django REST Framework
Database: PostgreSQL
Frontend: HTML5, CSS3, JavaScript, jQuery, Bootstrap
Файлы: Django File Storage, AWS S3
Уведомления: Celery, Redis, Email
Безопасность: Django Security Middleware, HTTPS, JWT
Деплой: Docker, Nginx, Gunicorn
СРОК РЕАЛИЗАЦИИ
2 месяца — от проектирования архитектуры до полного запуска с обучением пользователей
Постоянная техническая поддержка и добавление нового функционала по запросам
ОСОБЕННОСТИ ПРОЕКТА
Главная сложность проекта заключалась в необходимости создать гибкую систему работы с множественными предложениями. В отличие от стандартных запросов цен, где один товар = одна цена, здесь нужно было реализовать возможность получения нескольких предложений от разных поставщиков на каждую позицию.
Уникальные решения:
Динамическая форма запроса
Менеджер может добавлять неограниченное количество товаров в один запрос через удобный интерфейс. Это реализовано через Django Formsets с динамическим добавлением полей через JavaScript. Форма валидируется на стороне сервера и клиента.
Матричная структура предложений
Разработали систему, где один товар в запросе может иметь несколько связанных предложений. База данных спроектирована так, чтобы эффективно хранить и извлекать эти данные, а интерфейс представляет их в виде удобной сравнительной таблицы.
Система статусов и прав
Реализован сложный workflow с различными правами для продаж и закупок. Менеджеры по продажам могут только создавать запросы и просматривать ответы, закупщики — только обрабатывать запросы и давать цены. При этом обе стороны могут комментировать запросы.
Производительность
Система оптимизирована для работы с большим количеством данных. Используются select_related и prefetch_related для оптимизации запросов к базе, кэширование часто используемых данных, пагинация больших списков.
Масштабируемость
Архитектура позволяет легко масштабировать систему при росте количества пользователей и запросов. Django + PostgreSQL + Redis обеспечивают необходимую производительность.
Портал стал центральной системой для взаимодействия отделов и значительно ускорил процесс согласования цен, что напрямую повлияло на скорость обработки заказов клиентов и конкурентоспособность компании.