НИИСТРОМ Подбор аналогов продукции по характеристикам

Моя роль: Full-Stack Developer / Архитектор бизнес-логики
Технологии: Laravel 11, PHP 8.2, PostgreSQL, Redis.
Разработать систему, которая автоматически подбирает аналоги товаров на основе характеристик, даже если данные приходят в разных форматах и с разными названиями параметров.
Проблемы
Один и тот же параметр мог называться по-разному:
Длина
,Length
,Размер (Д)
Значения были в произвольной форме:
до 10 м
,10m
,около 10.0
Форматы файлов — Excel и CSV от разных поставщиков
Необходима была гибкость и масштабируемость, так как источников — десятки
Что было сделано
Разработал структуру маппинга между характеристиками разных компаний
Создал таблицы соответствий параметров и значений (с поддержкой синонимов, диапазонов, единиц измерения)
Написал парсер Excel/CSV, который:
Автоматически определяет, где идут параметры и значения
Преобразует их в нормализованный JSON-формат
Реализовал в Laravel:
Сравнение параметров на основе маппинга
Обработка чисел через регулярные выражения
Учет допустимых отклонений по числовым значениям
Вывел формулу:
Ввел Redis для кеширования результатов сопоставлений
Учет больших объёмов (десятки тысяч товаров)
Система работает за <200 мс на выборке из 10 000+ товаров
Результат
Визуальное отображение оригинального товара и его аналогов с рейтингом соответствия
Гибкость под любого поставщика — добавляется только маппинг
Ускорение ручной работы в 10 раз+
Основа для дальнейшей интеграции с AI (например, автоматическое извлечение чисел и единиц с помощью LLM)