Распознавание марки и модели ТС
Распознавание в наименовании ТС марки, модели и остатка наименования без марки — чистый алгоритм без построения групп и фильтрации справочника по нормам.
1. Назначение
Алгоритм отвечает только за разбор строки наименования ТС (Транспортное средство, «Марка и модель базы ТС»): какая марка и какая модель распознаны и какая часть строки осталась после удаления марки.
Он не строит базовую группу, не фильтрует модификации по нормам и топливу и не решает, что делать с пустым результатом — это ответственность вызывающих процедур:
- автоподбор группы модификаций — Подбор группы модификаций ТС;
- установка маски в окне подбора — Окно подбора модификаций;
- предложение марки и модели в карточке модификации — Карточка модификации ТС.
2. Нормализация сравнений
Все сравнения идут по нормализованному ключу: нижний регистр, ё → е,
транслитерация кириллицы в латиницу, удаление всех небуквенно-цифровых символов.
Токены — части строки после разделителей длиной от 2 символов.
3. Распознавание марки
DetectBrand(name) — каноническая марка по мастер-списку марок (drom +
постановление + доменный список) с алиасами
(Алиас марки ТС). Ключи
проверяются от длинных к коротким; результат — первое совпадение:
- для любого ключа — равенство токену;
- цифровой ключ — только равенство токену, без префиксов и подстрок;
- ключ длиной ≥ 3 — токен начинается с ключа;
- ключ длиной ≥ 4 — ключ входит в нормализованное имя целиком.
Если совпадений нет — пустая строка.
DetectBrandIn(rows, name) — марка только из справочника вида ТС. Сначала
берётся DetectBrand(name); результат принимается, если такая марка есть среди марок
строк rows. Если каноническая марка в группе не найдена, повторно ищется самая
длинная марка среди марок rows по тем же критериям совпадения. Итог всегда — марка
из справочника вида ТС, поэтому омонимы мастер-списка не подставляются: например,
«Genesis» в «HYUNDAI GENESIS», где в справочнике это модель Hyundai.
Мастер-список марок — справочник Марка ТС (наименование), алиасы — связанные записи Алиас марки ТС: токен сопоставляется либо с наименованием марки, либо с алиасом любой её связанной записи.
4. Распознавание модели
DetectModel(rows, name) — среди моделей строк rows
(Модель ТС) выбирается
модель с самым длинным нормализованным наименованием (от 2 символов), которое целиком
входит в нормализованное имя ТС. Если ни одна не входит — пустая строка.
5. Остаток наименования ТС
BuildNameRemainder(name) — часть строки «Марка и модель базы ТС» после удаления
марки: строка разбивается на токены, из них удаляются токены, являющиеся ключами марок
мастер-списка, оставшиеся токены (от 2 символов) склеиваются через пробел.
Это не отдельное поле ТС и не «модификация»: остаток — рабочий текст для поиска. Вызывающие используют его по-разному:
- автоподбор и маска — как подстроку для фильтра по полному наименованию модификации (когда модель не распознана);
- карточка модификации — как предложение в поле «Модель».
Источник строки — «Марка и модель базы ТС». Использовать ли для спецтехники ещё и «Модель спец. автомобиля» — открытый вопрос OQ_ModificationSelection.
Структурные связи
Использует
- Доменная сущность Алиас марки ТС
- Доменная сущность Марка ТС
- Доменная сущность Модель ТС
- Доменная сущность Транспортное средство
Используется
- Запрос на изменение Алиасы марки ТС отдельной сущностью, типовой механизм справочников
- Запрос на изменение Независимость маски и отбора в окне подбора модификаций
- Прикладной сервис Подбор группы модификаций ТС
- Экран Карточка модификации ТС
- Экран Карточка транспортного средства
- Экран Окно подбора модификаций
- Epic Расчёт нормативного расхода топлива
- Use Case Создание модификации ТС из карточки ТС
Связанные артефакты
Документы
- Доменная сущность Алиас марки ТС
- Доменная сущность Марка ТС
- Доменная сущность Модель ТС
- Доменная сущность Транспортное средство
- Прикладной сервис Подбор группы модификаций ТС
- Экран Карточка модификации ТС
- Экран Окно подбора модификаций