Не нужно переписывать систему с нуля, только доработать!
Ищу адекватного программиста для постоянного сотрудничества. За данное доработку CRM ГОТОВ заплатить до 5000 + бонусы за качественно выполненную работу. Делайте ставки, выберу по опыту вашей работы, ну и, конечно, по более низкой сумме от предложенной мной цены.
Текущая техническая база:
- Админка: React + Vite + Tailwind SPA в папке admin/
- API / бэкенд: Node.js + Express
- База данных: SQLite через better-sqlite3
Главная задача:
добавить понятную логику работы с лидами, сделками, менеджерами, Zoom / звонками, платежами, подтверждением платежей админом и автоматическим расчетом баланса менеджеров.
Технические требования
Чтобы система работала стабильно, реализовать через бэкенд и БД без тяжелых решений.
- База данных
Создать отдельную таблицу deals для сделок, связанную с заявкой через lead_id / request_id. - Индексы
Добавить индексы на поля, по которым будут фильтры: менеджеры, статусы, дата создания, дата Zoom / звонка. - История изменений
Сохранять, кто и когда изменял статус сделки, оплату или финансовые данные. - Просрочки
Не делать тяжелые cron-задачи. Просрочки типа “заявка без сделки больше 2 часов” считать через timestamp при выборке данных. - Подтверждение оплат
Менеджер может поставить статус “Предоплата внесена” или “Полная оплата внесена”, но подтвердить оплату может только админ. - Начисления
В статистику, баланс и начисления должны попадать только оплаты, подтвержденные админом. - Защита от дублирования
Не позволять создавать дубликат сделки по одной заявке, дубликат подтверждения одной оплаты или дубликат начисления по одной оплате. - Предоплата и доплата
Если клиент сначала внес предоплату, а затем доплатил остаток, это должны быть два отдельных финансовых события. - Права доступа
Права проверять на бэкенде: только админ может подтверждать оплату, изменять %, добавлять выплаты и видеть все финансовые данные. - Главный принцип
Источником правды для аналитики, балансов и начислений является только оплата, подтвержденная админом.
ЗАДАНИЕ
1. Текущая логика CRM
Сейчас в CRM уже есть разделы:
- Обзор
- Заявки
- Менеджеры
- Настройки
Нужно добавить новый раздел:
Финальная структура меню:
- Обзор
- Заявки
- Сделки
- Менеджеры
- Настройки
2. Раздел “Заявки”
Раздел “Заявки” — это все лиды, которые оставили форму заявки на сайте.
Заявка не является сделкой автоматически.
Логика:
Заявка с сайта → менеджер связался с лидом → договорились о Zoom / звонке → создается сделка
В таблице заявок нужно добавить кнопку:
“Создать сделку”
Если по заявке уже создана активная сделка, вместо кнопки “Создать сделку” показывать:
“Открыть сделку”
По одной заявке может быть только одна активная сделка.
Не позволять создавать дубликат сделки по одной и той же заявке.
3. Статусы заявки
В разделе “Заявки” добавить поле:
“Статус заявки”
Варианты статуса заявки:
- Ожидаю ответа
- Создана сделка
- Не вышел на связь
- Отказ
Если из заявки создана сделка, статус заявки автоматически изменяется на “Создана сделка”.
4. Разделение менеджеров
В CRM нужно разделить два типа менеджеров:
- Трафик-менеджер
- Менеджер по продажам
Трафик-менеджер
Это человек, через чье уникальное ссылку пришла заявка на сайт.
Он используется в разделе “Заявки”.
Поле в заявке должно называться:
“Трафик-менеджер”
Менеджер по продажам
Это человек, который проводит Zoom / звонок, ведет коммуникацию с клиентом и закрывает сделку.
Он используется в разделе “Сделки”.
Поле в сделке должно называться:
“Ответственный менеджер по продажам”
Отдельно в сделке должно быть поле:
“Менеджер по продажам, который закрыл сделку”
Именно это поле используется для аналитики продаж и начисления баланса менеджеру.
Важно:
трафик-менеджер из заявки не должен автоматически становиться менеджером по продажам в сделке.
5. Раздел “Сделки”
Добавить новый раздел:
“Сделки”
Форма создания сделки
При создании сделки должны быть поля:
- Имя лида
- Контакт лида
- ID заявки
- Ответственный менеджер по продажам
- Дата Zoom / звонка
- Время Zoom / звонка
- Статус сделки
- Тариф
- Комментарий менеджера
- Дата следующего контакта
Логика создания сделки из заявки
Сделка создается только вручную из раздела “Заявки”.
В разделе “Заявки” рядом с каждой заявкой должна быть кнопка “Создать сделку”.
Менеджер создает сделку только после того, как связался с лидом и лид подтвердил дату и время Zoom / звонка.
Сделка не создается автоматически после поступления заявки.
После нажатия “Создать сделку” открывается форма создания сделки, где менеджер указывает ответственного менеджера
по продажам, дату Zoom / звонка, время Zoom / звонка, статус сделки, тариф и комментарий.
После создания сделки заявка получает статус “Создана сделка”, а рядом с заявкой вместо кнопки “Создать сделку” должна показываться кнопка
“Открыть сделку”. По одной заявке может быть только одна активная сделка. Не позволять создавать дубликат сделки по одной и той же заявке.
ПРОСМОТРЕТЬ ПОЛНОСТЬЮ ТЗ МОЖНО В ГУГЛ ДОКУМЕНТЕ
https://docs.google.com/document/d/1XX6daB1__MplFfQDwjV7w9-6DlUznEwSln7ao8i_9BM/edit?usp=sharing