docs: sync calendar follow API and Front UX. Refs EventHub/EventHubFront#9

This commit is contained in:
2026-07-20 22:11:21 +03:00
parent 8204894f63
commit 5cc2bcf736
2 changed files with 21 additions and 2 deletions
+14 -1
View File
@@ -81,6 +81,8 @@ EventHub — платформа для управления событиями
`edited_at :: calendar:datetime() | undefined`
- `review_vote` — голос пользователя за отзыв: `id`, `review_id`, `user_id`,
`value :: like | dislike`, `created_at`, `updated_at` (уникальность пары review+user)
- `calendar_follow` — follow чужого календаря: `id`, `calendar_id`, `user_id`, `created_at`
(уникальность пары calendar+user; не путать с `calendar_share` и платной `subscription`)
#### 2.2.6. Требования к реализации
- Все операции с событиями должны быть транзакционными.
@@ -88,6 +90,14 @@ EventHub — платформа для управления событиями
и кэширование).
- При поиске событий для календаря учитывать права доступа пользователя.
### 2.2.7. Follow чужого календаря
- Пользователь может **отслеживать** (follow) чужой календарь, к которому у него есть доступ
(`logic_calendar:can_access/2`) и который ему не принадлежит.
- Follow **не** даёт право на отзыв — gate отзывов остаётся confirmed booking (§2.4).
- Follow **не** связан с платной подпиской (`subscription`) и с `calendar_share` (права invite).
- API: `POST/DELETE /v1/calendars/:id/follow` (идемпотентно), `GET /v1/user/following`
(список active доступных календарей); в `GET /v1/calendars/:id` — поле `following` (boolean).
### 2.3. Запись участников и подтверждение
- Пользователь может отправить заявку на участие в событии.
- В зависимости от `confirmation` календаря заявка либо подтверждается автоматически, либо
@@ -293,9 +303,12 @@ src/
email/role/status; неизвестные поля → `400`. Ответ — полный профиль как GET.
- `GET /v1/user/bookings` — бронирования пользователя.
- `GET /v1/user/reviews` — отзывы пользователя.
- `GET /v1/user/following` — календари, которые пользователь отслеживает (follow).
- `GET /v1/search` — поиск; пустой запрос (только auth + пагинация/`type`) — discovery tops.
- `GET /v1/calendars` — список календарей.
- `GET /v1/calendars/:id` — календарь.
- `GET /v1/calendars/:id` — календарь (поле `following` для текущего пользователя).
- `POST /v1/calendars/:id/follow` — отслеживать чужой календарь.
- `DELETE /v1/calendars/:id/follow` — снять follow.
- `GET /v1/calendars/:calendar_id/events` — события календаря.
- `GET /v1/events/:id` — событие.
- `GET /v1/events/:id/occurrences` — вхождения повторяющегося события.