Специализированного веб-интерфейса или графической панели (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), причин отклонений и ошибок нормализации/отправки.