AI + RETAIL OPERATIONS
VICTORY Watch ERP
ERP для полного цикла работы с часами: импорт страницы Goofish через Chrome, AI-распознавание модели и состояния, расчёт себестоимости, подготовка фотографий и текстов, публикация на сайт, в Telegram и Avito.

От разрозненных действий — к рабочей системе
Логика кейса: что мешало бизнесу, как мы собрали решение и что изменилось в ежедневной работе.
VICTORY — не ещё одна витрина часов, а единый рабочий контур для закупки и продажи. Система связывает поиск позиции на китайском маркетплейсе, распознавание исходных данных, проверку карточки, экономику, фотографии и публикацию в каналы, где товар увидит покупатель.
Задача: убрать разрывы между закупкой и продажей
Изначально watch-showcase.ru был статическим WordPress-каталогом: товары попадали на сайт из вручную подготовленного XML-файла, фотографии хранились во внешнем облаке, а обновление карточек не было связано с внутренним процессом закупки. Поиск часов на Goofish, перевод китайского объявления, определение модели и reference, расчёт цены, обработка фотографий и подготовка публикаций существовали как отдельные ручные действия.
Нужно было сохранить скорость работы с объявлениями, но заменить разрозненные файлы и переписку единым источником данных. При этом прямой серверный парсинг Goofish не подходил: площадка работает через авторизованную сессию и защищает содержимое страницы. Решение должно было получать только те данные, которые осознанно передаёт оператор, не забирать cookies и не зависеть от нестабильной HTML-разметки маркетплейса.
Решение: единая ERP как источник правды
Мы спроектировали VICTORY как отдельную защищённую ERP на FastAPI, React и PostgreSQL. В базе хранится не только товар, но и исходная ссылка, снимки, оригинальные и подготовленные фотографии, распознанные характеристики, результаты исследования, себестоимость, финальная цена, тексты для разных каналов, статусы публикации и журнал действий.
Публичный сайт больше не читает статический avito-feed.xml. Карточка сначала проходит внутреннюю проверку в VICTORY и только после готовности становится товаром каталога. Один раз исправленные данные повторно используются в витрине, Telegram и объявлении Avito — без копирования между таблицами и редакторами.
Импорт без парсинга страницы
Для Chrome создано расширение VICTORY Watch Import с боковой панелью. Оператор открывает страницу часов и по явному действию отправляет в ERP только снимок видимой области, URL и заголовок вкладки. HTML страницы, cookies и данные авторизованной сессии не передаются. Сервер создаёт фоновую задачу, защищает базу от повторного импорта того же источника и сохраняет прогресс, даже если панель закрыли.
- 01
Один клик создаёт черновик и запускает обработку в фоновой очереди.
- 02
В панели видны состояние импорта, последние карточки и переход прямо в ERP.
- 03
Для ручного сценария можно вставить один или несколько скриншотов из Lightshot через Ctrl+V или Command+V.
- 04
Повторная отправка одной страницы не создаёт новую позицию.
AI распознаёт, исследует и готовит черновик
По снимкам и исходному тексту система определяет бренд, модель, reference, цену в юанях, состояние, комплектность, механизм, материал и размер корпуса, цвет циферблата, тип ремешка, год, пол и заметные дефекты. Китайский текст переводится на русский, а сомнительные значения получают оценку уверенности и комментарий вместо того, чтобы выдаваться за достоверный факт.
Отдельный исследовательский шаг сверяет модель по открытым источникам и сохраняет ссылки, после чего генератор готовит разные версии текста: структурное объявление для Avito, компактный пост для Telegram и спокойное описание для сайта. Финальное решение остаётся за оператором: любую характеристику и формулировку можно проверить и изменить до публикации.
Фотографии становятся частью карточки, а не папкой рядом
Расширение поддерживает два безопасных способа забрать фотографии. Через контекстное меню Chrome можно отправить выбранный оригинал, причём разрешение запрашивается только для домена этого изображения. Если сайт не отдаёт файл напрямую, оператор один раз выделяет область фотографии на экране и добавляет следующие кадры галереи с тем же кадрированием.
- 01
Сервер проверяет формат, размер и содержимое каждого файла.
- 02
Дубли отсеиваются и по контрольной сумме, и по визуальному отпечатку.
- 03
Первый кадр назначается главным; порядок, поворот и кадрирование можно изменить.
- 04
Оригинал сохраняется отдельно, а для сайта создаются оптимизированное изображение и миниатюра.
Экономика и готовность считаются до публикации
VICTORY получает официальный курс CNY/RUB Банка России и сохраняет последнее успешное значение на случай недоступности источника. Себестоимость складывается из закупочной цены, доставки, дополнительных расходов и комиссии; поверх неё применяется заданная наценка. Рассчитанную цену можно скорректировать вручную, а система показывает обе величины и не перетирает осознанное решение менеджера.
Перед переводом в «Готово» проверяется набор обязательных условий: название, идентификация модели, состояние и комплект, финальная цена, хотя бы одна фотография и тексты для всех выбранных каналов. Если карточка неполная, ERP перечисляет недостающие поля и не позволяет случайно опубликовать сырой товар.
Одна карточка — три канала публикации
Для сайта VICTORY формирует публичную карточку с устойчивым адресом, галереей и актуальным статусом. В Telegram отправляется альбом с характеристиками и отдельным блоком кнопок «Посмотреть на сайте» и «Написать консультанту». Для Avito реализован полуавтоматический сценарий: расширение переносит подготовленные данные и фотографии в открытую форму, но останавливается перед финальным размещением; после подтверждения ссылка возвращается в ERP.
- 01
Статус товара и статус каждого канала хранятся отдельно.
- 02
Повторная публикация обновляет существующий материал вместо создания дубля.
- 03
«Зарезервировано», «Продано» и «Архив» отражаются в публичном контуре.
- 04
Ошибки публикации видны оператору рядом с карточкой.
Автоматизация остаётся управляемой
OpenAI- и Telegram-ключи хранятся в закрытых серверных файлах и возвращаются в интерфейс только в маскированном виде. Для входа используются стойкий хеш пароля, подписанная сессия и ограничение частоты попыток. Загрузки проходят проверку, действия записываются в аудит, а сервис имеет health-check, автоматический перезапуск и резервируемую конфигурацию.
Результат: операционная система вместо набора ручных действий
Работа с часами стала последовательным маршрутом: страница источника превращается в проверяемый черновик, черновик — в готовую товарную карточку, а одна карточка управляет сайтом, Telegram и объявлением. Оператор видит каталог, готовность, цены и статусы в одном интерфейсе и отвечает за исключения, а не за повторное переписывание одних и тех же данных.
Проект также показывает ценность поэтапной автоматизации: сначала был стабилизирован базовый процесс и публикация, затем добавлены AI, курс валют, Telegram, расширение Chrome, безопасная работа с фотографиями и помощник Avito. Каждый следующий модуль усиливает общий контур, не ломая уже работающую торговую операцию.
VICTORY связывает весь маршрут часов: от найденной страницы — до проверенной карточки и покупателя.