---
name: avtero_frame_input
description: avtero — определение авто по номеру кузова (JDM frame): что уже работает, гигиена не-VIN ввода v0.7.28, разведанный источник epc-data для авто-декода
metadata:
  node_type: memory
  type: project
  originSessionId: 4eea915e-3b47-4cd5-8a0e-bfa29b78a87c
---

**Frame-путь УЖЕ работает end-to-end (проверено live 2026-07-02):** бот принимает «Марка Модель Год + frame» (`_FRAME_RE = [A-Z]{1,4}\d{1,3}[A-Z]{0,3}-?\d{6,7}`, ask.py) и фото СТС (OCR поля «Кузов №»); TecDoc chassis-резолвер `_resolve_ktypes_by_chassis_sync` (tecdoc_local.py) матчит код кузова по скобкам models.fulldescription — сильнейший no-VIN сигнал. Смоук: `ZVW30-1234567` + confirm Toyota Prius 2012 → масляный 04152-37010 ✓, воздушный 17801-37020 ✓.

**v0.7.28 (`main.py.bak-gateframe-*`):** сайт-гейт больше не пускает не-17-значный ввод в `run()` как `vin` (псевдо-VIN блокировал no-VIN pre-resolve `_vehicle_oe_no_vin` — тот активируется только при `vin==""` — и утекал в autodoc `len>=11`); frame-образная строка мигрирует в поле `frame`. Регресс `tests/test_preflight_frame_vin.py`. Решение D-nonvin-input-hygiene.

**v0.7.30 (2026-07-03) — epc-data ПОДКЛЮЧЁН как genuine-каталог по фрейму (D-genuine-catalog-not-freetext):** `app/scrapers/epc_data.py` — JP-марки (toyota/lexus/nissan/honda/mitsubishi) по номеру кузова. Мини напрямую (RU-IP), браузерный UA+Referer ОБЯЗАТЕЛЕН (иначе 429). Поток: /search_frame/→карточка→группа→фиша→лист(база 5-знач)→под-страница базы `/<fiche>/<base>/`=ПОЛНЫЙ заказной номер (лист даёт только базу! alternator база 27020, полный 27060-70490). `_CAT_TO_FICHE` 11 категорий, резолв до СТРОКИ (шкив→PULLEY→27411-42010), неоднозначный суффикс→честный None (starter/radiator/brake_pads). Вклейка в `_resolve_named_part` после autodoc/emex; write-through live_harvest source='epc_data'. Kia/Hyundai по VIN НЕ подключены («VIN not found»). Тесты `test_epc_data.py` (23), суммарно 998 passed. **Free-text поиск OEM ОТВЕРГНУТ** (эксперимент: 3 разных Kia-номера прошли existence+make — угадывание). 

**Чего НЕТ:** авто-декода frame БЕЗ марки/года (бот отвечает «пришлите VIN/марку-модель-год»). **Источник разведан (для авто-декода):** `epc-data.com` — анонимный бесплатный `GET https://toyota.epc-data.com/search_frame/?frame_no=GXE10-0088644` → 302 на карточку машины (комплектация GXE10W-AWPVK, годы, двигатель, КПП, полное OEM-дерево). С RU-IP работает при браузерном UA (без UA — мгновенный 429). Поддомены: toyota/lexus/nissan/honda/mitsubishi (+hyundai/kia, вариации -europe/-usa/-general). Mazda/Subaru/Suzuki/Daihatsu — japancats.ru. Формат frame: код модели (SV30/ZVW30/GXE10) + серийник; префикс декодируем статикой как VDS (ZVW30→Prius). Внедрение авто-декода — отдельная задача (не начата).

**Нюанс nsis_osago:** `_year_from_vin` слепо читает позицию 10 при len>=10 — немаскированный номер кузова может дать ложный ГОД (в каталоги vin не течёт — бланкуется в run()). Связано [[avtero_named_canonical_gate]] [[avtero_full_coverage_program]].
