Appearance
Address autocomplete
GET
/store/geo/suggest
DEV-387 / ADR-016 — autocomplete адресов на базе Meilisearch (primary)
- DaData Suggestions free-tier fallback (decorator под feature flag
geo.dadata_fallback). Closes 50/50 gold-set top-3 при flag enabled;
48/50 baseline (2 heavy-typo queries — known limitations).
Rate limited через Nginx (~30 req/min per IP) — premortem H-004.
Empty result UX (frontend, DEV-402): при пустом data UI показывает
hint «попробуйте другое написание» + ручной ввод адреса.
Pipeline (см. ADR-016 §Архитектура):
suggest_normalize(q)SQL function (lower + unaccent + ё→е)- Mix-script Unicode confusables normalization (DEV-386)
- Synonyms expansion via
geo-synonyms.yaml - Meilisearch search
- Если 0 hits и flag enabled → DaData Suggestions (free tier)
Parameters
Query Parameters
q*
Search query. Examples: "Невский 1", "СПб", "Москва ул. Ленина".
Поддерживает сокращения (ул./пр-кт/мкр/б-р/р-н/пл./пер./ш./наб.) и
colloquial city names (Питер, Мск, Ёбург) через geo-synonyms.yaml.
Type
Requiredstring
Min Length
1Max Length
200city_id
Optional scoping to specific city. Strongly recommended для
queries без явного указания города (улицы/дома) — иначе collision
risk на 89 регионах (premortem H-003 в DEV-430 spike).
Closes 4 city-query fails из gold-set при правильном применении.
Type
integer
limit
Max number of suggestions (default 10, max 20)
Type
integer
Minimum
1Maximum
20Default
10Responses
List of address suggestions (top-N, sorted by relevance)
application/json
JSON "data": [ { "address_id": "string", "value": "string", "level": "string", "highlights": [ "string" ], "score": 0, "source": "string" } ]
{
}