docs: default calendar on verify and search discovery tops. Refs EventHub/EventHubBack#49 EventHub/EventHubBack#50
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+16
-3
@@ -19,6 +19,11 @@ EventHub — платформа для управления событиями
|
||||
- Гибкое подтверждение заявок: auto (автоматически), manual (вручную), timeout (авто через N
|
||||
секунд)
|
||||
- Теги календаря, рейтинг (средняя оценка, количество голосов)
|
||||
- После успешной верификации email (`POST /v1/verify`, статус пользователя → `active`) система
|
||||
идемпотентно создаёт дефолтный **personal**-календарь владельцу (`logic_calendar:ensure_default_calendar/1`):
|
||||
название — `nickname` или «Мой календарь», `confirmation=manual`. Повторный вызов не создаёт дубликат,
|
||||
если у пользователя уже есть active personal-календарь. Существующим пользователям без календаря
|
||||
backfill не выполняется.
|
||||
|
||||
**Новые поля (задача #12):**
|
||||
- `short_name` — короткое уникальное имя для API и поиска
|
||||
@@ -111,9 +116,16 @@ EventHub — платформа для управления событиями
|
||||
- Возможность пожаловаться на отзыв (создание `report`).
|
||||
|
||||
### 2.5. Поиск и фильтрация
|
||||
- Полнотекстовый поиск по названиям событий, календарей, тегам.
|
||||
- **Discovery (пустой поиск):** `GET /v1/search` без `q`, `tags`, `from`/`to`, `lat`/`lon`, `sort`
|
||||
возвращает топ публичных календарей и событий по рейтингу из `stats_tops`
|
||||
(`core_calendar:get_top_calendars_by_rating/1`, `core_event:get_top_events_by_rating/1`).
|
||||
Параметр `type` (`event` | `calendar`) ограничивает один тип; без `type` — оба в `results`.
|
||||
Если tops пусты или после фильтра `can_access` ничего не осталось — fallback на полный scan
|
||||
(как при фильтрованном поиске без `q`).
|
||||
- Полнотекстовый поиск по названиям событий, календарей, тегам (при наличии `q` или любого
|
||||
фильтра из списка выше).
|
||||
- Фильтрация по дате, категории, местоположению, рейтингу.
|
||||
- Пагинация результатов.
|
||||
- Пагинация результатов (`limit`, `offset`; default `limit=20`, max `100`).
|
||||
- Поиск должен учитывать права доступа (не показывать скрытые/заблокированные календари).
|
||||
|
||||
### 2.6. Расширенные возможности
|
||||
@@ -263,6 +275,7 @@ src/
|
||||
### Пользовательские (порт 8080)
|
||||
- `GET /health` — health + build identity: `status`, `service`, `version`, `build`, `git_sha`, `built_at` (как admin health).
|
||||
- `POST /v1/register` — регистрация.
|
||||
- `POST /v1/verify` — подтверждение email; при успехе — `active` и дефолтный personal-календарь.
|
||||
- `POST /v1/login` — вход.
|
||||
- `POST /v1/refresh` — обновление токена.
|
||||
- `GET /v1/user/me` — профиль пользователя.
|
||||
@@ -272,7 +285,7 @@ src/
|
||||
email/role/status; неизвестные поля → `400`. Ответ — полный профиль как GET.
|
||||
- `GET /v1/user/bookings` — бронирования пользователя.
|
||||
- `GET /v1/user/reviews` — отзывы пользователя.
|
||||
- `GET /v1/search` — поиск.
|
||||
- `GET /v1/search` — поиск; пустой запрос (только auth + пагинация/`type`) — discovery tops.
|
||||
- `GET /v1/calendars` — список календарей.
|
||||
- `GET /v1/calendars/:id` — календарь.
|
||||
- `GET /v1/calendars/:calendar_id/events` — события календаря.
|
||||
|
||||
Reference in New Issue
Block a user