ДЕМО Что сделано, замеры 500 тыс. и 10 млн, архитектура Открыть отчёт →
+7 (831) 414-29-83 Пн–Сб 9:00–18:00
статус проекта · демо работает

Интернет-магазин запчастей Б/У:
что уже сделано

Каталог, импорт прайсов, наценки, автовыгрузка, заказы и админка. Ниже — проверки, замеры на 500 тыс. и 10 млн, архитектура и ответ про фотографии.

250 004позиций в демо
54 855из реальных прайсов
39 / 361марок / моделей
30групп запчастей
готово

Что уже работает

Проверено на демо-стенде и локальных тестах.

01Каталог и поиск

Марка → модель → группа, алфавит А–Я, фильтры, сортировка по цене, подсказки в шапке.

02Импорт прайсов

CSV, XLSX и XML разных структур. Автоопределение кодировки, колонок, предпросмотр и запуск в фоне.

03Наценки и автовыгрузка

Процент, фикс, округление, правила для групп и марок. Расписание по ссылке с проверкой изменений.

04Обучение рубрикатора

Позиции из «Прочее» размечаются один раз, правило запоминается для следующих импортов.

05Магазин

Карточка товара, корзина, заказ без регистрации, регистрация, история заказов, заявки на подбор.

06SEO и фото

ЧПУ, sitemap, JSON-LD, canonical, robots. Фото поставщиков через прокси в WebP и кэш.

проверки и скорость

Что показали тесты

Каталог по марке/модели/группе укладывается в миллисекунды. Поиск — отдельная история, ниже честные цифры.

500 тыс. позиций целевой объём

Страница марки / модели0,2–0,8 мс
Поиск по одному слову: подсчёт54 мс
Поиск по одному слову: топ-240,7 мс
Фасеты марок28 мс
Полнотекстовый поиск с рангом486 мс

Замеры PostgreSQL на отдельной таблице 500 000 строк, те же индексы и запросы, что в каталоге.

10 млн позиций крайний случай

Страница марки / модели0,3–0,8 мс
Keyset-пагинация0,26 мс
Группы модели0,68 мс
Фасеты марок723 мс
Поиск «бампер», топ-247,1 с

7,1 с — это отдельный локальный тест на 10 млн, не демо-стенд. На 10 млн поиск по частым словам выносится в Meilisearch; на 500 тыс. PostgreSQL достаточно.

Импорт CSV4 строки · 4 вставлено · 0 ошибок
Импорт XLSX2 строки · 2 вставлено · 0 ошибок
Импорт XML2 строки · 2 вставлено · 0 ошибок
Повторный импортобновление без дублей
Заказ и регистрациязаказ создан, привязан к аккаунту
ФотоWebP 400×533 · 26 КБ
Sitemap13 шардов · 250 тыс. товаров
Автовыгрузказапуск по расписанию сработал
архитектура

Как это устроено

Без платных CMS и лицензий: Go, PostgreSQL, S3/CDN для фото.

ВитринаСерверный HTML, CSS и немного JS. Быстро для людей и поисковых роботов, без тяжёлого SPA.
ДанныеPostgreSQL 16: товары, справочники, импорт, заказы. Индексы под марку, модель, группу и поиск. Счётчики вместо COUNT(*) на каждый заход.
ИмпортПотоковое чтение, батчи по 500 строк, COPY + upsert. 100 поставщиков можно ставить в очередь и запускать ночью.
Рост до 10 млнПартиционирование PostgreSQL, Meilisearch/OpenSearch для поиска, S3 + CDN для фото, keyset-пагинация.
SEOЧПУ, canonical, sitemap-индексы, JSON-LD, robots. Демо можно закрыть от индексации одной переменной.
Главная магазина
Витрина
Конструктор импорта
Конструктор импорта
Админка
Админка
фотографии

Почему сейчас заглушки и что будет с реальными фото

В демо 54 855 позиций из реальных прайсов — у них есть ссылки на фото поставщиков. Ещё 195 149 позиций синтетические, для проверки нагрузки; у них фото нет, поэтому показывается заглушка.

Реальное фото уже работает: прокси скачивает его у поставщика, режет под ширину, конвертирует в WebP и кладёт в кэш. Повторно отдаётся с диска.

  • В карточках — 400 px, lazy loading, WebP 20–40 КБ.
  • В карточке товара — до 900 px, кэш immutable.
  • Оригиналы на сервере не хранятся: только ссылка и превью в кэше.
  • В продакшене перед сервером ставится S3 + CDN; сервер не тратит диск на все 2,5 млн фото.
Реальное фото поставщика
Реальное фото поставщика → WebP
Заглушка
Заглушка для синтетики
Скорость: 24 карточки на странице, фото ленивые и параллельные. При 500 тыс. тормозит не количество фото, а размер и число запросов; поэтому превью маленькие, кэш на диске и CDN в продакшене.
следующие шаги

Что предлагаю дальше

1. Согласовать бренд и контактыНазвание, телефоны, адрес, домен, реквизиты.
2. Перенести реальные прайсыНастроить профили поставщиков, наценки и расписание.
3. Поднять сервер под 500 тыс.Отдельный PostgreSQL и бэкапы. Для 10 млн — запас по архитектуре.
4. Добавить парсеры и оплатуПриоритетные сайты без выгрузки и платёжный провайдер.

Админ-доступ и руководство администратора передаются отдельно в чате Kwork. На этой странице нет паролей.

подбор детали

Не нашли нужную запчасть?

Оставьте заявку: подберём деталь по VIN, артикулу или названию и вернёмся с ценой и фото.

Проверка перед отправкойОтвет в течение рабочего дняОтправка по России
Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности.