Skip to content

SyncExchangeCoinsForExchange

Purpose

Синхронизирует монеты и сети для одной биржи, выполняет mapping и пишет quarantine по нерешенным кейсам.

Код: internal/worker/activities/sync_exchange_coins.go

Input / Output

Input (models.SyncExchangeCoinsExchangeInput): - exchange_id - force_full_refresh - soft_delete_grace_days

Output (models.SyncExchangeCoinsExchangeResult): - exchange_id, status - coins_upserted, networks_upserted, mappings_resolved, quarantine_added - errors[], has_errors

External Dependencies

  • APIs: Bybit/Binance/Gate/Bitget/BingX/KuCoin/OKX/MEXC
  • DB: exchange_assets, exchange_asset_networks, exchange_symbol_assets, exchange_asset_mappings, global_assets, global_asset_networks, asset_mapping_quarantine, exchanges

Idempotency

  • Основные операции через upsert внутри транзакции.
  • Повторный запуск обновляет состояние без дублирования доменных строк.

Error Taxonomy

  • exchange_id is required
  • database pool is not initialized
  • provider skipped (missing_credentials) -> status=skipped, quarantine запись
  • upstream/API ошибки -> status=failed, quarantine api_error
  • mapping причины: missing_network_mapping, ambiguous, symbol_collision

Callers

Observability

  • Логи создания глобальных ассетов и события частичных деградаций.