Nginx
TLS, маршрутизация UI/API, лимит тела фида до 512 МБ.
Индексация дорогая и редкая. Выдача — из готового inverted index. Поэтому на 500 000 SKU ответ остаётся в десятках миллисекунд.
Витрина не ходит в CSV. Hot-path — только FastAPI и Meilisearch.
TLS, маршрутизация UI/API, лимит тела фида до 512 МБ.
Auth по ключу, классификатор kids/zoo, оркестрация индексации.
Inverted index, typo-tolerance, синонимы, фасеты, ранжирование.
Только tenants и feed jobs. Не участвует в выдаче товаров.
Витрина шлёт GET /v1/search с X-API-Key. CSV на этом пути не читается.
API находит tenant и за доли мс определяет kids / zoo.
Lookup по inverted index: токены → posting lists → ранжирование → фасеты.
Hits, facets, image_url, response_time_ms и processing_time_ms.
POST /v1/feeds/upload пишет файл потоком по 1 МБ.delete_all_documents.POST /v1/feeds/{id}/reindex.Оценка для текущего демо: 1× uvicorn + 1× Meilisearch, 500k SKU, shared VPS. Это ориентир по latency, не финальный load-test отчёт.
POST /v1/feeds/uploadЗагрузка фида и автозапуск индексации
GET /v1/feeds/{job_id}Статус: pending → processing → completed
POST /v1/feeds/{job_id}/reindexПовторная индексация без нового файла
GET /v1/searchПоиск, фасеты, картинки, latency
GET /v1/suggestТекстовый и товарный саджест
GET /v1/classifyНаправление kids / zoo / unknown
Демо-ключ для Authorize: detmir-demo-key-2026