Дополнительные услуги к товарам¶
Подсистема позволяет посреднику оказывать клиенту доп. услуги по конкретным позициям заказа — например, фото/видео товара, обмер, пересчёт — с загрузкой медиа и тарификацией.
Каталог услуг¶
| Таблица | Назначение |
|---|---|
services |
Каталог услуг: code (photo/video/measure/recount), name + name_i18n, icon, media_kind (photo/video/none). agent_id=NULL — системная, иначе своя |
agent_service_settings |
Подключение услуги посредником: enabled, mode (free/paid) |
agent_service_prices |
Цена услуги по валюте заказа (currency + price) |
Управление каталогом услуг — в админке (ServiceResource), подключение и цены — в настройках посредника (вкладка услуг, settings.services).
Услуга на позиции заказа¶
flowchart LR
A[Клиент/посредник заказывает услугу] --> B[order_item_services: ordered]
B --> C[Загрузка медиа: десктоп или /su/токен с телефона]
C --> D[Посредник оказывает: rendered]
B -.отмена.-> E[canceled]
order_item_services— заказанная услуга на позиции:status(ordered/rendered/canceled),qty,free,unit_price+currency(снимок цены),paid_amount,comment,rendered_at/rendered_by,canceled_at.- Действия:
AddItemService/CancelItemService. Тарификация —ItemServiceBilling. Презентация —ItemServicePresenter. - UI:
Components/Orders/{OrderServicesPanel,ItemServicesMenu,ServiceRenderModal}.vueв карточке заказа.
Медиа услуг¶
service_media— файлы услуги: привязка кorder_item_service_idили кorder_item_id(флагextra_photo— «доп. фото» посредника вне услуги);kind(photo/video),path/url,hidden_from_client,uploaded_via(desktop/phone).service_upload_tokens— одноразовые токены публичной загрузки:token, привязка к услуге/позиции,kind,expires_at.
Загрузка с телефона (публичный аплоад)¶
Чтобы сфотографировать товар телефоном, генерируется токен и QR на /su/{token} (вне авторизации):
| Маршрут | Назначение |
|---|---|
GET /su/{token} |
Страница загрузки (по токену) |
GET /su/{token}/list |
Список уже загруженных файлов |
POST /su/{token}/file |
Загрузка файла |
POST /su/{token}/media/{media}/delete |
Удаление файла |
Сервис ServiceMediaService + PublicUploadController. На стороне посредника — ServiceRenderController (оказание услуги, загрузка/скрытие/удаление медиа, «доп. фото» позиции).
Валюта услуги = валюта заказа
Цена услуги фиксируется в валюте заказа на момент заказа (unit_price/currency), что согласуется с мультивалютным расчётом (см. Финансы).