Skip to content

Bitget Launchpool Pipeline

Overview

Для Bitget PoolX используется browser scraping через Playwright. Прямой HTTP-клиент без браузерного контекста часто блокируется Cloudflare.

Текущая реализация: - ScrapeBitgetLaunchpoolWorkflow — получает структурированный список PoolX проектов/подпулов. - SyncBitgetLaunchpoolWorkflow — запускает scraping и ingests snapshots в Timescale через SQL function.

Код: - internal/worker/activities/scrape_bitget_launchpool.go - internal/worker/activities/sync_bitget_launchpool.go - internal/db/migrations/00013_bitget_launchpool_snapshot_schema.sql - internal/db/migrations/00014_bitget_launchpool_aggregates_policies.sql

Web Endpoints (UI)

Primary: - https://www.bitget.com/events/poolx - https://www.bitget.com/events/poolx/<product_id>

Captured Data Sources

Внутри browser session используются: - POST /v1/finance/poolx/product/page/list/new — overview list (status: waitStart/running/over); - POST /v1/finance/poolx/product/count — счетчики по статусам; - window.__NEXT_DATA__.props.pageProps.productInfo на detail page — SSR snapshot detail для активных/upcoming проектов.

Статусы источника (Bitget): - 0 = WAIT_ONLINE - 1 = WAIT_FOR_START - 2 = Subscribing - 3 = Mining - 4 = End

Маппинг в внутренний статус: - 0,1 -> Upcoming - 2,3 -> Active - 4 -> Ended - иначе Unknown

Storage Contract

SQL ingestion entrypoint: - ingest_bitget_launchpool_snapshot($1::jsonb)

Payload source: - request path: /playwright/bitget/launchpool - source marker: playwright - projects payload: []models.BitgetLaunchpoolProject

Target tables: - fct_bitget_launchpool_snapshot - fct_bitget_launchpool_subpool_snapshot - fct_bitget_launchpool_response_snapshot - fct_bitget_launchpool_quarantine - fct_bitget_launchpool_5min - fct_bitget_launchpool_daily

Manual Runs

Scraping only:

docker compose exec -T temporal temporal workflow start \
  --address temporal:7233 --namespace default --task-queue default \
  --type ScrapeBitgetLaunchpoolWorkflow \
  --workflow-id scrape-bitget-launchpool-manual-$(date +%s) \
  --input '{"include_details":true}'

Scraping + ingestion:

docker compose exec -T temporal temporal workflow start \
  --address temporal:7233 --namespace default --task-queue default \
  --type SyncBitgetLaunchpoolWorkflow \
  --workflow-id sync-bitget-launchpool-manual-$(date +%s) \
  --input '{"include_details":true}'

Diagnostics Artifacts

  • Request/response samples: docs/api/bitget-launchpool-requests.json