Микросервис ugc

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

Микросервис ugc предназначен для работы с отзывами клиентов на товары каталога. В BackOffice и WebShop он позволяет просматривать, искать, создавать, изменять и удалять отзывы.

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

В работе микросервиса используется сущность Review, которая содержит информацию об отзыве (идентификатор/текст/дата создания/дата модерации/статус отзыва и др.)

Аутентификация не нужна для эндпоинтов:

  • Получение отфильтрованной страницы отзывов - POST запрос, /v1/backoffice/review/page
  • Получение отфильтрованного списка отзывов - POST запрос, /v1/backoffice/review/list
  • Получение списка отзывов - GET запрос, /v1/review/reviews
  • Получение данных конкретного отзыва по его ID - GET запрос, /v1/review/review/{reviewId}.

В других же запросах при обращении к микросервису через API необходимо в заголовке Authorization указать токен: Authorization: Bearer <токен>.

Для работы с микросервисом в BackOffice у пользователя должна быть роль Admin или Admin_Review.

Подробнее о ролях можно узнать здесь.

/api/ugc/

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

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

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",

    "LOGGING_LEVEL": "уровень_логирования",
    "POSTGRES_DATABASE": "ugc",
    "POSTGRES_MIGRATION_USER": "ugc_migration",
    "POSTGRES_PORT": "5432",
    "POSTGRES_USER": "ugc_user",
    "SERVER_PORT": "порт_сервера"
  }


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

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


{
  "env": {
    "AI_KEY": "ключ_доступа_к_сервису_AI",
    "AI_URL": "url_доступа_к_сервису_AI",

    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ECOM_ISSUER_URI": "url_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
    "POSTGRES_HOST": "адрес_хоста",
    "POSTGRES_MIGRATION_PASSWORD": "пароль",
    "POSTGRES_PASSWORD": "пароль",
    "STAND_NAME": "название_стенда"
  }
}




Copy-icon

Работа с отзывами в BackOffice

Получение отфильтрованной страницы отзывов - POST запрос, /v1/backoffice/review/page

Request body sample

{
    "sort": [
        {
            "sortBy": "creationDate",
            "direction": "desc"
        }
    ],
    "page": 0,
    "size": 5,
    "filter": {
    "status": 0,
    "userId": "227485734292973074"
  }
}

Copy-icon
Response sample

{
    "content": [
        {
            "reviewId": "83674b72-1911-4b96-81ac-d90fa52e45c4",
            "comment": "Перчатки не очень. Быстро порвались.",
            "productId": "1001428DC",
            "userId": "227485734292973074",
            "authorName": "Ольга",
            "isHideAuthorName": true,
            "status": 0,
            "creationDate": "2024-04-19T13:30:35.885029"
        }
    ],
    "pageable": {
        "sort": {
            "sorted": true,
            "unsorted": false,
            "empty": false
        },
        "pageNumber": 0,
        "pageSize": 5,
        "offset": 0,
        "paged": true,
        "unpaged": false
    },
    "totalElements": 1,
    "totalPages": 1,
    "last": true,
    "numberOfElements": 1,
    "first": true,
    "sort": {
        "sorted": true,
        "unsorted": false,
        "empty": false
    },
    "number": 0,
    "size": 5,
    "empty": false
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен список отзывов
  • 422 - ошибка, не хватает данных или они не валидны

Получение отфильтрованного списка отзывов - POST запрос, /v1/backoffice/review/list

Request body sample

{
    "status": 0,
    "userId": "227485734292973074"
}

Copy-icon
Response sample

[
    {
        "reviewId": "83674b72-1911-4b96-81ac-d90fa52e45c4",
        "comment": "Перчатки не очень. Быстро порвались.",
        "productId": "1001428DC",
        "userId": "227485734292973074",
        "authorName": "Ольга",
        "isHideAuthorName": true,
        "status": 0,
        "creationDate": "2024-04-19T13:30:35.885029"
    }
]

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен список отзывов
  • 422 - ошибка, не хватает данных или они не валидны

Получение данных отзыва по его ID - GET запрос, /v1/backoffice/review/{reviewId}

Request parameters

reviewId - path-параметр, обязательный: уникальный идентификатор отзыва

Copy-icon
Response sample

{
    "reviewId": "83674b72-1911-4b96-81ac-d90fa52e45c4",
    "comment": "Перчатки не очень. Быстро порвались.",
    "creationDate": "2024-04-19T13:30:35.885029",
    "moderationDate": "2024-04-19T18:43:12.086109",
    "moderatorLogin": "256921651772417554",
    "userId": "227485734292973074",
    "authorName": "Ольга",
    "isHideAuthorName": true,
    "productId": "1001428DC",
    "rating": 4,
    "status": 0
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные отзыва
  • 404- ошибка, отзыв с таким ID не найден

Изменение отзыва - PATCH запрос, /v1/backoffice/review/{reviewId}

Request parameters

reviewId - path-параметр, обязательный: уникальный идентификатор отзыва

Copy-icon
Request body sample

{
  "authorName": "Наталья",
  "comment": "Перчатки не очень. Быстро порвались.",
  "isHideAuthorName": true,
  "status": 0
}

Copy-icon
Response sample

{
    "reviewId": "83674b72-1911-4b96-81ac-d90fa52e45c4",
    "comment": "Перчатки не очень. Быстро порвались.",
    "creationDate": "2024-04-19T13:30:35.885029",
    "moderationDate": "2024-04-19T22:43:38.598077",
    "moderatorLogin": "202277231504942610",
    "userId": "227485734292973074",
    "authorName": "Наталья",
    "isHideAuthorName": true,
    "productId": "1001428DC",
    "rating": 4,
    "status": 0
}

Copy-icon

Response codes:

  • 200 - операция выполнена успешно, отзыв изменен
  • 404- ошибка, отзыв с таким ID не найден
  • 409 - ошибка, ID отзыва не может быть изменен
  • 422 - ошибка, недостаточно данных или они не валидны

Массовое (пакетное) изменение отзывов - PATCH запрос, /v1/backoffice/review/bulk

Request body sample

[
    {
        "id": "83674b72-1911-4b96-81ac-d90fa52e45c4",
        "updateReviewRequest": {
            "authorName": "Олег",
            "comment": "мне не нравится!",
            "isHideAuthorName": false,
            "status": 0,
            "answer": null
        }
    },
    {
        "id": "6f10e434-62d7-4b39-8683-44a985914261",
        "updateReviewRequest": {
            "authorName": "Иван",
            "comment": "Очень хороший товар",
            "isHideAuthorName": false,
            "status": 1,
            "answer": null
        }
    }
]

Copy-icon
Response sample

[
    {
        "reviewId": "83674b72-1911-4b96-81ac-d90fa52e45c4",
        "comment": "мне не нравится!",
        "creationDate": "2024-04-19T13:30:35.885029",
        "moderationDate": "2024-04-19T22:52:28.017349",
        "moderatorLogin": "202277231504942610",
        "userId": "227485734292973074",
        "authorName": "Олег",
        "isHideAuthorName": false,
        "productId": "1001428DC",
        "rating": 4,
        "status": 0
    },
    {
        "reviewId": "6f10e434-62d7-4b39-8683-44a985914261",
        "comment": "Очень хороший товар",
        "creationDate": "2024-04-11T17:46:45.652618",
        "moderationDate": "2024-04-19T22:52:28.025092",
        "moderatorLogin": "202277231504942610",
        "userId": "227485734292973074",
        "authorName": "Иван",
        "isHideAuthorName": false,
        "productId": "1001693DC",
        "rating": 4,
        "status": 1
    }
]

Copy-icon
Response codes
  • 200 - операция выполнена успешно, отзывы изменены
  • 404- ошибка, отзывы с такими ID не найдены
  • 409 - ошибка, ID отзыва не может быть изменен
  • 422 - ошибка, недостаточно данных или они не валидны

Удаление отзыва(-ов) по ID - DELETE запрос, /v1/backoffice/review

Request body sample

{
    "reviewIds": [
        "83674b72-1911-4b96-81ac-d90fa52e45c4"
    ]
}

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, отзыв удален
  • 422 - ошибка, отзыв не может быть удален

Получение списка отзывов на товар - GET запрос, /v1/review/reviews

Request parameters

productId - query-параметр, обязательный: идентификатор товара
offset - query-параметр: количество строк, которые необходимо пропустить перед началом возврата строк из запроса
count - query-параметр: количество записей (строк) таблицы
sortOption - query-параметр: вид сортировки отзывов

Copy-icon
Response sample

{
    "total": 3,
    "quantity": 3,
    "reviewsLeft": 0,
    "reviews": [
        {
            "reviewId": "2fa0ee78-cc8d-4c83-abd9-c4a5bd455eb1",
            "authorName": "Admin",
            "isHideAuthorName": false,
            "creationDate": "2024-04-18T13:47:24.673353",
            "rating": 5,
            "comment": "Замечательная блузка!!!!!!!!!!!!",
            "productId": "1009004DC",
            "moderationDate": "2024-04-19T18:42:51.30031",
            "moderatorLogin": "256921651772417554",
            "answer": "Огромное вам спасибо!!!!!!!"
        },
        {
            "reviewId": "5c90006e-a264-4151-961b-e64db013d6ab",
            "authorName": "Admin",
            "isHideAuthorName": true,
            "creationDate": "2024-04-18T13:40:40.678604",
            "rating": 2,
            "comment": "Товар не подошел по размеру, цвет не понравился.",
            "productId": "1009004DC",
            "moderationDate": "2024-04-18T13:40:55.851099",
            "moderatorLogin": "202277231504942610"
        },
        {
            "reviewId": "ca79b2b9-fc96-4e92-b14a-bc91007fc1c3",
            "authorName": "Admin",
            "isHideAuthorName": false,
            "creationDate": "2024-04-18T13:39:35.001513",
            "rating": 4,
            "comment": "Прекрасный товар!",
            "productId": "1009004DC",
            "moderationDate": "2024-04-18T13:40:02.270798",
            "moderatorLogin": "202277231504942610",
            "answer": "Большое спасибо!!!"
        }
    ]
}

Copy-icon
Response codes

200 - операция выполнена успешно, получен список отзывов на товар

Получение данных отзыва по его ID - GET запрос, /v1/review/review/{reviewId}

Request parameters

reviewId - path-параметр, обязательный: идентификатор отзыва

Copy-icon
Response sample

{
    "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": "Спасибо за ваш отзыв! Рады, что вам понравился наш термос."
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные об отзыве
  • 404 - ошибка, отзыв с таким ID не найден

Получение данных отзыва(-ов) по ID товара и ID пользователя (вызывается при переходе на форму оставления отзыва) - GET запрос, /v1/review/product-review

Request parameters

productId - query-параметр, обязательный: идентификатор товара
userId - query-параметр, обязательный: идентификатор пользователя

Copy-icon
Response sample

[
    {
        "reviewId": "cdf457aa-2a91-4db5-b76a-392f8b0375f5",
        "productId": "1001693DC",
        "status": 1,
        "creationDate": "2024-04-11T15:02:11.954361"
    },
    {
        "reviewId": "6f10e434-62d7-4b39-8683-44a985914261",
        "productId": "1001693DC",
        "status": 1,
        "creationDate": "2024-04-11T17:46:45.652618"
    }
]

Copy-icon
Response codes

200 - операция выполнена успешно, получены данные об отзыве(-ах)

Создание отзыва - POST запрос, /v1/review/createReview

Request body sample

{
    "rating": 4,
    "comment": "Какой-то странный товар, если честно. Не буду советовать никому.",
    "authorName": "Василий Пирогов",
    "isHideAuthorName": false,
    "productId": "1009007DC"
}

Copy-icon
Response sample

В ответе приходит ID созданного отзыва, например, c09ee561-48ec-47ac-b51c-ae961e702aa7.

Response codes
  • 200 - операция выполнена успешно, отзыв создан и отправлен на модерацию
  • 422 - ошибка, не хватает данных или они не валидны

Работа с ChatGPT

Генерация ответа на отзыв - POST запрос, /v1/backoffice/chat/generateAnswer

Request body sample

"Ну у вас и товары! Больше никогда не буду покупать у вас в магазине."

Copy-icon
Response sample

Здравствуйте!

Спасибо за ваш отзыв. Мы обязательно примем к сведению ваши замечания и постараемся сделать наш сервис ещё лучше.

Кажется, вы уже покинули чат. Если у вас возникнут ещё какие-либо вопросы — мы всегда рады помочь! Всего доброго.

Copy-icon
Response codes

200 - операция выполнена успешно, ответ на отзыв сгенерирован

Связанные статьи

 Микросервисы