Задача

На федеральных торговых площадках ежедневно появляются сотни лотов. Чтобы находить подходящие объекты, нужно было объединить их в одном месте, отсеивать заведомо неподходящие варианты и сравнивать оставшиеся с заданными ценовыми ориентирами.

AKLAB строится как рабочая система мониторинга, а не как ещё один каталог. На выходе нужен короткий список объектов, которые стоит проверить человеку.

Ограничения

У каждой площадки свой формат страниц и данных. Полная загрузка карточки требует дополнительных запросов, а для части источников — выполнения JavaScript через Playwright. Поэтому одинаково подробно обходить все найденные лоты было бы дорого и медленно.

Сбор, фильтрация, анализ, загрузка фотографий и рассылка выполняются разными компонентами. Их нужно связать так, чтобы каждый этап получал понятное задание, а сбой одного сервиса не превращал весь процесс в непрозрачный сценарий.

Моя роль

Я определяю продуктовую модель и архитектуру AKLAB, разрабатываю систему и принимаю изменения. AI-ассистент помогает исследовать код, готовить отдельные изменения и тесты, но правила отбора, границы сервисов и итоговая проверка остаются на моей стороне.

Инженерное решение

Сбор построен в две фазы. На этапе scan десять парсеров получают данные из лент и сразу применяют фильтры по региону, площади, цене и стоп-словам. Только прошедшие фильтры объекты переходят в fetchDetails, где загружаются описание, фотографии, документы и условия торгов.

Задания между компонентами проходят через SQLite-очередь. Analyzer сравнивает цену объекта с заданными эталонами по региону и типу недвижимости. Focus engine учитывает отклонение цены и полноту карточки, после чего ранжирует объекты. Отдельный сервис формирует почтовый дайджест.

Интерфейс, API, парсеры и фоновые сервисы разделены. Один манифест описывает процессы и их проверки, а общие библиотеки хранят правила парсинга и взаимодействия со Strapi.

Результат

AKLAB умеет собирать лоты с десяти площадок, фильтровать их до детальной загрузки, дополнять карточки, сравнивать цены с эталонами и ранжировать объекты. Пользователь получает дашборд с фильтрами и утреннюю подборку объектов, прошедших правила отбора.

Это описание возможностей системы, а не обещание доходности или коммерческого эффекта.

Выводы

В системах сбора данных основная сложность находится между источником и итоговым экраном. Двухфазный парсинг сокращает лишнюю работу, очередь делает движение заданий явным, а границы сервисов позволяют проверять этапы независимо.

Подробности есть в авторском разборе «Как я строю AKLAB». Если похожая сложность возникла в работе команды, можно начать с технологической трансформации разработки. Если требуется создать сам сервис или интеграцию — с разработки веб-систем.