Skip to content

Category Reorganization: Avito Hierarchy Import

Date: 2026-02-25 Status: Approved

Goal

Replace current flat 2-level part categories (12 parents + 82 children) with the full Avito "zapchasti" hierarchy from docs/addons/avito_zapchasti_categories.json. Preserve existing child categories under matched parents. Update all product references.

Current State (dev DB)

  • 12 parent categories (category_type=part, parent_id=NULL)
  • 82 child categories under those parents
  • 40 children have products assigned (~50 test products)
  • Tables affected: categories, product_categories, products.primary_category_id

Current Parents (all match Avito "Для автомобилей" children)

idname
1Двигатель
12Трансмиссия и привод
21Подвеска
30Тормозная система
37Электрооборудование
46Кузов
56Автосвет
62Салон
71Система охлаждения
77Выхлопная система
83Рулевое управление
89Топливная система

Target State

Full Avito hierarchy (up to 4 levels):

L1: Запчасти, Аксессуары, GPS-навигаторы, Масла и автохимия,
    Аудио- и видеотехника, Багажники и фаркопы, Инструменты,
    Прицепы, Противоугонные устройства, Шины/диски/колёса, Экипировка

L2 (under Запчасти): Для автомобилей, Для мототехники,
    Для водного транспорта, Для грузовиков и спецтехники

L3 (under Для автомобилей): Двигатель*, Кузов*, Подвеска*,
    Тормозная система*, Электрооборудование*, Автосвет*,
    Салон*, Система охлаждения*, Выхлопная система*,
    Рулевое управление*, Топливная система*,
    Трансмиссия и привод*, Стёкла, Автомобиль на запчасти, Аккумуляторы

L4 (under matched parents): Existing 82 child categories preserved

* = matched with current parent, children migrated

Algorithm

  1. Insert full Avito hierarchy as new category_type=part records
  2. Match 12 current parents by name to Avito "Для автомобилей" children
  3. Update 82 children: set parent_id to new Avito-matched parent ID
  4. Update product_categories.category_id via old→new mapping
  5. Update products.primary_category_id via old→new mapping
  6. Delete 12 old parent records (replaced by Avito nodes)
  7. Update SeedReferenceDataCommand to match new structure

Implementation

Single Doctrine migration + updated seed command.

Name Matching Map

Current nameAvito path
ДвигательЗапчасти > Для автомобилей > Двигатель
Трансмиссия и приводЗапчасти > Для автомобилей > Трансмиссия и привод
ПодвескаЗапчасти > Для автомобилей > Подвеска
Тормозная системаЗапчасти > Для автомобилей > Тормозная система
ЭлектрооборудованиеЗапчасти > Для автомобилей > Электрооборудование
КузовЗапчасти > Для автомобилей > Кузов
АвтосветЗапчасти > Для автомобилей > Автосвет
СалонЗапчасти > Для автомобилей > Салон
Система охлажденияЗапчасти > Для автомобилей > Система охлаждения
Выхлопная системаЗапчасти > Для автомобилей > Выхлопная система
Рулевое управлениеЗапчасти > Для автомобилей > Рулевое управление
Топливная системаЗапчасти > Для автомобилей > Топливная система