SyncGateLaunchpoolSnapshot
Purpose
Запрашивает Gate Launchpool project-list, валидирует ответ и ingests snapshot через SQL-контракт.
Код: internal/worker/activities/sync_gate_launchpool.go
Input / Output
Input (models.SyncGateLaunchpoolInput):
- page
- page_size
- status (optional)
Output (models.SyncGateLaunchpoolResult):
- snapshot_at
- projects_seen, projects_upserted
- subpools_seen, subpools_upserted
- quarantine_rows
External Dependencies
- API:
https://www.gate.com/apiw/v2/earn/launch-pool/project-list - DB: SQL function
ingest_gate_launchpool_snapshot($1::jsonb)+fct_gate_launchpool_*
Idempotency
- Ingestion SQL использует upsert-модель по ключам snapshot таблиц.
Error Taxonomy
database pool is not initializedgate_access_denied(non-retryable)api_error,parse_error, SQL ingest ошибки
Callers
Observability
- Логи:
gate_launchpool_mapping_coverage,gate launchpool api request failed