Макет интерфейса
Ссылка на макет интерфейса: Unidraw Board
Экран интерфейса

Источники данных
| Endpoint | Данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/123.jpg" } |
GET /api/v1/restaurants?search=итальянская&type=ресторан&cuisine=итальянская&rating=4.5&priceMin=1000&priceMax=3000&kidsMenu=true | Вернет массив объектов (ресторанов), которые удовлетворяют строке поиска или фильтрам:{ "items": [ { "id": 123, "name": "Итальянский дворик", "photo": "https://example.com/photo1.jpg", "cuisine": ["итальянская", "европейская"], "averageCheck": 2500, "rating": 4.5 } ], "total": 42, "page": 1, "limit": 10 } |
| Кнопка "Выбрать" - переход на страницу ресторана | /restaurants/{id} |
Экран интерфейса

Источники данных
| endpoint | данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/123.jpg" } |
GET /api/v1/restaurants/{id} | { "id": 123, "name": "Итальянский дворик", "rating": 4.5, "cuisine": ["итальянская", "европейская"], "averageCheck": 2500, "address": { "city": "Москва", "street": "ул. Ленина", "building": "10" }, "workingHours": { "open": "12:00", "close": "00:00", "days": "пн-вс" }, "description": "Уютный ресторан с итальянской кухней.", "photos": ["https://example.com/photo1.jpg", "https://example.com/photo2.jpg", "https://example.com/photo3.jpg"] } |
GET /restaurants/{id}/tables | Переход на страницу выбора столика |
Экран интерфейса

Источники данных
| endpoint | данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/123.jpg" } |
GET /api/v1/restaurants/{id}/tables?date=2025-05-25&time=19:00&guests=4 пример параметров | Возвращается массив объектов (столиков). Столики отрисовываются на интерактивной карте [ { "number": "7", "seats": 4, "isAvailable": true, "position": { "x": 100, "y": 200 } } ] |
| При нажатии на "Подтвердить" переходим на страницу, в параметрах данные о брони | /booking/confirm?restaurantId={restaurantId}&tableId={tableId}&date={date}&time={time}&guests={guests} |
Экран интерфейса

Источники данных
| endpoint | данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/123.jpg" } |
/booking/confirm?restaurantId=123&tableId=12&date=2025-05-25&time=19:00&guests=4 | Данные о брони берутся из параметров URL |
| Чекбокс «Я согласен с правилами» – локальное состояние, проверяется перед отправкой. Если не согласен – кнопка неактивна. | |
POST /api/v1/bookings При нажатии на кнопку "Забронировать" создается бронь. При нажатии на кнопку "Отмена" возврат к предыдущему экрану /restaurants/{id}/tables |
Экран интерфейса

Источники данных
| endpoint | данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/567.jpg" } |
GET /api/v1/user/bookings?status=active параметр для отображения активных броней | Возвращается массив объектов (брони) [{ "id": 123, "restaurant": { "name": "Итальянский дворик" }, "table": { "number": "7" }, "guests": 4, "date": "2025-05-25", "time": "19:00", "status": "confirmed" }] |
При нажатии на кнопку "Отменить" DELETE /api/v1/bookings/{id} |
Экран интерфейса

Источники данных
| endpoint | данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/567.jpg" } |
При нажатии "Список броней" GET /api/v1/admin/restaurant/bookings При нажатии "Профиль" GET /api/v1/admin/restaurant/profile | данные на макете вкладок |
Экран интерфейса

Источники данных
| endpoint | данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/567.jpg" } |
GET /api/v1/admin/restaurant/bookings?date=2025-05-25&status=confirmed параметры, чтобы отфильтровать брони | Возвращается массив объектов (брони) { "items": [ { "id": 123, "date": "2025-05-25", "time": "19:00", "guests": 4, "table": { "number": "7" }, "status": "confirmed" } ], "total": 42, "page": 1, "limit": 20 } |
Экран интерфейса

Источники данных
| endpoint | данные |
|---|---|
GET /api/v1/user/header | { "avatarUrl": "https://booking.restaurants.ru/uploads/avatars/567.jpg" } |
GET /api/v1/admin/restaurant/profile | { "name": "Итальянский дворик", "cuisine": ["итальянская", "европейская"], "averageCheck": 2500, "address": { "city": "Москва", "street": "ул. Ленина", "building": "10" }, "workingHours": { "open": "12:00", "close": "00:00", "days": "пн-вс" }, "description": "Уютный ресторан с итальянской кухней.", "photos": ["https://example.com/photo1.jpg", "https://example.com/photo2.jpg", "https://example.com/photo3.jpg"] } |
PUT /api/v1/admin/restaurant/profile После нажатия на кнопку "Сохранить". |