feat(web-api): галерея изображений товара (images[]) - #598
Conversation
Add include_images on product/get so Nuxt can render a slider from ordered active files without mgr processors or leaking file internals.
Nuxt PDP/PLP need a dedicated gallery URL, a capped list payload, and the same thumbnail size as mgr GetList without a second media-source hit.
|
Влил #597 (facets) — этот PR теперь конфликтует с Конфликтуют 6 файлов — почти везде обычный union (обе стороны добавляют своё):
Вопрос по публичным роутам. В этом PR ты меняешь точечные записи на широкий префикс: '/api/v1/product/', // вместо '/api/v1/product/filters' и т.п.Матчинг идёт через Понимаю, откуда взялось: Остальное по P1 идёт хорошо: #595 (journey suite) и #597 (facets) влиты, |
Описание
GET /api/v1/product/get/{id}?include_images=1добавляет в карточку товараimages[]: упорядоченные active originals (parent_id=0,type=image),url/thumb,thumbs(map размеров),name/description, derivedalt(name, иначе pagetitle),is_previewчерезProductImageService::resolvePreviewFileId.Без флага ключа
imagesнет. С флагом и без файлов —images: []. Корневыеimage/thumbне трогаются.product/list?include_images=1подмешивает тот же массив (cap 10 файлов на товар, один batch на страницу).GET /api/v1/product/{id}/imagesотдаёт только{ images }с той же сериализацией. Невидимый товар — 404.thumbберёт child с папкойms3_product_thumbnail_size(как mgr GetListpath LIKE %/{size}/). Если такого размера нет — первый active child по id, иначеurlоригинала.thumbs— все active children, ключ размера из path/url. Media source на hot path не открывается.Allowlist после
modifyFieldsотсекаетhash/path/createdby. Отдельного DB-поляaltнет.Тип изменений
Связанные Issues
Closes #566
Как это было протестировано?
cd core/components/minishop3 php tests/ProductCatalogImagesRoutesTest.php php tests/ProductCatalogServiceTest.php php tests/TokenMiddlewarePublicRoutesTest.php vendor/bin/phpunit tests/Unit/Services/Product/ProductGalleryPublicSerializerTest.php composer ci:php composer stancomposer ci:phpcomposer stanКонфигурация тестирования:
feat/issue-566-product-gallery-imagesЧеклист
Дополнительные заметки
Follow-up: integration-тест unpublished 404 + SQL active filter на живой БД. Выбор thumb по первому ключу media source (mgr GetList, если setting не совпал) по-прежнему не на hot path.