Кабинет клиента
Личный кабинет покупателя автомобиля: параметры подбора, предложения от менеджера и поставщиков, решение по осмотру/покупке, статус доставки. Отдельный UI (/cabinet, layout client), API — модуль ClientCabinet.
Цель
Дать клиенту единое место, где он:
- видит, что ищут (параметры подбора);
- получает предложения (менеджер + ответы поставщиков);
- принимает / отклоняет предложения;
- после осмотра решает покупать или нет;
- после одобрения покупки видит статус доставки.
Менеджер/директор работают с теми же данными со стороны CRM (/dashboard/clients).
Связь с ролями
| Роль | Доступ |
|---|---|
| client | Только свой кабинет /cabinet, маркет /cabinet/market. Право view_client_cabinet. |
| manager | «Мои клиенты», карточка клиента, параметры подбора, отправка предложений, осмотр, статус доставки. |
| director / admin / superadmin | Все клиенты + то же управление; invite с правом create_client_invite. |
Как клиент попадает в кабинет
- Менеджер создаёт приглашение (
POST /invite, TTL ~7 дней). - Клиент получает email со ссылкой
/client/invite?token=…. - На странице задаёт пароль → аккаунт активируется → вход в
/cabinet. - Приглашение может быть связано с
amo_lead_id— параметры подбора подтягиваются из сделки AmoCRM.
Пока аккаунт не активирован (status ≠ 1) — экран «Аккаунт недоступен».
Навигация клиента
| Раздел | URL | Назначение |
|---|---|---|
| Кабинет | /cabinet | Подбор, предложения, выбранное авто, доставка |
| Маркет | /cabinet/market | Каталог авто (только просмотр / реакция на ответы поставщиков) |
| Карточка предложения | /cabinet/offers/{id} | Детали предложения менеджера |
| Карточка маркета | /cabinet/market/{id} | Детали авто из маркета / ответа поставщика |
Шапка: логотип, ФИО, «Кабинет» / «Маркет», колокольчик уведомлений, выход.
Главный экран /cabinet
До выбора авто
- Параметры подбора — марка/модель, год, пробег, ДВС, привод, бюджет, комментарий, опции и т.п.
- Карточка менеджера — имя, телефон, Telegram / WhatsApp.
- Таблица предложений — от менеджера и от поставщиков:
- фото, марка/модель, VIN, год, пробег, ДВС, привод, комплектация, цена, статус;
- клик → детальная карточка.
Источники предложений:
manager—client_vehicle_offers;supplier— ответы поставщиков на запрос подбора.
После «одобрено к осмотру» / выбранного авто
Показывается выбранное ТС (принятое предложение), пока нет финального «одобрено к покупке».
После одобрения покупки
- Карточка выбранного авто + статус доставки.
- История статусов.
- Карта трекинга (заглушка/виджет).
- Список «новых» предложений скрывается.
- Архив предложений — отдельная модалка.
Уведомления — баннер непрочитанных на главной.
Предложение менеджера
Статусы предложения (client_vehicle_offers)
| Статус | Смысл |
|---|---|
draft | Черновик у менеджера (ещё не отправлено) |
new | Отправлено клиенту, ждёт решения |
accepted | Клиент одобрил → можно делать осмотр |
rejected | Клиент отклонил (с причиной) |
review | На рассмотрении (промежуточный) |
Действия клиента по предложению
- Открыть карточку → фото, PDF комплектации, параметры, цена, менеджер.
- Принять / Отклонить (причина обязательна при отказе) / задать вопрос менеджеру.
- Доступно только при
status = new(canRespond).
Действия менеджера
- Создать draft → медиа / PDF опций → отправить клиенту (email + статус
new). - После accept клиента — провести осмотр (черновик → submit).
- Клиент видит результат осмотра и принимает решение.
Осмотр и решение о покупке
Статусы осмотра (client_vehicle_offer_inspections)
| Статус | Смысл |
|---|---|
draft | Менеджер заполняет |
submitted | Отправлен клиенту («Осмотр проведен») |
purchase_approved | Клиент одобрил покупку |
purchase_rejected | Клиент отказался от покупки |
Сценарий
- Клиент принял предложение → менеджеру уведомление / email.
- Менеджер заполняет осмотр и отправляет клиенту.
- Клиент: одобрить покупку или отклонить (с комментарием).
- При одобрении:
- статус покупки фиксируется;
- инициализируется воронка доставки;
- в AmoCRM уходит статус «одобрено к покупке» (настраиваемый
amo_status_id); - менеджеру — уведомление и письмо.
Воронка доставки (после покупки)
Конфиг delivery_funnel_statuses (синхрон с AmoCRM):
- Одобрено к покупке
- Ожидание оплаты
- Оплата получена
- Авто в пути
- Таможенное оформление
- Автомобиль передан клиенту
Менеджер меняет статус вручную (PUT .../delivery-status).
Клиент видит текущий статус и историю.
Смена статуса пишется в client_vehicle_delivery_status_history.
Маркет клиента
/cabinet/market — витрина актуальных авто:
- фильтры: марка/модель, год, пробег;
- только просмотр (без редактирования карточки);
- карточка
/cabinet/market/{id}; - для ответов поставщиков — accept / reject (как по предложению).
Сторона менеджера (CRM)
| Экран | Что делает |
|---|---|
/dashboard/clients | Список клиентов (свои / все), поиск, предупреждение «нет параметров подбора» |
| Карточка клиента | Дашборд как у клиента + редактирование подбора, отправка офферов, осмотр, доставка |
| Invite | Создание клиента по email/телефону + письмо |
Уведомления менеджеру:
- клиент принял предложение;
- нужены параметры подбора;
- решение по покупке;
- (и связанные типы в
client_cabinet_notifications).
Бейдж в меню CRM — счётчик непрочитанных по client-cabinet.
Уведомления
Типы:
offer_acceptedinspection_submittedpurchase_approved/purchase_rejectedselection_params_required
Клиент: баннер + колокольчик.
Менеджер: баннер на списке клиентов + меню.
Плюс email-письма (invite, оффер, осмотр, решения).
Данные (кратко)
| Сущность | Назначение |
|---|---|
client_cabinet_invites | Приглашения, токен, TTL, amo_lead_id |
client_vehicle_selections | Параметры подбора |
client_vehicle_offers | Предложения менеджера + медиа/PDF |
client_vehicle_offer_inspections | Результат осмотра и решение о покупке |
client_vehicle_delivery_status_history | История доставки |
client_cabinet_notifications | In-app уведомления |
Связь с поставщиками — через supplier request / responses, попадающие в дашборд клиента как supplierResponses.
Интеграции
- AmoCRM: поля сделки → параметры подбора; статусы сделки при одобрении покупки и доставке.
- Email: invite, оффер, осмотр, решения.
- Поставщики / маркет: предложения и витрина в кабинете клиента.
Типовые сценарии
Новый клиент
Invite → пароль → кабинет → видит подбор и менеджера → ждёт предложения.
Предложение менеджера
Менеджер шлёт оффер → клиент принимает → осмотр → клиент одобряет покупку → статусы доставки.
Отказ
Клиент отклоняет оффер или покупку с причиной → менеджеру уведомление.
Поставщик
Ответ на запрос → в таблице предложений клиента → accept/reject → при accept дальше логика сделки/осмотра по правилам системы.
Маркет
Клиент смотрит каталог, открывает авто, при необходимости реагирует на предложение поставщика.