Микросервис 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.
Подробнее о ролях можно узнать здесь.
Service context path
/api/ugc/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"POSTGRES_DATABASE": "ugc",
"POSTGRES_MIGRATION_USER": "ugc_migration",
"POSTGRES_PORT": "5432",
"POSTGRES_USER": "ugc_user"
}
}
// пример взят с тестового стенда
{
"env": {
"AI_KEY": "ключ_доступа_к_сервису_AI",
"AI_URL": "url_доступа_к_сервису_AI",
"OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
"OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
"OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
"POSTGRES_HOST": "адрес_хоста",
"POSTGRES_MIGRATION_PASSWORD": "пароль",
"POSTGRES_PASSWORD": "пароль",
"STAND_NAME": "название_стенда"
}
}
Методы микросервиса
Работа с отзывами в BackOffice
- Получение отфильтрованной страницы отзывов - POST запрос, /v1/backoffice/review/page
{
"sort": [
{
"sortBy": "creationDate",
"direction": "desc"
}
],
"page":
0,
"size": 5,
"filter": {
"status": 0,
"userId": "227485734292973074"
}
}
{
"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
}
- 200 - операция выполнена успешно, получен список отзывов
- 422 - ошибка, не хватает данных или они не валидны
- Получение отфильтрованного списка отзывов - POST запрос, /v1/backoffice/review/list
{
"status": 0,
"userId": "227485734292973074"
}
[
{
"reviewId":
"83674b72-1911-4b96-81ac-d90fa52e45c4",
"comment": "Перчатки не очень. Быстро порвались.",
"productId":
"1001428DC",
"userId":
"227485734292973074",
"authorName": "Ольга",
"isHideAuthorName": true,
"status": 0,
"creationDate": "2024-04-19T13:30:35.885029"
}
]
- 200 - операция выполнена успешно, получен список отзывов
- 422 - ошибка, не хватает данных или они не валидны
- Получение отзыва по его ID - GET запрос, /v1/backoffice/review/{reviewId}
reviewId - path-параметр, обязательный: уникальный идентификатор
отзыва
{
"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
}
- 200 - операция выполнена успешно, получены данные отзыва
- 404- ошибка, отзыв с таким ID не
найден
- Редактирование отзыва - PATCH запрос, /v1/backoffice/review/{reviewId}
reviewId - path-параметр, обязательный: уникальный идентификатор
отзыва
{
"authorName": "Наталья",
"comment": "Перчатки не очень. Быстро порвались.",
"isHideAuthorName": true,
"status":
0
}
{
"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
}
- 200 - операция выполнена успешно, отзыв изменен
- 404- ошибка, отзыв с таким ID не найден
- 409 - ошибка, ID отзыва не может быть изменен
- 422 - ошибка, недостаточно данных или они не валидны
- Массовое (пакетное) изменение отзывов - PATCH запрос, /v1/backoffice/review/bulk
[
{
"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
}
}
]
[
{
"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
}
]
- 200 - операция выполнена успешно, отзывы изменены
- 404- ошибка, отзывы с такими ID не найдены
- 409 - ошибка, ID отзыва не может быть изменен
- 422 - ошибка, недостаточно данных или они не валидны
- Удаление отзыва(-ов) по ID - DELETE запрос, /v1/backoffice/review
{
"reviewIds": [
"83674b72-1911-4b96-81ac-d90fa52e45c4"
]
}
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, отзыв удален
- 422 - ошибка, отзыв не может быть удален
Работа с отзывами в WebShop
- Получение списка отзывов на товар - GET запрос, /v1/review/reviews
productId - query-параметр, обязательный: идентификатор товара
offset - query-параметр: количество строк, которые необходимо пропустить
перед началом возврата строк из запроса
count - query-параметр:
количество записей (строк) таблицы
sortOption - query-параметр: вид
сортировки отзывов
{
"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": "Большое спасибо!!!"
}
]
}
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":
"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"
}
]
200 - операция выполнена успешно, получены данные об отзыве(-ах)
- Создание отзыва - POST запрос, /v1/review/createReview
{
"rating": 4,
"comment": "Какой-то странный товар, если честно.
Не буду советовать никому.",
"authorName":
"Василий Пирогов",
"isHideAuthorName":
false,
"productId": "1009007DC"
}
В ответе приходит ID созданного отзыва,
например, c09ee561-48ec-47ac-b51c-ae961e702aa7
.
- 200 - операция выполнена успешно, отзыв создан и отправлен на модерацию
- 422 - ошибка, не хватает данных или они не валидны
Работа с ChatGPT
- Генерация ответа на отзыв - POST запрос, /v1/backoffice/chat/generateAnswer
"Ну у вас и товары! Больше никогда не буду покупать у вас в магазине."
Здравствуйте!
Спасибо за ваш отзыв. Мы обязательно примем к сведению ваши замечания и постараемся сделать наш сервис ещё лучше.
Кажется, вы уже покинули чат. Если у вас возникнут ещё какие-либо вопросы — мы всегда рады помочь! Всего доброго.
200 - операция выполнена успешно, ответ на отзыв сгенерирован