28563d0692
Каталог перестроен из плоского (19×~100) в ДЕРЕВО реального рубрикатора 2ГИС: 19 разделов → 1522 листа, глубина 3 (раздел → ниша/группа → узкая рубрика). Тот самый «3-й эшелон» за кнопкой «Ещё» 2ГИС (закрыт открытый вопрос §6.7g). - tools/crawl_rubricator.py — краулер рубрикатора через xfetch (кэш, отсечка глобального меню 19 разделов, «Ещё» = отдельная группа). Данные заморожены в salesfinder/rubricator.json (кэш rub_cache/ и *_raw.json в git НЕ идут). - rubrics.py переписан на дерево: build_catalog+slug, queries_for(leaf)=[query] (группа не ищется — поиск только по конечному листу), _LEGACY_LABELS для русских подписей старых списков. - web/ui.py: адаптивный каскад — списки всплывают по мере надобности; лист уходит как rubric, кнопка заблокирована пока не выбран лист. - Живьём: глубокий лист «Пластическая хирургия» → 12 клиник из 2ГИС. 223 теста. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>