Специализированного веб-интерфейса или графической панели (dashboard) для мониторинга в репозитории dicechess-sync нет. Мониторинг процесса синхронизации выполняется следующими способами:

1. Логи демона в реальном времени (stdout)

При запуске службы синхронизации (crawl-service.ts) в стандартный поток вывода отправляются подробные структурированные логи о каждом завершенном проходе (pass).

Пример лога прохода:

[2026-06-25T11:00:00.000Z] pass      players=10(+0err) games+150 fetched=120(+0err) post[c=100 e=20 rej=0 err=0 nErr=0] frontier={"pending":250,"in_progress":0,"synced":50,"error":2,"skipped":0} cooldown=0ms

Из этой строки можно узнать:

  • Сколько игроков обработано и сколько ошибок встречено (players=...(+...err))
  • Накопленное количество новых партий (games+...)
  • Сколько подробных историй партий скачано/кешировано (fetched=...(+...err))
  • Результаты отправки в аналитику (post[...]: c — создано новых, e — уже существовали, rej — отклонены, err — сетевые ошибки, nErr — ошибки нормализации)
  • Текущий статус очереди фронтира (frontier=...)
  • Время штрафного ожидания рейт-лимитера (cooldown=...ms)

При работе в Docker-контейнере за этим можно следить через docker logs -f <container_name>.


2. Запросы к SQLite БД (sync.db)

Вся очередь и состояние синхронизации сохраняются локально в БД SQLite. Файл БД настраивается через переменную DB_PATH (по умолчанию ./data/sync.db).

База данных инициализируется в режиме WAL (db.ts:L7), что позволяет безопасно читать ее (делать SELECT) любым SQL-клиентом (например, DBeaver, TablePlus, DB Browser for SQLite или просто консольным sqlite3) прямо во время активной записи краулером.

Для мониторинга можно использовать следующие таблицы (схема в 0001_init.sql):

  • players: отслеживание состояния очереди игроков (sync_status: pending | in_progress | synced | error | skipped), ошибок (last_error) и расписания повторных попыток (next_retry_at).
  • games: отслеживание состояния синхронизации отдельных партий (status: discovered | fetched | posted | rejected | error | skipped), причин отклонений и ошибок нормализации/отправки.