Кабинет поставщика
Цель
Дать поставщику возможность:
- пройти аккредитацию (документы → проверка директором);
- видеть запросы по параметрам подбора клиентов;
- отвечать на запросы (авто из маркета или новое предложение);
- вести свои авто в маркете (добавление, цена, фото, PDF комплектации).
Связка с кабинетом клиента: ответы поставщика попадают в предложения клиента; клиент может принять/отклонить.
Кто что может
| Роль | Доступ |
|---|---|
| supplier | Полный кабинет: home, аккредитация, запросы, маркет (после approval). |
agent_import (legacy seller_agent) | Аккредитация не нужна (считается сразу «аккредитован»). Home → сразу /dashboard/market. Запросы доступны. Страница аккредитации закрыта. |
| director / superadmin | Аккредитация поставщиков (manage_supplier_accreditation), просмотр документов, approve/reject. |
Home path:
supplier→/dashboard/supplieragent_import→/dashboard/market
Права (основные)
| Permission | Назначение |
|---|---|
view_supplier_cabinet | Профиль / кабинет |
upload_supplier_documents | Загрузка документов + submit на проверку |
view_supplier_requests | Список и карточка запросов |
respond_supplier_request | Ответ на запрос |
create_inspection / save_inspection_step / … | Работа с авто маркета |
manage_supplier_accreditation | Approve/reject (директор) |
Для полного поставщика часть прав требует аккредитации (permissions_requiring_accreditation): маркет, ответ на запрос, создание/редактирование inspection и т.д. Без approval middleware отдаёт 403 «Supplier accreditation required».
У agent_import доступ к маркету/ответам без аккредитации.
Навигация
Layout supplier (тёмно-зелёная шапка):
| Пункт | URL | Условие |
|---|---|---|
| Маркет | /dashboard/market | Только после аккредитации (или agent_import) |
| Запросы | /dashboard/supplier/requests | supplier / agent_import |
| (Home) | /dashboard/supplier | Статус аккредитации, CTA |
| Аккредитация | /dashboard/supplier/accreditation | Только supplier |
Также: переключатель языка (RU/EN/ZH), уведомления, настройки профиля, выход.
Маркет открывается уже в layouts/dashboard.vue, но с ограничениями UI для роли поставщика (без менеджерских инструментов).
Аккредитация (только supplier)
Статусы профиля (supplier_profiles)
| Статус | Смысл |
|---|---|
pending | Ожидает загрузки / повторной загрузки документов |
submitted | На проверке у директора |
approved | Аккредитован → открыт маркет и ответы |
rejected | Отклонён (есть reviewComment) → можно загрузить документы снова |
Сценарий поставщика
- Вход → home: предупреждение, что нужен аккредитация.
- «Запросы» уже можно смотреть.
/dashboard/supplier/accreditation→ загрузка PDF/JPG/PNG/HEIC/DOC → «Отправить на рассмотрение».- Ожидание решения.
- Approve → доступны Маркет и «Ответить».
- Reject → комментарий + повторная подача.
Сторона директора
Approve/reject + просмотр документов. Уведомления CRM: подача, одобрение, отклонение.
Регион поставщика
В профиле: korea / china / europe / kyr — влияет на валюту/логику цен в формах предложения.
6. Запросы на подбор
Источник запросов — client_vehicle_selections клиентов (параметры подбора).
Список /dashboard/supplier/requests
Таблица:
- дата;
- ответственный менеджер (имя, телефон);
- параметры подбора;
- статус ответа поставщика.
Без аккредитации: просмотр + ссылка «Пройти аккредитацию», ответить нельзя.
Карточка /dashboard/supplier/requests/{id}
- параметры подбора (карточка selection);
- менеджер клиента;
- кнопка Ответить (если можно);
- таблица своих предложений по этому запросу.
Статусы запроса (с точки зрения поставщика)
| Состояние | Смысл |
|---|---|
| Активный | Ещё нет ответа |
| Ответ отправлен / Предложений: N | Есть ответы, ждём клиента |
| одобрено | Клиент принял ответ |
| Отклонено | Клиент отклонил |
| Неактуально | Ответ устарел (is_outdated) |
| Подобран / Одобрено клиентом | Selection уже закрыт чужим/общим принятием |
Можно отправлять несколько ответов на один запрос.
Отвечать нельзя, если selection уже «подобран» / принят клиентом, или свой ответ outdated / уже с решением клиента.
Ответ на запрос
Модалка «Ответ на запрос» — два режима:
Из маркета
Выбор своего авто «в продаже» из маркета + комментарий → создаётся supplier_request_responses со связью inspection_id.
Новое предложение
Форма SupplierVehicleOfferForm:
- марка/модель, год, пробег, ДВС, привод, VIN, цена/валюта, опции, фото, PDF комплектации и т.д.;
- создаётся draft inspection в маркете → finalize → ответ на запрос.
Ответ уходит в кабинет клиента как предложение sourceType: supplier.
Решение клиента по ответу
Поля ответа:
client_status:accepted/rejected;client_comment,client_responded_at.
Если авто продано / снято с маркета — ответ помечается is_outdated (sold / removed).
Маркет для поставщика
После аккредитации (или сразу для agent_import):
| Действие | Описание |
|---|---|
| Список маркета | Свои/доступные авто, фильтры |
| Добавить автомобиль | Draft → фото/PDF → публикация |
| Карточка авто | Просмотр, правка цены, медиа |
| Ответ из маркета | Выбор авто при ответе на запрос |
Многоязычность
Для кабинетов поставщика и агента:
- языки RU / EN / ZH;
- селектор в шапке;
- словари +
t()для shell, home, аккредитации, запросов, части маркета.
Корейский убран из селектора. Язык в localStorage (cabinet_locale).
Данные (кратко)
| Сущность | Назначение |
|---|---|
supplier_profiles | Статус аккредитации, регион, даты review |
supplier_documents | Файлы аккредитации |
supplier_request_responses | Ответы на selection клиента |
| Inspections / market photos | Авто в маркете, к которым цепляются ответы |
Запросы не отдельная таблица «supplier_requests» в смысле UI — это клиентские client_vehicle_selections, видимые поставщику.
API (основные)
Префикс /api/v1/supplier-cabinet:
GET /profile,POST /documents,POST /accreditation/submitGET /requests,GET /requests/{selectionId},POST /requests/{selectionId}/respondGET /market-vehicles/for-responsePOST /market-vehicles/draft, finalize, photos, options-pdf, price
Типовые сценарии
Новый поставщик
Создан в Settings → вход → видит home и запросы (read-only) → загружает документы → директор approve → открываются Маркет и ответы.
Ответ на запрос
Запросы → карточка → «Ответить» → выбрать авто из маркета или создать новое → клиент видит предложение → accept/reject.
Agent import
Сразу маркет + запросы, без аккредитации; home /dashboard/supplier редиректит в маркет.
Отклонение аккредитации
Директор reject + комментарий → поставщик правит документы → submit снова.
Авто продано
Связанные ответы становятся outdated → в UI «Неактуально».