Дополнительные модули¶
Сервисные подсистемы, добавленные в ходе доработок.
Кастомные уведомления¶
Посредник создаёт уведомления для своих клиентов (баннеры в кабинете); администратор СРМ — глобальные.
custom_notifications:agent_id?(NULL — глобальное от СРМ),active,audience(clients/…),display_method(header/…),name?(внутреннее),text,detail_text?(«Подробнее»),start_at/end_at(период показа),dismissible.- Управление: посредник —
Agent/Notifications(/agent/notifications, CRUD); админ — FilamentCustomNotificationResource. - Показ — компонент
NotificationsDisplay.vue; сервисNotificationService.
Заметки сотрудников¶
Внутренние заметки (личные и привязанные к объектам) для команды посредника — клиент их не видит.
notes:agent_id?,staff_id?(владелец личной / последний редактор),notable_type(order/item/group/shipment/delivery/client/personal),notable_id,body. Уникальность поagent_id + notable_type + notable_id.- Маршруты:
notes/personal(личный блокнот),notes/{type}/{id}(заметка к объекту). UI:StaffNotepad.vue,NoteIcon.vue. СервисNotesService.
Онбординг-визард посредника¶
Пошаговый мастер первичной настройки после регистрации посредника.
- Поля в
agents:home_country_id(домашняя страна),work_country_ids(json — страны работы),onboarding(json — состояние мастера). Страны берутся из отдельного справочникаagent_countries(name,flag,currency_code). - Шаги (
OnboardingController): страны → валюты → поддомен → сотрудники → логотип → завершение. UI:OnboardingWizard.vue. - Дополняет стартовый чек-лист «Первые шаги» (см. Дорожная карта).
Переключение кабинетов¶
Один пользователь (User) может состоять в нескольких клиентах/посредниках. Переключение активного кабинета — без повторного входа.
POST /switch(AccountSwitchController), сервисCabinetService. UI:CabinetSwitcher.vue.- Связано с тем, что
client_memberships.user_idстал nullable (приглашённый сотрудник до привязки).
Аватары¶
У users и agent_staff добавлено поле avatar. Загрузка — на странице профиля (profile/avatar), и у клиента, и у посредника.
Сканер¶
GET /agent/scan (ScanController::resolve) — разрешение отсканированного кода (товар/заказ/ячейка) для быстрого перехода. Дополняет печать этикеток на консолидации.
Категории товаров¶
product_categories (agent_id? — системная/своя, name, sort, active) + order_items.product_category. Системные категории (одежда/обувь/стройматериалы и пр.) засеяны; посредник может добавить свои.
Тикеты обратной связи¶
Кнопка обратной связи у посредника и клиента: пользователь выделяет проблемный элемент, оставляет комментарий — формируется тикет со скриншотом (html2canvas), пометкой элемента и контекстом страницы (url/route/компонент/viewport/locale).
- Таблица
feedback_tickets(см. Справочник). - Комментарий автоматически переводится на RU (
comment_ru) — автор может писать на CN/EN. - Обработка в админке (Filament): категория, приоритет, ответственный админ, внутренняя заметка, ответ автору (уходит ему в мессенджер), отметка «решено» с уведомлением.
Фавиконы площадок¶
site_favicons (domain unique, path, ok, fetched_at) — кэш иконок сайтов товаров (фавикон-прокси), чтобы не дёргать внешние источники на каждый показ.
Глобальные настройки приложения¶
app_settings: простой key-value стор (keyunique,value). Управление — FilamentAppSettingsPage(раздел СРМ).