docs(geo): OSM/Photon canon; stage without Photon. Refs EventHub/EventHubSpec#21
This commit is contained in:
+16
-1
@@ -270,6 +270,10 @@ Legacy: прямой `POST /v1/calendars/:id/specialists` **не использ
|
||||
- История календаря: hot = текущий месяц + будущее; warm = 3 закрытых месяца;
|
||||
cold = gzip-файлы. Контракт: [`ARCHIVE.md`](ARCHIVE.md). Код: Back#76.
|
||||
|
||||
#### Фаза 3 / гео (Spec#19, канон Spec#21)
|
||||
- Стек: свой Photon + MapLibre/OpenFreeMap; Google/Яндекс **не** провайдеры
|
||||
(только outbound-ссылки с карточки). Контракт: [`GEO.md`](GEO.md). Код: Back#77.
|
||||
|
||||
### 2.1.3. Share / приглашения (соредактор и заместитель)
|
||||
|
||||
Таблица `calendar_share` (`id`, `calendar_id`, `user_id`, `rights`: `read` | `write` | `admin`,
|
||||
@@ -401,11 +405,17 @@ API:
|
||||
- Полнотекстовый поиск по названиям событий, календарей, тегам (при наличии `q` или любого
|
||||
фильтра из списка выше).
|
||||
- Фильтрация по дате, категории, местоположению, рейтингу.
|
||||
- **Гео (волна 2, [GEO.md](GEO.md)):** `lat`+`lon` выключают discovery-tops. События —
|
||||
по `event.location`; commercial-календари — по `settings.default_location`.
|
||||
`radius` **опционален** (1..100 км); без ключа — без отсечения, сортировка `distance`.
|
||||
В ответе `distance_km`. Без координат сущность в geo-выборку не входит.
|
||||
- Пагинация результатов (`limit`, `offset`; default `limit=20`, max `100`).
|
||||
- Поиск должен учитывать права доступа (не показывать скрытые/заблокированные календари).
|
||||
|
||||
### 2.6. Расширенные возможности
|
||||
- Локация события (`location` запись с адресом, широтой, долготой).
|
||||
- Локация события (`location` запись с адресом, широтой, долготой). Address-only
|
||||
допустим; lat/lon оба или ни одного. Геокодер: [`GEO.md`](GEO.md)
|
||||
(`GET /v1/geo/suggest`, `POST /v1/geo/geocode`, `POST /v1/geo/reverse`).
|
||||
- Онлайн-ссылка (`online_link`).
|
||||
- Вложения к событию (`attachments`).
|
||||
- История изменений события (`edit_history`).
|
||||
@@ -613,6 +623,11 @@ src/
|
||||
(в т.ч. свои). С Bearer — commercial + доступные; busy для Time Arc берётся из personal отдельно.
|
||||
В calendar-результатах — `image_url` (если задан на календаре). Upload/multipart
|
||||
**не** входит в контракт: поле URL.
|
||||
Гео: `lat`+`lon` (и опциональный `radius` 1..100) — ближайшие события и календари;
|
||||
`sort=distance`; в элементах `distance_km` ([GEO.md](GEO.md)).
|
||||
- `GET /v1/geo/suggest` — typeahead адреса (Photon); **без токена** + IP rate-limit.
|
||||
- `POST /v1/geo/geocode` — `{q, lang?}` → `{address, lat, lon, source}` (Bearer).
|
||||
- `POST /v1/geo/reverse` — `{lat, lon, lang?}` (Bearer). Photon down → `503` `geo_unavailable`.
|
||||
- `GET /v1/calendars` — список календарей (auth): owned ∪ shared (`role`, `share_rights`,
|
||||
`mirror_to_default`).
|
||||
- `POST /v1/calendars` — создать календарь (`commercial` → нужна уже active sub/trial;
|
||||
|
||||
Reference in New Issue
Block a user