Архитектура сети агентов

Как устроена автономная система «Выбирай»: кто собирает данные, кто следит за сайтом, кто проверяет качество — без ручного контроля владельца
1 Источники данных (первоисточники)
НБРБ APIapi.nbrb.by — курсы валют, курс на завтраREST, без ключей
Сайты банковБеларусбанк, БГПБ, МТБ, ВТБ, БСБ, Цептер, Технобанк — курсы наличных и картHTML / API
БВФБбиржевые торги, итоги сессийпубличные данные
CoinGeckoкурсы BTC/ETH/USDT и топ-криптыREST, без ключей
Беларусбанк API + OSM733 отделения банков по РБinfobox + Overpass
2 Боты-сборщики (cron — данные всегда свежие)
bank_rates_updateкурсы 6+ банков → bank_rates.jsonкаждые 15 мин · работает
exchange_crypto_updateБВФБ + крипта → exchange_crypto.jsonкаждые 15 мин · работает
НБРБ-виджеткурсы + «на завтра» грузятся в браузере напрямую с APIна лету · работает
3 Хранилище (всё в JSON, версионно)
data/*.jsonbank_rates, exchange_crypto, bank_officesживые данные
research/*.jsonкредиты (66), вклады (57), карты (141), облигации (88), автокредиты (12)…собранные каталоги
4 Сайт
server.py :8098многопоточный, no-cache, отдаёт статикуработает
14 страницзаймы, кредиты, вклады, карты, банки, лизинг, страхование, крипта, валюта, инвестиции, недвижимость, автокредиты, рефинансирование + главная200 OK
5 Боты-контролёры (QA-сеть — следят, чтобы владелец не ходил чекать руками)
vybirai_watchdogсервер жив? упал — поднимает самкаждые 5 мин · работает
qa_screenerскринит все 14 страниц (десктоп+мобайл), проверяет вёрстку: скроллы, меню, выравнивание h1, битые картинки, JS-ошибки → qa/reports/report.jsonкаждые 2 ч · работает
sravni_comparatorсравнивает наши скрины с эталонами sravni.ru (8 страниц в research/sravni_shots): структура блоков, полнота данныхплан
content_auditorсвежесть данных (курсы не старше N часов), битые ссылки партнёров, пустые карточкиплан
6 Отчёты владельцу (Telegram, только когда есть что сказать)
report.jsonмашиночитаемый итог каждого прогона QAлог
Скрины для глазаqa/shots/*.png — 28 скринов (14 страниц × десктоп/мобайл)визуал
Алерт в Telegramтолько если что-то сломалось: «kredity: меню в 2 ряда» — владелец заходит на сайт только по алертуплан

Конвейер проверки качества (qa_screener)

1. ОткрытиеPlaywright грузит страницу (1280 и 375 px), ловит JS-ошибки через хук
2. Скринсохраняет png в qa/shots/ — можно посмотреть глазами в любой момент
3. Чек-листгориз. скролл? меню в 1 ряд? dropdown скрыт? h1 выровнен с карточками? битые img? undefined/NaN в тексте? кнопки без href?
4. Вердиктreport.json: ok/bad по каждой странице ×每种 разрешения
5. Алертесли bad > 0 — сообщение владельцу с конкретикой, что и где

Реестр ботов

БотРольРасписаниеПишет вСтатус
bank_rates_updateКурсы валют банков (наличные)каждые 15 минdata/bank_rates.jsonработает
exchange_crypto_updateБиржа БВФБ + курсы криптыкаждые 15 минdata/exchange_crypto.jsonработает
vybirai_watchdogМониторинг сервера :8098, автоподъёмкаждые 5 минлог + рестартработает
qa_screenerСкрины 14 страниц × 2 разрешения + чек-лист вёрсткикаждые 2 чqa/shots/ + qa/reports/report.jsonв разработке
sravni_comparatorСравнение с эталоном sravni.ru (структура, полнота)раз в суткиqa/reports/sravni_diff.jsonплан
content_auditorСвежесть данных, битые ссылки, пустые карточкираз в 6 чqa/reports/content.jsonплан
работает в разработке план (создаём следующим шагом)

Принципы сети

Автономностькаждый бот — самодостаточный скрипт + cron-расписание; упавший бот не роняет остальных
Тишина = нормаботы молчат, когда всё хорошо; владелец получает сообщение только об отклонениях
Следы для аудитакаждый прогон оставляет файл (json/скрин) — можно посмотреть, что было в любой момент
Эталон = sravni.ruредизайн и comparator сверяются с 8 сохранёнными эталонными скринами sravni