Микросервис ugc-orchestration
Микросервис search-admin используется в работе поиска и фильтрации с использованием синонимов и стоп-слов.
Доступ к сервису предоставляется по запросу.
Логика работы  
В работе микросервиса используются следующие сущности:
- Синоним (SynonymDto) - содержит данные о синониме слова, используемого для поиска (идентификатор, назначение, тип);
- Стоп-слово (StopWordDto) - содержит данные о стоп-слове, по которому не осуществляется поиск (идентификатор, стоп-слово);
- Ускорение запроса (QueryBoostDto) - содержит данные ускорения поискового запроса для мультивариативных товаров (идентификатор, запросы, идентификаторы мультивариативных товаров, дата начала, дата окончания);
Аутентификация  
При обращении к сервису аутентификация не нужна.
Service context path  
/api/search-admin/
Настройки и параметры конфигурации  
Параметры конфигурации указываются в Vault.
Подробнее о ролях можно узнать здесь.
Service context path
/api/ugc-orchestration/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
      
{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm"
  }
}
    
      
// пример взят с тестового стенда
{
  "env": {
    "KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka",
    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel"
  }
}
    
Методы микросервиса 
Работа с отзывами в BackOffice 
- Получение отфильтрованной страницы отзывов - POST запрос, /v1/backoffice/review/page
      
                      
                      
                      
                      
                      
                      
                      {
    "sort": [
 
                            {
     
                            "sortBy": "creationDate",
           
                      "direction": "desc"
       
                      }
    ],
    "page":
                      0,
    "size": 5,
 
                        "filter": {
    "status": 0,
    "userId": "227485734292973074"
  }
}
    
      
{
    "content": [
        {
            "reviewId": "6f10e434-62d7-4b39-8683-44a985914261",
            "comment": "Очень хороший товар",
            "productId": "1001693DC",
            "userId": "227485734292973074",
            "authorName": "Иван",
            "isHideAuthorName": false,
            "answer": null,
            "status": 1,
            "creationDate": "2024-04-11T17:46:45.652618"
        },
        {
            "reviewId": "cdf457aa-2a91-4db5-b76a-392f8b0375f5",
            "comment": "Хороший термос, всем советую!!",
            "productId": "1001693DC",
            "userId": "227485734292973074",
            "authorName": "Ольга Петрова",
            "isHideAuthorName": true,
            "answer": "Спасибо за ваш отзыв! Рады, что вам понравился наш термос.",
            "status": 1,
            "creationDate": "2024-04-11T15:02:11.954361"
        }
    ],
    "number": 0,
    "size": 2,
    "totalElements": 2,
    "pageable": "INSTANCE",
    "last": true,
    "totalPages": 1,
    "sort": {
        "sorted": false,
        "unsorted": true,
        "empty": true
    },
    "first": true,
    "numberOfElements": 2,
    "empty": false
}
    
- 200 - операция выполнена успешно, получен список отзывов
- 422 - ошибка, не хватает данных или они не валидны
- Получение отфильтрованного списка отзывов - POST запрос, /v1/backoffice/review/list
      
                      
                      
                      
                      
                      
                      
                      {
    "status": 0,
 
                        "userId": "227485734292973074"
}
    
      
[
    {
        "reviewId": "cdf457aa-2a91-4db5-b76a-392f8b0375f5",
        "comment": "Хороший термос, всем советую!!",
        "productId": "1001693DC",
        "userId": "227485734292973074",
        "authorName": "Ольга Петрова",
        "isHideAuthorName": true,
        "answer": "Спасибо за ваш отзыв! Рады, что вам понравился наш термос.",
        "status": 1,
        "creationDate": "2024-04-11T15:02:11.954361"
    },
    {
        "reviewId": "6f10e434-62d7-4b39-8683-44a985914261",
        "comment": "Очень хороший товар",
        "productId": "1001693DC",
        "userId": "227485734292973074",
        "authorName": "Иван",
        "isHideAuthorName": false,
        "answer": null,
        "status": 1,
        "creationDate": "2024-04-11T17:46:45.652618"
    }
]
    
- 200 - операция выполнена успешно, получен список отзывов
- 422 - ошибка, не хватает данных или они не валидны
- Получение подробной информации об отзыве (используется при переходе на подробную информацию об отзыве) - GET запрос, /v1/backoffice/review/{reviewId}
      
                      
                      
                      
                      
                      
                      
                      reviewId - path-параметр, обязательный: уникальный идентификатор
                      отзыва
    
      
{
    "reviewId": "cdf457aa-2a91-4db5-b76a-392f8b0375f5",
    "comment": "Хороший термос, всем советую!!",
    "creationDate": "2024-04-11T15:02:11.954361",
    "moderationDate": "2024-04-15T18:56:23.095144",
    "moderatorLogin": "256921651772417554",
    "userId": "227485734292973074",
    "authorName": "Ольга",
    "isHideAuthorName": false,
    "productId": "1001693DC",
    "rating": 5,
    "status": 1,
    "answer": null
}
    
- 200 - операция выполнена успешно, получены данные отзыва
- 404- ошибка, отзыв с таким ID не
                      найден
- Изменение отзыва - PATCH запрос, /v1/backoffice/review/{reviewId}
      
                      
                      
                      
                      
                      
                      
                      reviewId - path-параметр, обязательный: уникальный идентификатор
                      отзыва
    
      
{
    "authorName": "Ольга Петрова",
    "comment": "Хороший термос, всем советую!!",
    "isHideAuthorName": true,
    "answer": "Спасибо за ваш отзыв! Рады, что вам понравился наш термос.",
    "status": 1
}
    
      
{
    "reviewId": "cdf457aa-2a91-4db5-b76a-392f8b0375f5",
    "comment": "Хороший термос, всем советую!!",
    "creationDate": "2024-04-11T15:02:11.954361",
    "moderationDate": "2024-04-19T12:12:43.520007",
    "moderatorLogin": "227485734292973074",
    "userId": "227485734292973074",
    "authorName": "Ольга Петрова",
    "isHideAuthorName": true,
    "productId": "1001693DC",
    "rating": 5,
    "status": 1,
    "answer": "Спасибо за ваш отзыв! Рады, что вам понравился наш термос."
}
    
    
- 200 - операция выполнена успешно, отзыв изменен
- 404- ошибка, отзыв с таким ID не найден
- 409 - ошибка, ID отзыва не может быть изменен
- 422 - ошибка, недостаточно данных или они не валидны
- Массовое (пакетное) изменение отзывов - PATCH запрос, /v1/backoffice/review/bulk
      
[
    {
        "id": "f53c68db-918f-4d41-948b-b7f4b72ab0bf",
        "updateReviewRequest": {
            "authorName": "Анна",
            "comment": "мне нравится!",
            "isHideAuthorName": false,
            "status": 2,
            "answer": null
        }
    },
    {
        "id": "f88badbf-b5db-4224-a577-ccb282b9d269",
        "updateReviewRequest": {
            "authorName": "Admin",
            "comment": "хороший товар",
            "isHideAuthorName": false,
            "status": 2,
            "answer": null
        }
    }
]
    
      
[
    {
        "reviewId": "f53c68db-918f-4d41-948b-b7f4b72ab0bf",
        "comment": "мне нравится!",
        "creationDate": "2024-03-28T11:06:25.835918",
        "moderationDate": "2024-04-19T12:18:21.209305",
        "moderatorLogin": "227485734292973074",
        "userId": "202011779088279058",
        "authorName": "Анна",
        "isHideAuthorName": false,
        "productId": "1001584DC",
        "rating": 4,
        "status": 2,
        "answer": null
    },
    {
        "reviewId": "f88badbf-b5db-4224-a577-ccb282b9d269",
        "comment": "хороший товар",
        "creationDate": "2024-03-27T09:17:29.075806",
        "moderationDate": "2024-04-19T12:18:21.218865",
        "moderatorLogin": "227485734292973074",
        "userId": "202277231504942610",
        "authorName": "Admin",
        "isHideAuthorName": false,
        "productId": "1001428DC",
        "rating": 5,
        "status": 2,
        "answer": null
    }
]
    
- 200 - операция выполнена успешно, отзывы изменены
- 404- ошибка, отзывы с такими ID не найдены
- 409 - ошибка, ID отзыва не может быть изменен
- 422 - ошибка, недостаточно данных или они не валидны
- Удаление отзыва(-ов) по ID - DELETE запрос, /v1/backoffice/review
      
{
    "reviewIds": [
        "f53c68db-918f-4d41-948b-b7f4b72ab0bf"
    ]
}
    
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, отзыв удален
- 422 - ошибка, отзыв не может быть удален
Работа с отзывами в WebShop 
- Получение списка отзывов на товар - GET запрос, /v1/review/reviews
      
                      
                      
                      productId - query-параметр, обязательный: идентификатор товара
offset - query-параметр: количество строк, которые необходимо пропустить
                      перед началом возврата строк из запроса
count - query-параметр:
                      количество записей (строк) таблицы
sortOption - query-параметр: вид
                      сортировки отзывов
    
      
{
    "total": 2,
    "quantity": 2,
    "reviewsLeft": 0,
    "reviews": [
        {
            "reviewId": "4840d81a-9078-44af-9540-e3d527cb1072",
            "authorName": "Admin",
            "isHideAuthorName": false,
            "creationDate": "2024-03-27T09:15:37.030134",
            "rating": 4,
            "comment": "     супер товар",
            "productId": "1001428DC",
            "moderationDate": "2024-03-27T09:16:46.508325",
            "moderatorLogin": "202277231504942610",
            "answer": null
        },
        {
            "reviewId": "b2f9a4ee-0b8b-4e46-965e-495ef405859d",
            "authorName": "Анна",
            "isHideAuthorName": false,
            "creationDate": "2024-03-22T14:28:44.261234",
            "rating": 5,
            "comment": "нравится!!",
            "productId": "1001428DC",
            "moderationDate": "2024-04-15T18:52:31.209075",
            "moderatorLogin": "256921651772417554",
            "answer": null
        }
    ]
}
    
200 - операция выполнена успешно, получен список отзывов на товар
- Получение отзыва по его ID - GET запрос, /v1/review/review/{reviewId}
      
                      
                      
                      reviewId - path-параметр, обязательный: идентификатор
                      отзыва
    
      
{
  "reviewId": "cdf457aa-2a91-4db5-b76a-392f8b0375f5",
  "authorName": "Ольга Петрова",
  "isHideAuthorName": true,
  "creationDate": "2024-04-11T15:02:11.954361",
  "rating": 5,
  "comment": "Хороший термос, всем советую!!",
  "productId": "1001693DC",
  "moderationDate": "2024-04-19T12:12:43.520007",
  "moderatorLogin": "227485734292973074",
  "answer": "Спасибо за ваш отзыв! Рады, что вам понравился наш термос."
}
    
- 200 - операция выполнена успешно, получены данные об отзыве
- 404 - ошибка, отзыв с таким ID не найден
- Получение отзыва(-ов) по ID товара и ID пользователя (вызывается при переходе на форму оставления отзыва) - GET запрос, /v1/review/product-review
      
                      
                      
                      productId - query-параметр, обязательный: идентификатор товара
userId - query-параметр, обязательный: идентификатор
                      пользователя
    
      
{
  "reviewId": "f88badbf-b5db-4224-a577-ccb282b9d269",
  "productId": "1001428DC",
  "status": 2,
  "creationDate": "2024-03-27T09:17:29.075806"
}
    
200 - операция выполнена успешно, получены данные об отзыве(-ах)
- Получение отзыва(-ов) по ID товара и ID пользователя (вызывается при переходе на форму оставления отзыва) - GET запрос, /v2/review/product-review
      productId - query-параметр, обязательный: идентификатор товара
    
      
{
   "reviewId":"f500f517-7919-490a-a54e-661ef5c22e9e",
   "productId":"1021616DC",
   "status":1,
   "creationDate":"2024-08-09T15:19:17.180228"
}
    
    
- 200 - операция выполнена успешно, получены данные отзыва
- 403 - ошибка, нет доступа к данным (Forbidden)
- Создание отзыва - POST запрос, /v1/review/createReview
      
{
    "rating": 4,
    "comment": "Перчатки не очень. Быстро порвались.",
    "authorName": "Ольга",
    "isHideAuthorName": true,
    "productId": "1001428DC"
}
    
    
В ответе приходит ID созданного отзыва, например, 83674b72-1911-4b96-81ac-d90fa52e45c4.
- 200 - операция выполнена успешно, отзыв создан и отправлен на модерацию
- 422 - ошибка, не хватает данных или они не валидны
Генерация ответов на отзывы 
- Генерация ответа на отзыв - POST запрос, /v1/backoffice/chat/generateAnswer
      
"Не понравился мне этот товар!"
    
    
      
Здравствуйте!
Благодарим вас за отзыв и время, уделённое написанию комментария. Обратная связь очень важна для нас! Мы ценим ваше доверие и стараемся сделать всё возможное, чтобы каждый клиент остался доволен качеством наших услуг.
Примите наши искренние извинения за доставленные неудобства. Мы обязательно проведём работу над ошибками и примем все необходимые меры для предотвращения подобных ситуаций в будущем.
Если у вас возникнут какие-либо вопросы, непременно обращайтесь к нам снова! Всего доброго и до новых встреч.
    
    
200 - операция выполнена успешно, ответ на отзыв сгенерирован
- Получение данных о работе настройки для генерации ответов на отзывы - GET запрос, /v1/settings/{key}
      
key - path-параметр, обязательный: ключ настройки
    
    
      {
  "key": "auto_generate_answers",
  "value": "false",
  "description": null
}
    
- 200 - операция выполнена успешно, получены данные о настройке
- 404 - ошибка, настройка с таким ключом не найдена
- Изменение настройки - PUT запрос, /v1/settings/{key}
      key - path-параметр, обязательный: ключ настройки
    
      
{
  "key": "auto_generate_answers",
  "value": "true",
  "description": null
}
    
      {
  "key": "auto_generate_answers",
  "value": "true",
  "description": null
}
    
- 200 - операция выполнена успешно, данные настройки обновлены
- 404 - ошибка, настройка с таким ключом не найдена
- Создание настройки - POST запрос, /v1/settings
Отсутствуют.
      
{
  "key": "auto_generate_answers",
  "value": "true",
  "description": null
}
    
      {
  "key": "auto_generate_answers",
  "value": "true",
  "description": null
}
    
201 - операция выполнена успешно, настройка создана
 
     
    