From 59726d394c4e1a70bf2316cc9dba4c3757dfce1e Mon Sep 17 00:00:00 2001 From: Aleksey Sabilin Date: Wed, 19 Aug 2026 22:01:21 +0300 Subject: [PATCH] =?UTF-8?q?docs(search):=20=D0=B2=D0=B8=D0=B4=20=D0=BA?= =?UTF-8?q?=D0=B0=D1=80=D1=82=D1=8B=20=D0=B2=20=D0=BF=D0=BE=D0=B8=D1=81?= =?UTF-8?q?=D0=BA=D0=B5,=20default=5Flocation=20=D0=B2=D1=81=D0=B5=D0=B3?= =?UTF-8?q?=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FrontSpec §5.3: переключатель Список/Карта (?view=map), маркеры группируются по месту, пин календаря с числом событий, попап со ссылками, тайлы OpenFreeMap без ключа, lazy-chunk. BackSpec §2.5: default_location календарей возвращается всегда, distance_km — только при гео-запросе (Back#77). Refs EventHub/EventHubSpec#21 --- EventHubBackSpec.md | 3 +++ EventHubFrontSpec.md | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/EventHubBackSpec.md b/EventHubBackSpec.md index f6a17be..02abd4f 100644 --- a/EventHubBackSpec.md +++ b/EventHubBackSpec.md @@ -409,6 +409,9 @@ API: по `event.location`; commercial-календари — по `settings.default_location`. `radius` **опционален** (1..100 км); без ключа — без отсечения, сортировка `distance`. В ответе `distance_km`. Без координат сущность в geo-выборку не входит. +- В элементе `calendars` поле `default_location` (`address`/`lat`/`lon`, либо `null`) + возвращается всегда, если у календаря задана точка (Back#77) — вид карты в поиске + строится и без гео-запроса. `distance_km` присутствует только при `lat`+`lon` в запросе. - Пагинация результатов (`limit`, `offset`; default `limit=20`, max `100`). - Поиск должен учитывать права доступа (не показывать скрытые/заблокированные календари). diff --git a/EventHubFrontSpec.md b/EventHubFrontSpec.md index 5eef682..27a072b 100644 --- a/EventHubFrontSpec.md +++ b/EventHubFrontSpec.md @@ -224,6 +224,15 @@ cover (`.eh-discover-media--photo`); иначе mood wash + initials (`.eh-disco центр по адресу (suggest), не ручные lat/lon. Радиус опционален (пресеты 1/5/10/25/50 км и «без ограничения»). В выдаче — `distance_km`. Список, не map-first. +**Вид карты (Back#77):** у результатов segment-переключатель «Список | Карта» +(`?view=map` в URL, переживает перезагрузку). Данные — тот же `GET /v1/search` +(`useSearch`); в режиме карты пагинация списка и блок «ближайшее» скрыты. +Маркеры группируются по точке (~1 м): пин календаря с бейджем числа событий в группе, +событие с отличной точкой — отдельная малая точка; клик по маркеру → попап со списком +карточек группы (те же href `/c/:id` и `/c/:cid/e/:eid`, что в списке). Результаты без +координат не рисуются — счётчик «Без адреса: N». При активном гео-фильтре — точка центра +и круг радиуса. Тайлы OpenFreeMap (MapLibre GL, без ключа); компонент карты — lazy-chunk. + ### 5.4. Календари - Список своих: `GET /v1/calendars` - CRUD: `POST/PUT/DELETE /v1/calendars`, `GET /v1/calendars/:id` (`following`, `booking_open`)