Люкс · ETL
Интеграция каталога и стоков для Luxclusif — ETL-конвейер под витрины партнёров.
LUX забирает остатки напрямую у Luxclusif, мапит их в таксономию каждого партнёра и по расписанию отдаёт CSV, готовые для Matrixify — без ручных таблиц между поставщиком и магазинами Shopify.
- CSV-экспорты
- Авто
- таксономия магазинов
- Мульти
- ручных шагов
- 0
Контекст и задача
Зоопарка источников здесь нет — входящий поток один, Luxclusif. Сложность в другом: у каждого партнёра своя таксономия, словари категорий/брендов/цвета/размера, правила округления, налоговая и ценовая политика, своя раскладка колонок CSV.
Собрали конфигурируемый пайплайн: один вход даёт много целевых представлений, каждое жёстко под Matrixify-схему конкретного магазина. Ключевое решение — двухфазный релиз: все трансформации сначала в драфт, проходят валидацию и сверку, затем атомарно коммитятся в финальный релиз с неизменяемой версией.
Технологический фундамент
Ядро — нативный Go без тяжёлых фреймворков сверху: низкая латентность, минимум накладных расходов, точный контроль потока данных. Параллелизм через горутины и каналы: стадии пайплайна идут параллельно и не блокируют критический путь.
Хранение — обычный SQL с явными транзакциями на стадиях драфт → релиз: атомарность и согласованность. Когда партнёру нужно сменить версию CSV за один тик, двойная буферизация держит старую версию живой, пока новая атомарно не станет активной.
От Luxclusif к таксономии партнёра
Поток начинается с забора актуального каталога Luxclusif по расписанию и снимка в staging. Дельты считаем без агрессивной инвалидации: драфт собирается как полная целевая таблица, затем накладываются правила трансформации.
Трансформы делятся на шаблонные и AI-assisted. Шаблоны закрывают предсказуемые маппинги (семейства категорий, бренды, суффиксы названий, шаблоны размеров). AI-матчер, обученный на реальных примерах, закрывает дыры, которые ручные правила неизбежно оставляют.
Каждое поле карточки — категория, тип, материал, размер, цвет, бренд, теги — нормализуется в словарь партнёра. Непокрытые случаи уходят в отчёт и никогда не ломают релиз.
Цены, налоги и валюты
Ценообразование сидит в той же транзакционной границе. Исходные цены Luxclusif проходят через настраиваемые правила: проценты налога, комиссии, наценки/скидки, конвертация валют и округление в формате, который принимает Matrixify.
Расчёты детерминированы: одинаковый вход и конфиг всегда дают одинаковый выход. Смена политики — новая версия правил и безопасный перерелиз. Тихого дрифта нет, любой исторический релиз можно собрать заново по запросу.
Медиа и AI для визуальной согласованности
Картинки проходят через AI-детект цвета фона и доминирующего оттенка — нужно, когда витрина партнёра требует жёстких меток фона (чисто белый vs тёплый белый) или когда цвет гоняет фильтры и виджеты.
Проверяем доступность ссылок, помечаем подозрительные рамки/паддинги, нормализуем форматы и метаданные. Посчитанные атрибуты ложатся в отдельные колонки CSV — командам Shopify не нужно ничего допиливать.
Драфты, cron и релизы без простоя
Релиз — двухфазная транзакция. Драфт собирает полное представление партнёра, гоняет валидацию схемы и контрольные суммы, отдаёт отчёт по каждой правке и её причине. После проверок релиз атомарно переключает активную версию.
Cron оркестрирует заборы по расписанию, трансформы, драфт, релиз и публикацию артефактов. Два поколения релиза всегда доступны: откат или повторная проверка не блокируют импорт партнёра.
CSV как контракт, Matrixify как потребитель
CSV — формат контракта: Matrixify его стабильно ест, бизнес может глазами проверить содержимое. У каждой таблицы фиксированная схема: стабильный порядок колонок, гарантированные типы, строгие заголовки, предсказуемые кодировки.
Строки, которые ломают таксономию, получают причину исключения и уходят в отчёт; в релизный CSV попадают только валидные — одна плохая запись не валит ночной импорт.
Параллелизм, производительность и стабильность
Пайплайн сидит на горутинах Go и воркерах через каналы. Тяжёлые стадии батчатся по индексам БД — большие объёмы без просадки памяти. Дельты считаются на уровне строки и поля; финальный релиз собирается из нормализованной правды, а не слепой полной перезагрузкой.
Идемпотентность: повтор на неизменном входе даёт бит-в-бит тот же CSV. Батчевые checksum сразу показывают расхождение драфта и релиза.
Безопасность, версии и аудит
Секреты и параметры публикации живут в environment/secret storage. Направления загрузки получают минимальный скоуп. У релизов неизменяемые version ID.
Логи ведут каждую строку по стадиям и фиксируют причины автоправок. Спорные случаи собираются заново из снимков драфта теми же правилами — проще разговаривать с Luxclusif и партнёрами.
Наблюдаемость и алерты Shopify Flow
Метрики пайплайна: латентность стадий, доля поправленных строк, причины исключений, латентность публикации. На стороне Shopify Flow срабатывает на покупки и заказы по SKU из наших релизов — видно, как новые таксономии и ценовые правила ведут себя в проде.
Сигналы уходят в алерты Telegram/email и дашборды, где спрос можно сравнить с разбросом цен, ошибками импорта и исключениями. Всплеск аномалии (например, отмены в одной категории) быстро указывает на правило, которое надо поправить, и перерелиз уходит без остановки магазинов.
Что получает бизнес
Партнёры получают стабильные CSV-таблицы по расписанию — готовые для Matrixify, смапленные в их таксономию, с посчитанным налогом/ценой и AI-полями вроде цвета фона картинки.
Luxclusif получает предсказуемый, транзакционный, масштабируемый процесс: драфты и релизы атомарно разделены, повторы бит-в-бит идентичны. Любое изменение в источнике доходит до полок партнёров быстро, безопасно и детерминированно — прозрачно, аудируемо, по правилам, которые можно менять, не останавливая поток.
Технологии
- Go
- SQL
- Postgres
- Qwen AI API
Результаты
- +100% быстрее новые интеграции
- Простые алерты, по которым можно действовать
- Автоматизация процесса от края до края
Статьи по теме
Блог
Сначала evals, потом промпты
Зачем гоняем регрессию LLM-выходов перед каждым релизом — и как это сменило ритм AI-поставки в ZNN.
Блог
Зачем нужен скучный веб-стек
TypeScript, Postgres и edge-деплой не впечатляют — зато на третий год вы всё ещё быстро итерируете, не переписывая платформу.
Блог
Мобильные релиз-трейны, которые не ломаются
Fastlane, поэтапные раскатки и фичефлаги — практический плейбук после восемнадцати сабмитов в App Store без пятничного отката.
Кейсы по теме
Fashion · Данные
Глобальный fashion-производитель
У крупного производителя одежды не было единого источника правды: Amazon, Zalando, свой D2C и опт говорили на разных схемах. Собрали управляемый слой данных — финансы и ops наконец видят, что откуда пришло.
Люкс · Shopify
Her-Age
Пересобрали потоки данных, обновили deprecated-эндпоинты и прояснили UX статусов: эксперты, продавцы и покупатели идут по одному прозрачному пути от проверки до цифрового паспорта.
E-commerce · Автоматизация
Reflaunt
На Shopify Flow и кастомных флоу: партнёрский сток оценивается автоматически и уходит в публикацию, синк канала Reflaunt, карантин на ручную проверку или снятие с витрины.