docs(spec): studio-bookings and instance inbox. Refs EventHub/EventHubFront#60

This commit is contained in:
2026-08-14 11:13:08 +03:00
parent e87236b981
commit 80e10caf3d
2 changed files with 6 additions and 5 deletions
+4 -4
View File
@@ -513,10 +513,10 @@ src/
- `GET /v1/user/bookings` — бронирования пользователя **как участника**.
- `GET /v1/user/booking-requests`**actionable** pending-заявки к подтверждению, где
текущий пользователь — **owner** календаря события или **assigned specialist**
(`event.specialist_id` = user и specialist active). Past-pending помечается `expired` и
**не** попадает в ответ. Ответ — массив объектов booking + `role` (`owner`|`specialist`) +
вложенный `event` (`id`, `calendar_id`, `calendar_title`, `title`, `start_time`, `duration`,
`specialist_id`). Confirm/decline — существующий `PUT /v1/bookings/:id`.
(`event.specialist_id` = user и specialist active). Учитываются и материализованные
occurrence (`is_instance`). Past-pending помечается `expired` и **не** попадает в ответ.
- `GET /v1/user/studio-bookings` — pending **и confirmed** на тех же календарях (журнал студии).
Форма ответа как у booking-requests (`role` + вложенный `event`).
- `GET /v1/user/reviews` — отзывы пользователя.
- `GET /v1/user/following` — календари, которые пользователь отслеживает (follow).
- `GET /v1/search` — поиск; **без токена** (гость) — только commercial по `can_access`;
+2 -1
View File
@@ -254,7 +254,8 @@ cover (`.eh-discover-media--photo`); иначе mood wash + initials (`.eh-disco
(actionable pending, где user — owner календаря или `event.specialist_id`; past-pending
Back отдаёт как `expired` и **не** включает в inbox); те же
`PUT /v1/bookings/:id` `{ action: confirm | decline }` (на `expired``409`)
- UI `/bookings`: две группы (пустые скрывать): **К подтверждению** + **Мои записи**
- UI `/bookings`: три группы (пустые скрывать): **К подтверждению** (`booking-requests`) +
**Записи студии** (`GET /v1/user/studio-bookings`, confirmed) + **Мои записи**
(upcoming/past participant). `specialist_invite` сюда **не** попадает.
Empty state: title + hint + CTA Discover / «Мои календари».
Время слота на list-карточках — soft (secondary to title).