Docs: sync Front#35 D9 B guest schedule + confirmed personal overlay. Fixes EventHub/EventHubSpec#15
Refs EventHub/EventHubFront#35 (57cfcf3).
This commit is contained in:
+20
-3
@@ -60,6 +60,13 @@ Deep-link на календарь, владельцем которого явл
|
||||
- Контекст виджета: свой календарь (селектор) или чужой (browse после поиска). Чужой `personal` —
|
||||
только просмотр; чужой `commercial` с `booking_open=true` — запись; при `booking_open=false`
|
||||
(restricted / нет подписки владельца) — просмотр + сообщение «Запись временно недоступна».
|
||||
- **Свой default personal:** поверх сетки — overlay confirmed записей на чужие commercial
|
||||
слоты (Front-only: `GET /v1/user/bookings` → events/calendars). Заголовок
|
||||
`событие · студия · специалист`; клик → `/c/:foreignCalId/e/:eventId` (не в своём cal).
|
||||
- **Guest на чужом commercial (D9 модель B):** roster карточек активных специалистов →
|
||||
тап → сетка только со слотами `event.specialist_id` = выбранный; «Все слоты студии»
|
||||
снимает фильтр. Это **не** chip-filter на общей сетке. Book как обычно — без
|
||||
`specialist` в body заявки (слот уже привязан к спецу на событии).
|
||||
- Agenda rail: empty copy зависит от типа календаря — personal «Нет событий», commercial
|
||||
«Нет слотов».
|
||||
- Выбор события открывает карточку действий: mobile — bottom sheet; desktop — боковая панель. Действия зависят от роли (owner / participant).
|
||||
@@ -150,6 +157,10 @@ cover (`.eh-discover-media--photo`); иначе mood wash + initials (`.eh-disco
|
||||
список active + исходящие pending; deactivate/remove принятых.
|
||||
Выбор `specialist_id` в форме события (только `active`).
|
||||
Баннер «подписка истекла / истекает» при `booking_open=false`.
|
||||
`SpecialistsPanel` (owner): mobile density — имя/теги сверху, actions снизу
|
||||
full-width (invite/deactivate не ломать); desktop — вертикальный rail + scroll.
|
||||
- Guest browse commercial: roster активных → фильтр расписания по `specialist_id`
|
||||
(D9 B; см. §3.1); owner panel не смешивать с guest roster.
|
||||
- Invitee: inbox входящих `GET /v1/user/specialist-invites` на `/invites` —
|
||||
принять / отклонить; deep-link из email → accept по `token` после логина.
|
||||
В More пункт «Приглашения» показывается **только** при `pending > 0` с badge
|
||||
@@ -164,7 +175,8 @@ cover (`.eh-discover-media--photo`); иначе mood wash + initials (`.eh-disco
|
||||
|
||||
### 5.6. Запись (bookings)
|
||||
- Участник: `POST /v1/events/:id/bookings` только при `booking_open`; иначе UI-сообщение /
|
||||
ответ `403`; `GET /v1/user/bookings`, `DELETE /v1/bookings/:id`, `GET /v1/bookings/:id`
|
||||
ответ `403`; `GET /v1/user/bookings`, `DELETE /v1/bookings/:id`, `GET /v1/bookings/:id`.
|
||||
Тело book **без** specialist (назначение — на `event.specialist_id`).
|
||||
- Владелец и specialist:
|
||||
- на карточке события: `GET /v1/events/:id/bookings` + Confirm/Decline (**обязательно**)
|
||||
- inbox `/bookings` группа «К подтверждению»: `GET /v1/user/booking-requests`
|
||||
@@ -175,9 +187,14 @@ cover (`.eh-discover-media--photo`); иначе mood wash + initials (`.eh-disco
|
||||
(upcoming/past participant). `specialist_invite` сюда **не** попадает.
|
||||
Empty state: title + hint + CTA Discover / «Мои календари».
|
||||
Время слота на list-карточках — soft (secondary to title).
|
||||
- **Confirmed overlay на personal (Front-only, Front#35):** confirmed из
|
||||
`GET /v1/user/bookings` на чужих commercial — догрузить event/calendar и нарисовать
|
||||
на **своём default personal** grid; title `событие · студия · специалист`;
|
||||
клик → `/c/:foreignCalId/e/:eventId`. Back API не менялся.
|
||||
- Статусы: `pending` | `confirmed` | `cancelled` | `expired`; confirmation: `auto` | `manual` | timeout.
|
||||
Past+pending / `expired` в «Мои записи» — бейдж «истекла», Cancel скрыт (в т.ч. на
|
||||
`EventActionCard`). Defensive: если API ещё отдал past `pending` — UI мапит в `expired`.
|
||||
Past+pending / `expired` в «Мои записи» и на `EventActionCard` — бейдж «истекла»,
|
||||
Cancel скрыт. На past-событии Book скрыт. Defensive: если API ещё отдал past
|
||||
`pending` — UI мапит в `expired`.
|
||||
- Pending резервирует capacity (как на бэке)
|
||||
|
||||
### 5.7. Отзывы
|
||||
|
||||
Reference in New Issue
Block a user