Docs: sync booking-requests + Bookings IA + image_url after Back#59/Front#30. Fixes EventHub/EventHubSpec#12
This commit is contained in:
+19
-5
@@ -51,6 +51,9 @@ Deep-link на календарь, владельцем которого явл
|
||||
|
||||
- Главная сущность — **календарь**. Центр UI — виджет с видами **месяц** (default) / **неделя** / **день**.
|
||||
- Главные вкладки: **Календарь** (`/`, `/c/:id`), **Найти** (`/search`), **Записи** (`/bookings`), **Ещё** (`/more`).
|
||||
- **Записи** (`/bookings`) — grouped inbox: «К подтверждению» (owner/specialist pending + Confirm/Decline)
|
||||
и «Мои записи» (participant); пустые группы скрывать. Confirm на карточке события остаётся.
|
||||
- В **Ещё**: пункт входящих specialist invites скрыт при `pending=0` (deep-link `/invites` работает).
|
||||
- Контекст виджета: свой календарь (селектор) или чужой (browse после поиска). Чужой `personal` —
|
||||
только просмотр; чужой `commercial` с `booking_open=true` — запись; при `booking_open=false`
|
||||
(restricted / нет подписки владельца) — просмотр + сообщение «Запись временно недоступна».
|
||||
@@ -96,9 +99,12 @@ Deep-link на календарь, владельцем которого явл
|
||||
- `/c/:calendarId` — workspace с календарём
|
||||
- `/c/:calendarId/e/:eventId` — workspace + карточка события
|
||||
- `/search` — поиск календарей/событий
|
||||
- `/bookings` — мои бронирования (deep-link в `/c/.../e/...`)
|
||||
- `/bookings` — grouped inbox: (A) к подтверждению (owner/specialist pending) +
|
||||
(B) мои записи участника; deep-link в `/c/.../e/...`
|
||||
- `/calendars` — управление своими календарями (CRUD)
|
||||
- `/more` — вторичное меню + mood switcher
|
||||
- `/more` — вторичное меню + mood switcher; пункт specialist invites **скрыт**,
|
||||
если входящих pending = 0 (deep-link `/invites?token=` работает)
|
||||
- `/invites` — inbox входящих specialist invites (не смешивать с `/bookings`)
|
||||
- `/following` — отслеживаемые чужие календари (follow; не платная Подписка)
|
||||
- `/reviews`, `/subscription`, `/tickets`, `/profile`
|
||||
|
||||
@@ -116,6 +122,7 @@ Redirects: `/discover` → `/search`; `/calendars/:id` → `/c/:id`; `/calendars
|
||||
|
||||
### 5.3. Поиск (участник)
|
||||
`GET /v1/search` — фильтры (`type`, `q`, `tags`, даты, `lat`/`lon`/`radius`, sort, order, пагинация). Без `q`/дат/tags/geo/sort — топы календарей и событий; иначе — поиск. В списке бейдж типа — `calendar`|`event` (не `personal`/`commercial`). Даты, теги, geo и сортировка свёрнуты по умолчанию. Переход к `/c/:id` или `/c/:id/e/:eventId`.
|
||||
В результатах calendar (и event, если Back отдаёт) может быть `image_url` — Discover показывает cover; иначе mood wash + initials. **Upload API нет** — поле URL (seed / ручная установка).
|
||||
|
||||
### 5.4. Календари
|
||||
- Список своих: `GET /v1/calendars`
|
||||
@@ -132,8 +139,10 @@ Redirects: `/discover` → `/search`; `/calendars/:id` → `/c/:id`; `/calendars
|
||||
список active + исходящие pending; deactivate/remove принятых.
|
||||
Выбор `specialist_id` в форме события (только `active`).
|
||||
Баннер «подписка истекла / истекает» при `booking_open=false`.
|
||||
- Invitee: inbox входящих `GET /v1/user/specialist-invites` (More / уведомления) —
|
||||
- Invitee: inbox входящих `GET /v1/user/specialist-invites` на `/invites` —
|
||||
принять / отклонить; deep-link из email → accept по `token` после логина.
|
||||
В More пункт «Приглашения» показывается **только** при `pending > 0`
|
||||
(не путать с booking-заявками на `/bookings`).
|
||||
|
||||
### 5.5. События
|
||||
- Список: `GET /v1/calendars/:calendar_id/events`
|
||||
@@ -145,8 +154,13 @@ Redirects: `/discover` → `/search`; `/calendars/:id` → `/c/:id`; `/calendars
|
||||
### 5.6. Запись (bookings)
|
||||
- Участник: `POST /v1/events/:id/bookings` только при `booking_open`; иначе UI-сообщение /
|
||||
ответ `403`; `GET /v1/user/bookings`, `DELETE /v1/bookings/:id`, `GET /v1/bookings/:id`
|
||||
- Владелец и specialist: `GET /v1/events/:id/bookings`, `PUT /v1/bookings/:id`
|
||||
`{ action: confirm | decline }` (specialist — только свои события, см. BackSpec §2.1.2)
|
||||
- Владелец и specialist:
|
||||
- на карточке события: `GET /v1/events/:id/bookings` + Confirm/Decline (**обязательно**)
|
||||
- inbox `/bookings` группа «К подтверждению»: `GET /v1/user/booking-requests`
|
||||
(pending, где user — owner календаря или `event.specialist_id`); те же
|
||||
`PUT /v1/bookings/:id` `{ action: confirm | decline }`
|
||||
- UI `/bookings`: две группы (пустые скрывать): **К подтверждению** + **Мои записи**
|
||||
(upcoming/past participant). `specialist_invite` сюда **не** попадает.
|
||||
- Статусы: `pending` | `confirmed` | `cancelled`; confirmation: `auto` | `manual` | timeout
|
||||
- Pending резервирует capacity (как на бэке)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user