Exchange Coins Pipeline
SyncExchangeCoinsWorkflow синхронизирует монеты и сети с 8 бирж и выполняет conservative global mapping.
Источники
- Bybit:
GET /v5/asset/coin/query-info(private, signed) - Binance:
GET /sapi/v1/capital/config/getall(private, signed) - Gate:
GET /spot/currencies(public) - Bitget:
GET /api/v2/spot/public/coins(public) - BingX:
GET /openApi/wallets/v1/capital/config/getall(private, signed) - KuCoin:
GET /api/v3/currencies(public) - OKX:
GET /api/v5/asset/currencies(private, signed) - MEXC:
GET /api/v3/capital/config/getall(private, signed)
Gate, Bitget и KuCoin работают как public providers (без *_API_KEY/*_API_SECRET).
Политика нормализации
local_coinиlocal_networkнормализуются в upper-case ключи.contract_addressнормализуется в lower-case.network_keyопределяется детерминированным alias-map + проверкой существования вnetworks_catalog.- Авто-маппинг в
global_assetsдопускается только при наличии(network_key, contract_address). - Активы без контракта не склеиваются между биржами автоматически и идут в quarantine.
Partial success
Workflow работает в partial mode:
- ошибки отдельных бирж не валят весь run;
- для private бирж без ключей создается quarantine запись missing_credentials;
- агрегированный результат содержит exchanges_succeeded/failed/skipped и счетчики upsert/mapping.
Таблицы
global_assetsglobal_asset_identifiersglobal_asset_networksexchange_assetsexchange_asset_networksexchange_symbol_assetsexchange_asset_mappingsasset_mapping_quarantine
Manual запуск workflow
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncExchangeCoinsWorkflow \
--workflow-id sync-exchange-coins-manual-$(date +%s) \
--input '{"force_full_refresh":false,"soft_delete_grace_days":30}'