Обзор проекта
Проект parts-catalogs.com — интеграция внешних сервисов данных об автозапчастях (вендор Tradesoft / Parts.Index) и построение на их основе инструментов для бизнеса.
Что строим
Два взаимосвязанных направления:
- Интеграционный слой к внешним REST API (FastAPI, прокси-фасад + кэш).
- Админка сопоставления артикулов — оператор вставляет список артикулов и получает Excel с габаритами, весом, применимостью по авто и кросс-номерами.
Дополнительно реализован поиск авто по VIN/FRAME (источник Parts-Catalogs, роуты /oem/*, страница /vin) — отдельный поток от сопоставления артикулов. Функция рабочая, но пункт «Поиск по VIN» временно скрыт из меню (и у оператора, и у админа): страница доступна только по прямой ссылке /vin. Чтобы вернуть пункт — раскомментировать router-link в frontend/src/App.vue.
Два внешних API
У вендора два разных API с разными базовыми URL, scope и ключами — их важно не путать:
| API | Base URL | Что даёт | Для чего |
|---|---|---|---|
| Parts-Catalogs | api.parts-catalogs.com/v1 | OEM-каталоги, схемы деталей, поиск по VIN/FRAME | каталог оригинальных запчастей |
| PartsIndex | api.parts-index.com/v1 | по артикулу: размеры, вес, аналоги, применимость | обогащение артикулов (админка) |
Подробнее о разнице, ключах и лимитах — на странице Два API и тестовый ключ.
Ключевые цифры (parts-catalogs, лендинг)
| Показатель | Значение |
|---|---|
| Марок | 101 (легковые + грузовые, есть китайские каталоги) |
| Моделей | 3 560 |
| Модификаций | ~3,9 млн |
| Запчастей | ~25 млн |
Как работает админка
Оператор вставляет список артикулов (от 1 до 5000 строк, по одному в строке или списком) → система запрашивает данные в PartsIndex → строит таблицу и Excel. Большие задания обрабатываются батчами с контролем памяти воркера.
Столбцы результата: Артикул · Ширина · Длина · Высота · Вес · Марки и модели применимости · Кросс-номера · Бренд · Название · Штрихкод · Статус · Примечание · Источник. Габариты берутся из параметров упаковки детали, применимость — из списка авто, кроссы — из связей (аналоги). Каждая строка подписана источником данных (сейчас — «Parts.Index · Информация о детали»).
Ключевое поведение:
- Политика бренда — что делать, если у артикула несколько брендов: первый подходящий / указывает оператор (бренд через запятую после артикула) / все варианты (первый + пометка о количестве). Подробнее — Работа с админкой.
- Дубли повторяющихся артикулов обрабатываются один раз (экономия квоты) и не выводятся в итоговую таблицу и Excel.
- Применимость выводится нумерованным списком — по одной модели на строку («марка модель двигатель (годы)»); пустые свойства помечаются «Свойство не заполнено». Подробнее — Работа с админкой.
- Ненайденные артикулы подсвечиваются статусом и остаются в таблице с причиной.
- Режимы PartsIndex:
live(боевой),mock/replay(демо-данные без запросов),record(запись фикстур).
Статус
Система работает на боевых данных PartsIndex (live). Составлена документация по обоим API и ТЗ на админку; готов пакет автоустановки на Ubuntu (deploy/). Первоисточники (OpenAPI-спецификации, выгрузки) — в репозитории в docs/api/.
Сеть
Ключ PartsIndex привязан к IP-whitelist. Запросы к API должны выходить с whitelisted-IP (85.175.98.244) в обход VPN — иначе 403. См. Два API и тестовый ключ.