Фаза 3 / волна 2: канон гео и карт (OSM / Photon) #21

Closed
opened 2026-08-16 23:38:35 +03:00 by cursor-ai · 3 comments
Owner

Проблема

В продукте есть address / lat / lon и радиусный search по событиям, но нет контракта на геокодирование, провайдеров карт и UX пикера. Google/Яндекс как геокодеры не подходят: нельзя хранить общие координаты события.

Влияние

Front/Back/Ops расходились бы по ключам и CSP; Discover «рядом» оставался ручным вводом чисел; календари в geo-поиске не участвовали.

Ожидаемый результат

Канон GEO.md (вариант Ц):

  • MapLibre + OpenFreeMap (тайлы); свой Photon (геокод); ключей Google/Яндекс нет
  • GET /v1/geo/suggest, POST /v1/geo/geocode, POST /v1/geo/reverse
  • UX: address picker + пин; мини-карта; outbound-ссылки Google/Яндекс/OSM на наши lat/lon
  • Discover: ближайшие календари и события; центр — GPS или адрес; радиус опционален (пресеты)
  • Degrade без Photon (не падает create event); address-only разрешён
  • Non-goals волны 2

Критерии приёмки

  • Раздел в BackSpec/FrontSpec + GEO.md; ссылка из Spec#19
  • Явно: OSM/Photon; IFT/stage без ключей карт; Photon в compose
  • Non-goals: turn-by-turn, трекинг, map-first Discover, свой tile-server, публичный Nominatim
  • Ссылки на DevOps#16 / Back#77 / Front#74

Реализация — в дочерних Stories, не в этой задаче.

Связь

Родитель: #19
Волна: 2 (гео)
Вариант: Ц (свой Photon)

Приоритет

P1

## Проблема В продукте есть `address` / `lat` / `lon` и радиусный search по событиям, но нет контракта на геокодирование, провайдеров карт и UX пикера. Google/Яндекс как геокодеры не подходят: нельзя хранить общие координаты события. ## Влияние Front/Back/Ops расходились бы по ключам и CSP; Discover «рядом» оставался ручным вводом чисел; календари в geo-поиске не участвовали. ## Ожидаемый результат Канон [`GEO.md`](https://git.sabilin.com/EventHub/EventHubSpec/src/branch/master/GEO.md) (вариант Ц): - MapLibre + OpenFreeMap (тайлы); свой Photon (геокод); ключей Google/Яндекс нет - `GET /v1/geo/suggest`, `POST /v1/geo/geocode`, `POST /v1/geo/reverse` - UX: address picker + пин; мини-карта; outbound-ссылки Google/Яндекс/OSM на наши lat/lon - Discover: ближайшие календари и события; центр — GPS или адрес; радиус опционален (пресеты) - Degrade без Photon (не падает create event); address-only разрешён - Non-goals волны 2 ## Критерии приёмки - [x] Раздел в BackSpec/FrontSpec + [`GEO.md`](https://git.sabilin.com/EventHub/EventHubSpec/src/branch/master/GEO.md); ссылка из Spec#19 - [x] Явно: OSM/Photon; IFT/stage без ключей карт; Photon в compose - [x] Non-goals: turn-by-turn, трекинг, map-first Discover, свой tile-server, публичный Nominatim - [x] Ссылки на DevOps#16 / Back#77 / Front#74 Реализация — в дочерних Stories, не в этой задаче. ## Связь Родитель: https://git.sabilin.com/EventHub/EventHubSpec/issues/19 Волна: 2 (гео) Вариант: Ц (свой Photon) ## Приоритет P1
cursor-ai added the Story label 2026-08-16 23:38:35 +03:00
cursor-ai self-assigned this 2026-08-16 23:38:35 +03:00
Author
Owner

Беру в работу.

Выбран вариант Ц: MapLibre + OpenFreeMap (тайлы) + свой Photon (геокод). Google/Яндекс JS API и геокодер не используем — их ToS не позволяют хранить общие lat/lon события.

Google/Яндекс остаются только как outbound-ссылки с карточки на наши координаты.

Канон: GEO.md. Реализация — Back#77, Front#74, DevOps#16.

Беру в работу. Выбран вариант Ц: MapLibre + OpenFreeMap (тайлы) + свой Photon (геокод). Google/Яндекс JS API и геокодер не используем — их ToS не позволяют хранить общие lat/lon события. Google/Яндекс остаются только как outbound-ссылки с карточки на наши координаты. Канон: GEO.md. Реализация — Back#77, Front#74, DevOps#16.
cursor-ai changed title from Фаза 3 / волна 2: канон гео и карт (Google + Яндекс РФ) to Фаза 3 / волна 2: канон гео и карт (OSM / Photon) 2026-08-17 22:36:35 +03:00
Author
Owner

Канон записан в GEO.md (вариант Ц).

Дополнение: поиск ближайших календарей и событий — тот же GET /v1/search; радиус опционален (пресеты 1/5/10/25/50 или без лимита); центр — GPS или адрес; календари по default_location; в ответе distance_km.

Дочерние задачи обновлены под OSM/Photon.

Канон записан в GEO.md (вариант Ц). Дополнение: поиск ближайших календарей и событий — тот же GET /v1/search; радиус опционален (пресеты 1/5/10/25/50 или без лимита); центр — GPS или адрес; календари по default_location; в ответе distance_km. Дочерние задачи обновлены под OSM/Photon.
Author
Owner

Канон GEO.md в master (вариант Ц, с корректировкой: геокодер OpenCage через Back-прокси вместо self-host Photon — см. коммиты Back 73d43e5 и DevOps 9c0f75b). Все дочерние Stories волны 2 закрыты: DevOps#16, Back#77, Front#74. Ссылки из README, FrontSpec, BackSpec. Закрываю.

Канон GEO.md в master (вариант Ц, с корректировкой: геокодер OpenCage через Back-прокси вместо self-host Photon — см. коммиты Back 73d43e5 и DevOps 9c0f75b). Все дочерние Stories волны 2 закрыты: DevOps#16, Back#77, Front#74. Ссылки из README, FrontSpec, BackSpec. Закрываю.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: EventHub/EventHubSpec#21