🛰️ Data Acquisition — Overview

Как мы получаем партии и информацию об игроках для аналитики: реверс-инжиниринг протокола игровых сайтов, синхронизация истории и наши инструменты добычи. Внутренний раздел закрытой вики (репозитории приватные, сайт за Zero Trust).

Внутреннее

Здесь описаны методы доступа к сторонним сайтам и внутренняя механика добычи. Раздел не предназначен для распространения за пределами команды; секреты (токены/ключи/connection-string) держим в .env/секрет-сторе, а не в заметках.


🔄 Синхронизация — как это устроено (спайн 03–09)

Подробное описание того, как партии и игроки синхронизируются с игровых сайтов в аналитику. Читается сверху вниз; страница 03-Sinkhronizatsiya-obzor-i-arkhitektura — точка входа и карта всего остального.

  • 03-Sinkhronizatsiya-obzor-i-arkhitekturaначни отсюда. Два режима добычи (live observer / backfill sync), медальон (сайт → bronze → gold), писатели в общий контракт, сквозной путь партии, обе машины состояний кратко.
  • 04-Graf-igrokov-i-perechislenie — синхронизация информации об игроках: seed-игроки + спайдер по оппонентам (BFS), POST /api/player/history, полный против инкрементального свипа, резюм по enumerate_offset, таблица players, машина состояний игрока.
  • 05-Konveyer-partiy-i-sostoyaniya — синхронизация партий: таблицы games + raw_game_data, машина состояний партии, стадии fetch → normalize → post → archive, сырой кэш и реплей, идемпотентность.
  • 06-Zashchita-ot-blokirovok-i-Cloudflare — rate-limiter (single-flight, spacing + jitter, backoff, retry-on-throttle, бюджет), curl/Cloudflare/OpenSSL-фингерпринт, рычаг ENUMERATE_PAGE_SIZE, уроки 429.
  • 07-Kontrakt-ingest-i-validatsiya-dvizhkom — стык с аналитикой: POST против PUT /api/games, схема GameIngest, реплей-гейт движком (что значит 422), first-writer-wins.
  • 08-Identichnost-istochniki-i-deduplikatsiyaexternal_id / source / player_type по всем писателям, нативный отрицательный id ботов против нашего bot:<algorithm>, гонка first-writer-wins, дедуп V6.
  • 09 Pipeline - dicechess-sync — служебная справка по сервису dicechess-sync: CLI-команды, полная таблица env-переменных, демон-цикл, Docker-деплой.

✍️ Сервисы-писатели и хранилище

Пять независимых писателей сходятся в одном контракте POST /api/games; сырьё площадок оседает в bronze-архиве (кроме first-party источников — extension и playsite — у которых сырья нет).

  • Live-nablyudatel-dicechess-observer — live-наблюдатель партий dicechess.com (rpi4), обход Cloudflare через curl.
  • dicechess-sync — бэкфилл исторических партий dicechess.com (граф игроков).
  • Beturanga-vtoroy-istochnik — второй сайт beturanga.com (Socket.IO), гибридная стратегия Фишера.
  • Rasshirenie-dicechess-extension — браузерное расширение: играет нашим ботом и подменяет игрока на bot:<algorithm> (анализ силы алгоритма).
  • playsite (dicechess-play) — наш публичный игровой сайт: партии анонимов с ботами, source='playsite' (пятый писатель).
  • Raw-arkhiv-bronze-sloy — immutable bronze-слой сырых JSON (формализация кэша raw_game_data).

🌐 Протокол игровых сайтов

Низкоуровневый реверс-инжиниринг: что и как шлёт сайт, где взять сессию, как перехватить трафик.


🤖 Боты и движок (связанное)

История про игру нашего движка против сайт-ботов — соседняя с добычей тема (репозиторий dicechess-bots, см. также Rasshirenie-dicechess-extension).

  • Igra-protiv-robotov — наш движок против сайт-ботов через STOMP + субпроцесс движка.
  • Sozdannaya-struktura — структура репозитория dicechess-bots.