Микросервис recommendation-orchestration

В статье описываются функции, логика работы, конфигурация и методы микросервиса recommendation-orchestration.

Микросервис предоставляет функциональность для для формирования и получения товаров, рекомендованных для покупки, а также событий для генерации рекомендаций.

Доступ к сервису предоставляется по запросу.

Логика работы

В работе микросервиса участвуют следующие сущности:

  • Рекомендация (RecommendationResponse) - содержит информацию о рекомендации (ID рекомендации; список рекомендованных товаров; дата и время генерации рекомендации)
  • Рекомендованные товары (ProductCardResponse) - список рекомендованных товаров и информации о них (артикул/название/медиа/наличие на складе/минимальная стоимость товара)
  • Событие (Tracking) - содержит данные события (ID события; ID категории; артикул товара; ID покупателя; действие, вызывающее событие; бренд и др.)

Аутентификация

Аутентификация пользователя не требуется.

Service context path

/api/recommendation-orchestration/

Настройки и параметры конфигурации

Параметры конфигурации указываются в Vault.

Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.

По умолчанию

{
  "env": {
    "JAVA_XMS": "ХХm",
    "JAVA_XMX": "YYYm",

    "LOGGING_FORMAT": "формат_логирования",
    "LOGGING_LEVEL": "уровень_логирования",
    "SERVER_PORT": "порт_сервера"
  }
}


Copy-icon
Указываемые на каждом отдельном стенде

// пример взят с тестового стенда


{
{
  "env": {
    "AVAILABILITY_URL": "url_доступа_к_сервису_availability",
    "CATALOG_URL": "url_доступа_к_сервису_catalog",
    "ORDER_URL": "url_доступа_к_сервису_order",
    "PRICE_URL": "url_доступа_к_сервису_price",
    "PROMO_URL": "url_доступа_к_сервису_promo",
    "RECOMMENDATION_URL": "url_доступа_к_сервису_recommendation"
  }
}

Copy-icon

Методы микросервиса Copy-icon

Работа с рекомендациями Copy-icon

  • Получение списка рекомендаций для конкретной категории - GET запрос, /v2/recommendations/categories/{categoryId}
Request parameters

categoryId - path-параметр: ID категории, для которой необходимо получить рекомендации
length - query-параметр, необязательный: количество товаров в рекомендациях

Copy-icon
Response sample

{
    "id": "40ff688a-35ec-46b7-a7c5-f4e2693ceb5e",
    "recommendationItems": [
        {
            "articleId": "1001522DC",
            "name": "FARMSTAY Пенка для умывания лица с коллагеном, корейская увлажняющая умывалка для очищения лица FarmStay Collagen",
            "asset": {
                "id": "46ebcc37-b439-4efd-8b70-7534fe364c00",
                "media": {
                    "url": "master/catalog/images/1705478756176-1882559365.jpg",
                    "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1705478756176-1882559365.jpg",
                    "name": "6584263816.jpg",
                    "type": "PHOTO",
                    "size": 50278,
                    "resolution": "1000x1000 px",
                    "createdDate": "2024-01-17T11:06:11.428"
                },
                "title": "пенка коллаген",
                "altAttr": "пенка коллаген",
                "description": "",
                "sign": "",
                "tags": [
                    ""
                ]
            },
            "orderable": true,
            "variants": [
                {
                    "articleId": "1001523DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
                            "unitPrice": 100.00,
                            "discountUnitPrice": 64.00
                        }
                    }
                },
                {
                    "articleId": "1001523DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "90e5fed1-1eaa-4e45-8574-b687605817fd": {
                            "unitPrice": 1900.00,
                            "discountUnitPrice": 1216.00
                        }
                    }
                }
            ]
        },
        {
            "articleId": "1001507DC",
            "name": "Болт DIN933 М12х40 с шестигранной головкой кл.пр. 5.8",
            "asset": {
                "id": "90b10503-87e8-4d98-8097-b245c8c4174f",
                "media": {
                    "url": "master/catalog/images/1703849256449-1882559365.JPG",
                    "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1703849256449-1882559365.JPG",
                    "name": "Болт.JPG",
                    "type": "PHOTO",
                    "size": 24578,
                    "resolution": "550x493 px",
                    "createdDate": "2023-12-29T14:27:56.171"
                },
                "title": "Болт",
                "altAttr": "Болт",
                "description": "",
                "sign": "",
                "tags": [
                    ""
                ]
            },
            "orderable": true,
            "variants": [
                {
                    "articleId": "1001508DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
                            "unitPrice": 50.30,
                            "discountUnitPrice": 50.30
                        }
                    }
                },
                {
                    "articleId": "1001509DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "90e5fed1-1eaa-4e45-8574-b687605817fd": {
                            "unitPrice": 850.00,
                            "discountUnitPrice": 850.00
                        }
                    }
                }
            ]
        },
        {
            "articleId": "1001505DC",
            "name": "Шпаклевка финишная готовая Кнауф Ротбанд Паста Профи 5 кг",
            "asset": {
                "id": "a1becad6-240b-4434-929d-4bbd36f74239",
                "media": {
                    "url": "master/catalog/images/1703849256455-1882559365.JPG",
                    "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1703849256455-1882559365.JPG",
                    "name": "Шпаклевка.JPG",
                    "type": "PHOTO",
                    "size": 43796,
                    "resolution": "580x586 px",
                    "createdDate": "2023-12-29T14:27:56.172"
                },
                "title": "Шпаклевка",
                "altAttr": "Шпаклевка",
                "description": "",
                "sign": "",
                "tags": [
                    ""
                ]
            },
            "orderable": true,
            "variants": [
                {
                    "articleId": "1001506DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
                            "unitPrice": 120.00,
                            "discountUnitPrice": 102.00
                        }
                    }
                },
                {
                    "articleId": "1001506DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "90e5fed1-1eaa-4e45-8574-b687605817fd": {
                            "unitPrice": 736.00,
                            "discountUnitPrice": 625.60
                        }
                    }
                }
            ]
        }
    ],
    "recommendationTimestamp": "2024-01-03T15:58:31"
}

Copy-icon
Response codes
  • 200 - рекомендации найдены
  • 404 - рекомендации для категории не найдены
  • Получение топ рекомендаций - GET запрос, /v1/recommendations/products/top
Request parameters

length - query-параметр, необязательный: количество товаров в рекомендациях

Copy-icon
Response sample

{
    "id": "418e4e9c-a869-4ef0-940f-525b33b67891",
    "recommendationItems": [
        {
            "articleId": "1001522DC",
            "name": "FARMSTAY Пенка для умывания лица с коллагеном, корейская увлажняющая умывалка для очищения лица FarmStay Collagen",
            "asset": {
                "id": "46ebcc37-b439-4efd-8b70-7534fe364c00",
                "media": {
                    "url": "master/catalog/images/1705478756176-1882559365.jpg",
                    "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1705478756176-1882559365.jpg",
                    "name": "6584263816.jpg",
                    "type": "PHOTO",
                    "size": 50278,
                    "resolution": "1000x1000 px",
                    "createdDate": "2024-01-17T11:06:11.428"
                },
                "title": "пенка коллаген",
                "altAttr": "пенка коллаген",
                "description": "",
                "sign": "",
                "tags": [
                    ""
                ]
            },
            "orderable": true,
            "variants": [
                {
                    "articleId": "1001523DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
                            "unitPrice": 100.00,
                            "discountUnitPrice": 64.00
                        }
                    }
                },
                {
                    "articleId": "1001523DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "90e5fed1-1eaa-4e45-8574-b687605817fd": {
                            "unitPrice": 1900.00,
                            "discountUnitPrice": 1216.00
                        }
                    }
                }
            ]
        },
        {
            "articleId": "1001507DC",
            "name": "Болт DIN933 М12х40 с шестигранной головкой кл.пр. 5.8",
            "asset": {
                "id": "90b10503-87e8-4d98-8097-b245c8c4174f",
                "media": {
                    "url": "master/catalog/images/1703849256449-1882559365.JPG",
                    "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1703849256449-1882559365.JPG",
                    "name": "Болт.JPG",
                    "type": "PHOTO",
                    "size": 24578,
                    "resolution": "550x493 px",
                    "createdDate": "2023-12-29T14:27:56.171"
                },
                "title": "Болт",
                "altAttr": "Болт",
                "description": "",
                "sign": "",
                "tags": [
                    ""
                ]
            },
            "orderable": true,
            "variants": [
                {
                    "articleId": "1001508DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
                            "unitPrice": 50.30,
                            "discountUnitPrice": 50.30
                        }
                    }
                },
                {
                    "articleId": "1001509DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "90e5fed1-1eaa-4e45-8574-b687605817fd": {
                            "unitPrice": 850.00,
                            "discountUnitPrice": 850.00
                        }
                    }
                }
            ]
        },
        {
            "articleId": "1001547DC",
            "name": "Ботинки",
            "asset": {
                "id": "60ff6a0c-722c-4b99-966a-82bbd29e0cdf",
                "media": {
                    "url": "develop/catalog/images/1702023282501-1222327520.jpg",
                    "absoluteUrl": "https://test-ecom-media.digitalchief.tech/develop/catalog/images/1702023282501-1222327520.jpg",
                    "name": "282333_56780.jpg",
                    "type": "PHOTO",
                    "size": 81082,
                    "resolution": "750x750 px",
                    "createdDate": "2023-12-08T11:15:50.402"
                },
                "title": "БОТИНКИ ECCO BELLA",
                "altAttr": "BELLA",
                "description": "БОТИНКИ\nECCO BELLA",
                "sign": "",
                "tags": [
                    ""
                ]
            },
            "orderable": true,
            "variants": [
                {
                    "articleId": "1001548DC",
                    "name": null,
                    "asset": null,
                    "orderable": false,
                    "prices": {
                        "90e5fed1-1eaa-4e45-8574-b687605817fd": {
                            "unitPrice": 1.00,
                            "discountUnitPrice": 1.00
                        }
                    }
                }
            ]
        }
    ],
    "recommendationTimestamp": "2024-01-03T15:58:31"
}

Copy-icon
Response codes
  • 200 - рекомендации найдены
  • 404 - рекомендации не найдены
  • Добавление события для построения рекомендаций - POST запрос, /v1/trackings
Request body sample

{
  "categoryId": "cat1000070DC",
  "articleId": "1000418DC",
  "userId": "207348732260279826",
  "action": "add_to_cart",
  "cartId": "4b7e6hjA-107b-476b-816a-51hh256a30d1",
  "geolocation": {
    "location": {
        "lat": 37.421875199999995,
        "lng": -122.0851173
    },
    "accuracy": 120
  },
  "timestamp": "2024-01-30T10:01:10",
  "sessionId": "1B5CABCD3HUY49PJDF346798A9GGK77E9",
  "brand": "Asus"
}

Copy-icon
Response codes
  • 201 - событие успешно создано
  • 400 - запрос на создание события не содержит никаких данных
  • Добавление событий по каждому товару из заказа - POST запрос, /v1/trackings/orders/{orderId}
Request parameters (request sample body)

orderId - path-параметр: ID заказа, для продуктов которого формируются события для рекомендаций

Copy-icon
Response codes
  • 201 - события успешно созданы
  • 404 - заказ по ID не найден