docs(geo): канон переведён на внешний геокодер OpenCage
Стек/Ops/контракт: OpenCage API через прокси бэкенда, ключ не покидает сервер; source=opencage; free-тариф 2500 запросов/сутки и 1 rps, 402/403/429 апстрима -> 503 geo_unavailable; ToS разрешает хранение результатов. Self-host Photon исключён из стека. Refs EventHub/EventHubSpec#21
This commit is contained in:
+3
-3
@@ -271,7 +271,7 @@ Legacy: прямой `POST /v1/calendars/:id/specialists` **не использ
|
||||
cold = gzip-файлы. Контракт: [`ARCHIVE.md`](ARCHIVE.md). Код: Back#76.
|
||||
|
||||
#### Фаза 3 / гео (Spec#19, канон Spec#21)
|
||||
- Стек: свой Photon + MapLibre/OpenFreeMap; Google/Яндекс **не** провайдеры
|
||||
- Стек: OpenCage (внешний API, прокси через бэк) + MapLibre/OpenFreeMap; Google/Яндекс **не** провайдеры
|
||||
(только outbound-ссылки с карточки). Контракт: [`GEO.md`](GEO.md). Код: Back#77.
|
||||
|
||||
### 2.1.3. Share / приглашения (соредактор и заместитель)
|
||||
@@ -625,9 +625,9 @@ src/
|
||||
**не** входит в контракт: поле URL.
|
||||
Гео: `lat`+`lon` (и опциональный `radius` 1..100) — ближайшие события и календари;
|
||||
`sort=distance`; в элементах `distance_km` ([GEO.md](GEO.md)).
|
||||
- `GET /v1/geo/suggest` — typeahead адреса (Photon); **без токена** + IP rate-limit.
|
||||
- `GET /v1/geo/suggest` — typeahead адреса (OpenCage); **без токена** + 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`.
|
||||
- `POST /v1/geo/reverse` — `{lat, lon, lang?}` (Bearer). OpenCage недоступен/квота → `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