На cайті feedback.medit.com.ua необхідно розгорнути react додаток з адаптивною версткою.
Інфраструктура вже піднята, додаток працює через apache веб сервер, бекенд вже написаний.
Необхідно зробити фронт для аналога Google Forms.
User story:
Користувачу приходить посилання на телефон: GET https://feedback.medit.com.ua/survey?id=35f6db90-7c8e-4e9f-9f88-f10afd7b2234
Переходячи на нього додаток має зробити запит на бек: GET https://feedback-svc.medit.com.ua/api/surveys/35f6db90-7c8e-4e9f-9f88-f10afd7b2234
У відповідь з беку прийде JSON:
{
"status": "success",
"data": {
"surveyUUID": "6f0982ca-7722-11ee-9b05-e9c0ae0f5251",
"respondent": {
"respondentUUID": "54232862-710e-11ee-9b03-8a262ddcf484"
},
"editable": false,
"dueDate": "2023-10-24T00:00:00",
"filled": false,
"questions": [
{
"questionUUID": "3d052ac2-1672-4dd3-9884-0399f5851cb3",
"question": "Питання1?",
"answerType": {
"answerTypeUUID": "41cb2588-fe15-4db9-8d02-75f57601a2b6",
"name": "Булево"
},
"answers": []
}
]
}
}
"status": "success", - все добре продовжуємо, data буде містити дані типу у вигляді масиву або об'єкту ([...], {...})
"status": "error" - є помилка, data буде містити текст помилки типу рядок "error text"
---
- surveyUUID - id анкети яка містилась в параметрі id.
- respondent - дані респондента, можливо вони будуть поповнюватися іншими полями такими як first name, last name... але оскільки респондент не авторизується жодні приватні дані не віддаються. Якщо посилання буде містити додатковий параметр resondentUUID це зіграє у вигляді додатковий аутентифікаційних даних, що дозволять віддати ці дані. Поки так.
- editable - дозволяє редагувати анкету після заповнення (filled = true), але якщо поточний час не перевищу dueDate.
- dueDate - дата до якої на сторінці дозволене заповнення, або редагування анкети (якщо editable = true). Якщо час на заповнення вийшов, анкета відкривається лише на перегляд.
- questions масив ідентифікаторів запитань
- question - Текст запитання
- answerType - тип відповіді
{
"status": "success",
"data": [
{
"answerTypeUUID": "41cb2588-fe15-4db9-8d02-75f57601a2b6",
"name": "Булево"
},
{
"answerTypeUUID": "03b81636-15ee-4c0a-a059-52b2462bda8e",
"name": "Число"
},
{
"answerTypeUUID": "f222c8fa-800d-4412-a061-0e3adb70434b",
"name": "Рядок"
},
{
"answerTypeUUID": "2977117f-c1af-4008-b3aa-40d861c2cbba",
"name": "Значення зі списку типу число"
},
{
"answerTypeUUID": "cd90ccaa-dd4c-41f2-b53f-ac889f085885",
"name": "Значення зі списку типу рядок"
},
{