Data Models
SDK Loans Catalog
Для gate, bybit, kucoin, whitebit используется единый loans catalog contract:
- project snapshot:
project_id,project_coin,project_name,project_url,project_status,rate_min_text,rate_max_text,liquidity_text,product_count,subpools,raw_project - subpool snapshot:
subpool_key,subpool_id,offer_type,term_days,rate_text,liquidity_text,borrow_asset,collateral_asset,ltv_text,min_amount_text,max_amount_text,raw_subpool - per-exchange tables:
fct_<exchange>_loans_snapshot,fct_<exchange>_loans_subpool_snapshot,fct_<exchange>_loans_response_snapshot,fct_<exchange>_loans_quarantine,fct_<exchange>_loans_5min,fct_<exchange>_loans_daily - aggregates считают только общие numeric dimensions:
rate,liquidity, optionalterm_days
borrow_asset обязателен для ingest; collateral_asset допускается пустым и остается exchange-specific detail, если SDK не отдает единый collateral symbol.
DB Relationships (Graphviz)
Обзор FK-связей между таблицами по миграциям.
Открыть диаграмму в полном размере
DOT-исходник
asset_mapping_quarantine не содержит FK-связей в миграциях и поэтому не связан ребрами на диаграмме.
Continuous aggregates (*_5min, *_daily) построены поверх *_subpool_snapshot и не показаны как FK-связи.
exchanges
Основная таблица проекта.
| Column | Type | Notes |
|---|---|---|
exchange_id |
text PK | slug биржи |
display_name |
text | отображаемое имя |
website_url |
text | URL сайта |
category |
text | cex/dex и т.д. |
is_active |
bool | участвует ли в sync |
api_base_url |
text | опционально |
rate_limit_rps |
int | лимит |
country |
text | страна |
launch_year |
smallint | год запуска |
has_fiat |
bool | fiat support |
trust_score |
smallint | 0..10 |
last_checked |
timestamptz | последний sync |
metadata |
jsonb | доп. поля CoinGecko |
created_at |
timestamptz | created |
updated_at |
timestamptz | updated |
networks_catalog
Каталог сетей/чейнов (EVM + non-EVM).
| Column | Type | Notes |
|---|---|---|
network_key |
text PK | канонический ключ (evm:<chain_id>, cg:<id>, llama:<slug>) |
display_name |
text | отображаемое имя |
family |
text | evm/utxo/cosmos/other |
is_evm |
bool | флаг EVM-сети |
chain_id |
bigint | EVM chain id, UNIQUE WHERE NOT NULL |
native_symbol |
text | символ нативной монеты |
native_name |
text | название нативной монеты |
native_decimals |
smallint | decimals нативной монеты |
is_active |
bool | soft-delete флаг |
first_seen_at |
timestamptz | первый раз встречена |
last_seen_at |
timestamptz | последний раз встречена в sync |
last_synced_at |
timestamptz | последний успешный upsert |
metrics_source |
text | источник последних метрик |
last_metrics_at |
timestamptz | когда метрики были свежими |
metrics_stale |
bool | флаг stale-метрик |
tvl_usd |
numeric(38,8) | TVL |
fees_24h_usd |
numeric(38,8) | fees за 24ч |
volume_24h_usd |
numeric(38,8) | volume за 24ч |
tx_count_24h |
bigint | tx count за 24ч |
active_addresses_24h |
bigint | активные адреса за 24ч |
metadata |
jsonb | метаданные/сырьё источников |
created_at |
timestamptz | created |
updated_at |
timestamptz | updated |
network_identifiers
Связки внешних идентификаторов сетей.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
network_key |
text FK | ссылка на networks_catalog |
source |
text | coingecko/chainid/defillama |
id_type |
text | coingecko_platform_id/chainid_slug/defillama_slug |
id_value |
text | значение идентификатора |
is_primary |
bool | primary mapping для типа |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
metadata |
jsonb | доп. поля |
UNIQUE (source, id_type, id_value).
network_endpoints
Сетевые endpoint-ы (rpc, explorer) по каждой сети.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
network_key |
text FK | ссылка на networks_catalog |
endpoint_type |
text | rpc/explorer |
url |
text | endpoint URL |
is_active |
bool | активность endpoint-а |
source |
text | источник endpoint-а |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
UNIQUE (network_key, endpoint_type, url).
network_metrics_snapshots
История метрик сетей по времени.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
network_key |
text FK | ссылка на networks_catalog |
observed_at |
timestamptz | timestamp среза |
source |
text | источник метрик |
tvl_usd |
numeric(38,8) | TVL |
fees_24h_usd |
numeric(38,8) | fees 24h |
volume_24h_usd |
numeric(38,8) | volume 24h |
tx_count_24h |
bigint | tx count 24h |
active_addresses_24h |
bigint | active addresses 24h |
is_stale |
bool | stale snapshot |
payload |
jsonb | raw payload |
UNIQUE (network_key, observed_at, source).
global_assets
Global registry активов для conservative mapping.
| Column | Type | Notes |
|---|---|---|
global_id |
uuid PK | внутренний UUID идентификатор |
canonical_symbol |
text | канонический символ |
canonical_name |
text | каноническое имя |
status |
text | active/provisional/manual |
created_at |
timestamptz | created |
updated_at |
timestamptz | updated |
global_asset_identifiers
Внешние и служебные идентификаторы глобального актива.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
global_id |
uuid FK | ссылка на global_assets |
source |
text | contract/manual/exchange |
id_type |
text | network_contract/exchange_scoped_key/manual_alias |
id_value |
text | значение идентификатора |
network_key |
text FK nullable | ссылка на networks_catalog |
is_primary |
bool | primary flag |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
UNIQUE (source, id_type, id_value, COALESCE(network_key,'')) через expression index.
exchange_assets
Каталог монет по бирже.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_id |
text FK | ссылка на exchanges |
local_coin |
text | локальный символ монеты на бирже |
local_name |
text | локальное имя |
is_active |
bool | soft-delete флаг |
metadata |
jsonb | доп. сырой payload |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
updated_at |
timestamptz | updated |
UNIQUE (exchange_id, local_coin).
exchange_asset_networks
Сетевые записи монеты внутри биржи.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_asset_id |
bigint FK | ссылка на exchange_assets |
local_network |
text | локальный идентификатор сети |
network_key |
text FK nullable | сопоставление на networks_catalog |
contract_address |
text nullable | адрес контракта (normalized lower-case) |
deposit_enabled |
bool nullable | статус депозита |
withdraw_enabled |
bool nullable | статус вывода |
withdraw_fee |
text nullable | fee |
withdraw_min |
text nullable | min |
withdraw_max |
text nullable | max |
confirmations |
text nullable | подтверждения |
memo_required |
bool nullable | memo/tag required |
raw_payload |
jsonb | сырой payload сети |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
updated_at |
timestamptz | updated |
UNIQUE (exchange_asset_id, local_network).
global_asset_networks
Network-level представление глобального актива (AssetOnNetwork).
| Column | Type | Notes |
|---|---|---|
network_global_id |
uuid PK | UUID network-level сущности |
global_id |
uuid FK | ссылка на global_assets (asset-level) |
network_key |
text FK | ссылка на networks_catalog |
contract_address |
text nullable | контракт в сети (если есть) |
exchange_id |
text FK | биржа-источник |
local_symbol |
text | symbol на бирже |
source |
text | contract/exchange_symbol_network/manual |
confidence |
real | confidence score |
first_seen_at |
timestamptz | first seen |
last_seen_at |
timestamptz | last seen |
updated_at |
timestamptz | updated |
Ограничения:
- UNIQUE (network_key, contract_address) при contract_address IS NOT NULL;
- UNIQUE (exchange_id, local_symbol, network_key).
exchange_symbol_assets
Asset-level mapping для symbol внутри биржи (exchange_id + symbol -> global_id).
| Column | Type | Notes |
|---|---|---|
exchange_id |
text FK | биржа |
symbol |
text | symbol на бирже |
global_id |
uuid FK | ссылка на global_assets |
mapped_by |
text | auto_contract/auto_exchange_symbol_network/manual |
confidence |
real | confidence score |
mapped_at |
timestamptz | timestamp маппинга |
PRIMARY KEY (exchange_id, symbol).
exchange_asset_mappings
Mapping exchange network row -> network-level global asset.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_asset_network_id |
bigint FK | ссылка на exchange_asset_networks |
network_global_id |
uuid FK nullable | ссылка на global_asset_networks |
confidence |
real | confidence score |
mapped_by |
text | auto_contract/auto_exchange_symbol_network/manual/none |
mapped_at |
timestamptz | mapping timestamp |
UNIQUE (exchange_asset_network_id).
asset_mapping_quarantine
Очередь нерешенных кейсов нормализации/маппинга.
| Column | Type | Notes |
|---|---|---|
id |
bigserial PK | surrogate key |
exchange_id |
text nullable | биржа |
local_coin |
text nullable | локальная монета |
local_network |
text nullable | локальная сеть |
candidate_global_ids |
uuid[] nullable | кандидаты на маппинг |
reason |
text | missing_network_mapping/missing_contract/ambiguous/missing_credentials/api_error/symbol_collision |
details |
jsonb | подробности причины |
snapshot_at |
timestamptz | timestamp записи |
fct_gate_launchpool_snapshot
Snapshot fact table проектов Gate Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | pid из Gate |
exchange_id |
text FK | gate |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text | проектная монета |
project_name |
text | имя проекта |
project_state |
integer | state из Gate |
exchange_status |
bool | exchange status |
project_url |
text | product_url |
start_time / end_time |
timestamptz | окно проекта |
raw_project |
jsonb | полный raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_gate_launchpool_subpool_snapshot
Snapshot fact table сабпулов Gate Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | pid |
subpool_key |
text PK part | rid::text, fallback coin#row_in_project |
subpool_id |
bigint nullable | rid |
exchange_id |
text FK | gate |
project_asset_id |
uuid FK nullable | asset-level mapping проекта |
subpool_asset_id |
uuid FK nullable | asset-level mapping сабпула |
project_coin / subpool_coin |
text | символы |
rate_year / maybe_year_rate |
numeric | APR поля |
order_count |
integer | participants |
raw_subpool |
jsonb | полный raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_gate_launchpool_response_snapshot
Raw API response snapshot для аудита и дедупа payload-ов.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | gate |
request_path |
text | метод из envelope |
response_code |
integer | code |
response_msg |
text | message |
payload |
jsonb | полный ответ API |
fct_gate_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста Gate Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | gate |
project_id |
bigint nullable | pid |
subpool_key |
text nullable | ключ сабпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, ambiguous_*, api_error, parse_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_gate_launchpool_5min / fct_gate_launchpool_daily
Continuous aggregates:
- fct_gate_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_gate_launchpool_daily: bucket 1 day поверх fct_gate_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bingx_launchpool_snapshot
Snapshot fact table проектов BingX Launchpool (источник: Playwright scraping).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта в BingX |
exchange_id |
text FK | bingx |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на detail страницу |
project_status |
text | Active/Ended/Upcoming |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bingx_launchpool_subpool_snapshot
Snapshot fact table подпулов BingX Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
bigint nullable | id подпула из payload |
exchange_id |
text FK | bingx |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
pool_name |
text | имя подпула |
est_apr_text / est_apr |
text / numeric | APR |
participants_text / participants |
text / numeric | участники |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bingx_launchpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bingx |
request_path |
text | internal request source |
response_code |
integer | технический статус (ingest) |
response_msg |
text | источник (playwright) |
payload |
jsonb | полный payload для SQL ingest |
fct_bingx_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста BingX Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bingx |
project_id |
bigint nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, scrape_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bingx_launchpool_5min / fct_bingx_launchpool_daily
Continuous aggregates:
- fct_bingx_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_bingx_launchpool_daily: bucket 1 day поверх fct_bingx_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bingx_xpool_snapshot
Snapshot fact table проектов BingX XPool (источник: Playwright scraping).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта в BingX |
exchange_id |
text FK | bingx |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на detail страницу |
project_status |
text | Active/Ended/Upcoming |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bingx_xpool_subpool_snapshot
Snapshot fact table подпулов BingX XPool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
bigint nullable | id подпула из payload |
exchange_id |
text FK | bingx |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
pool_name |
text | имя подпула |
est_apr_text / est_apr |
text / numeric | APR |
participants_text / participants |
text / numeric | участники |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bingx_xpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bingx |
request_path |
text | internal request source |
response_code |
integer | технический статус (ingest) |
response_msg |
text | источник (playwright) |
payload |
jsonb | полный payload для SQL ingest |
fct_bingx_xpool_quarantine
Неразрешенные кейсы маппинга/ингеста BingX XPool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bingx |
project_id |
bigint nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, scrape_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bingx_xpool_5min / fct_bingx_xpool_daily
Continuous aggregates:
- fct_bingx_xpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_bingx_xpool_daily: bucket 1 day поверх fct_bingx_xpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bybit_launchpool_snapshot
Snapshot fact table проектов Bybit Launchpool (источник: Bybit API).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта в Bybit |
exchange_id |
text FK | bybit |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на project страницу |
project_status |
text | статус проекта |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
total_rewards_text |
text | общий reward (raw) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
total_staking_text |
text | общий staking (raw) |
mining_period |
text | период майнинга |
end_time_text / redemption_time_text |
text | тайминги завершения/редемпшена |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bybit_launchpool_subpool_snapshot
Snapshot fact table подпулов Bybit Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
bigint nullable | id подпула из payload |
exchange_id |
text FK | bybit |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
project_name |
text | имя проекта |
project_url |
text | ссылка на project страницу |
project_status |
text | статус проекта |
pool_name |
text | имя подпула |
reward_points_text / reward_points |
text / numeric | reward points (raw + parsed) |
est_apr_text / est_apr |
text / numeric | APR |
total_staked_text / total_staked |
text / numeric | total staked (raw + parsed) |
participants_text / participants |
text / numeric | участники |
individual_limit_text / vip_limit_text |
text | лимиты пользователя |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bybit_launchpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bybit |
request_path |
text | internal request path |
response_code |
integer | технический статус (ingest) |
response_msg |
text | сообщение/источник ответа |
payload |
jsonb | полный payload для SQL ingest |
fct_bybit_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста Bybit Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bybit |
project_id |
bigint nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, api_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bybit_launchpool_5min / fct_bybit_launchpool_daily
Continuous aggregates:
- fct_bybit_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_bybit_launchpool_daily: bucket 1 day поверх fct_bybit_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bybit_easy_earn_snapshot
Snapshot fact table coin groups Bybit Easy Earn (источник: Bybit web API).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | coin id в Bybit |
exchange_id |
text FK | bybit |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ coin group |
project_name |
text | <coin> Easy Earn |
project_url |
text | overview URL |
project_status |
text | Active / Upcoming / Ended / Unknown |
apy_min_text / apy_min |
text / numeric | нижняя граница APY |
apy_max_text / apy_max |
text / numeric | верхняя граница APY |
product_count |
integer | число Easy Earn products в группе |
flexible_count / fixed_term_count |
integer | разбивка по типу |
raw_project |
jsonb | raw group payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bybit_easy_earn_subpool_snapshot
Snapshot fact table отдельных Bybit Easy Earn products.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | coin group id |
subpool_key |
text PK part | product_id:product_type |
subpool_id |
bigint nullable | product id из Bybit |
exchange_id |
text FK | bybit |
project_asset_id / reward_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / reward_coin |
text nullable | символы staking/reward |
project_name |
text | имя coin group |
project_url |
text | overview URL |
project_status / subpool_status |
text | агрегированный и per-product status |
product_type / product_type_name |
integer / text | flexible vs fixed-term |
display_status_code / display_status_text |
integer / text | raw Bybit status + human label |
apy_text / apy |
text / numeric | APY |
duration_text |
text | Flexible or <N> Days |
subscribe_start_at_text / subscribe_start_at |
text / timestamptz | старт подписки |
subscribe_end_at_text / subscribe_end_at |
text / timestamptz | конец подписки |
total_deposit_share_text / total_deposit_share |
text / numeric | raw aggregate share |
product_max_share_text / product_max_share |
text / numeric | лимит продукта |
is_vip |
boolean | VIP-only marker |
product_area |
integer | area/category marker from Bybit |
raw_subpool |
jsonb | raw product payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bybit_easy_earn_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bybit |
request_path |
text | internal request path |
response_code |
integer | технический статус (ingest) |
response_msg |
text | сообщение/источник ответа |
payload |
jsonb | полный payload для SQL ingest |
fct_bybit_easy_earn_quarantine
Неразрешенные кейсы маппинга/ингеста Bybit Easy Earn.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bybit |
project_id |
bigint nullable | coin group id |
subpool_key |
text nullable | ключ продукта |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, ambiguous_*, api_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bybit_easy_earn_5min / fct_bybit_easy_earn_daily
Continuous aggregates:
- fct_bybit_easy_earn_5min: bucket 5 minutes, APY min/avg/max, last(...) descriptors.
- fct_bybit_easy_earn_daily: bucket 1 day поверх fct_bybit_easy_earn_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_gate_simple_earn_snapshot
Snapshot fact table asset rows Gate Simple Earn (источник: Gate web API market/list).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | asset id в Gate |
exchange_id |
text FK | gate |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ asset row |
project_name |
text | display name (name) |
project_url |
text | overview URL |
project_status |
text | Active / Upcoming / Ended / Unknown |
apr_min_text / apr_min |
text / numeric | нижняя граница APR |
apr_max_text / apr_max |
text / numeric | верхняя граница APR |
total_lend_amount_text / total_lend_amount |
text / numeric | текущий lent amount |
total_lend_available_text / total_lend_available |
text / numeric | available amount |
total_lend_all_amount_text / total_lend_all_amount |
text / numeric | aggregate amount |
product_count |
integer | число embedded products |
flexible_count / fixed_term_count |
integer | разбивка по типу |
raw_project |
jsonb | raw asset row payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_gate_simple_earn_subpool_snapshot
Snapshot fact table отдельных продуктов Gate Simple Earn.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id asset row |
subpool_key |
text PK part | subpool_id:product_type |
subpool_id |
bigint nullable | product id из Gate |
exchange_id |
text FK | gate |
project_asset_id / reward_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / reward_coin |
text nullable | staking/reward symbols |
project_name |
text | имя asset row |
project_url |
text | overview URL |
project_status / subpool_status |
text | агрегированный и per-product status |
product_type / product_type_name |
integer / text | flexible vs fixed markers |
sale_status_code / sale_status_text |
integer / text | raw Gate sale status + human label |
apr_text / apr |
text / numeric | APR |
boost_apr_text / boost_apr |
text / numeric | bonus/boost APR when present |
duration_text |
text | Flexible or <N> Days |
start_time_text / start_time |
text / timestamptz | окно продукта |
end_time_text / end_time |
text / timestamptz | окно продукта |
min_lend_amount_text / min_lend_amount |
text / numeric | минимальный депозит |
user_max_lend_volume_text / user_max_lend_volume |
text / numeric | лимит продукта |
user_total_amount_text / user_total_amount |
text / numeric | user_total_amount raw |
product_total_volume_text / product_total_volume |
text / numeric | product_total_volume raw |
pre_redeem / reinvest |
boolean | redeem/reinvest flags |
raw_subpool |
jsonb | raw product payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_gate_simple_earn_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | gate |
request_path |
text | internal request path |
response_code |
integer | технический статус (ingest) |
response_msg |
text | сообщение/источник ответа |
payload |
jsonb | полный payload для SQL ingest |
fct_gate_simple_earn_quarantine
Неразрешенные кейсы маппинга/ингеста Gate Simple Earn.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | gate |
project_id |
bigint nullable | asset row id |
subpool_key |
text nullable | ключ продукта |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, api_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_gate_simple_earn_5min / fct_gate_simple_earn_daily
Continuous aggregates:
- fct_gate_simple_earn_5min: bucket 5 minutes, APR/boost APR min/avg/max, last(...) descriptors.
- fct_gate_simple_earn_daily: bucket 1 day поверх fct_gate_simple_earn_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_bitget_launchpool_snapshot
Snapshot fact table проектов Bitget Launchpool (источник: Playwright scraping).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта в Bitget |
exchange_id |
text FK | bitget |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на detail страницу |
project_status |
text | Active/Ended/Upcoming |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_bitget_launchpool_subpool_snapshot
Snapshot fact table подпулов Bitget Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
bigint PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
bigint nullable | id подпула из payload |
exchange_id |
text FK | bitget |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
pool_name |
text | имя подпула |
est_apr_text / est_apr |
text / numeric | APR |
participants_text / participants |
text / numeric | участники |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_bitget_launchpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | bitget |
request_path |
text | internal request source |
response_code |
integer | технический статус (ingest) |
response_msg |
text | источник (playwright) |
payload |
jsonb | полный payload для SQL ingest |
fct_bitget_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста Bitget Launchpool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | bitget |
project_id |
bigint nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, scrape_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_bitget_launchpool_5min / fct_bitget_launchpool_daily
Continuous aggregates:
- fct_bitget_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_bitget_launchpool_daily: bucket 1 day поверх fct_bitget_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.
fct_kucoin_launchpool_snapshot
Snapshot fact table проектов KuCoin GemPool (источник: KuCoin API).
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
text PK part | id проекта в KuCoin |
exchange_id |
text FK | kucoin |
project_asset_id |
uuid FK nullable | mapping к global_assets по project_coin |
project_coin |
text nullable | символ проекта |
project_name |
text | имя проекта |
project_url |
text | ссылка на project страницу |
project_status |
text | статус проекта |
est_apr_text / est_apr |
text / numeric | APR (raw + parsed) |
total_rewards_text |
text | общий reward (raw) |
participants_text / participants |
text / numeric | участники (raw + parsed) |
total_staking_text |
text | общий staking (raw) |
mining_period |
text | период майнинга |
end_time_text / redemption_time_text |
text | тайминги завершения/редемпшена |
raw_project |
jsonb | raw project payload |
ON CONFLICT (snapshot_at, project_id) DO UPDATE.
fct_kucoin_launchpool_subpool_snapshot
Snapshot fact table подпулов KuCoin GemPool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
project_id |
text PK part | id проекта |
subpool_key |
text PK part | стабильный ключ подпула |
subpool_id |
text nullable | id подпула из payload |
exchange_id |
text FK | kucoin |
project_asset_id / subpool_asset_id |
uuid FK nullable | mapping к global_assets |
project_coin / subpool_coin |
text nullable | символы проекта/подпула |
project_name |
text | имя проекта |
project_url |
text | ссылка на project страницу |
project_status |
text | статус проекта |
pool_name |
text | имя подпула |
reward_points_text / reward_points |
text / numeric | reward points (raw + parsed) |
est_apr_text / est_apr |
text / numeric | APR |
total_staked_text / total_staked |
text / numeric | total staked (raw + parsed) |
participants_text / participants |
text / numeric | участники |
individual_limit_text / vip_limit_text |
text | лимиты пользователя |
raw_subpool |
jsonb | raw subpool payload |
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE.
fct_kucoin_launchpool_response_snapshot
Raw payload snapshot для аудита ingestion.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz PK part | время снимка |
payload_hash |
text PK part | md5(payload::text) |
exchange_id |
text FK | kucoin |
request_path |
text | internal request path |
response_code |
integer | технический статус (ingest) |
response_msg |
text | сообщение/источник ответа |
payload |
jsonb | полный payload для SQL ingest |
fct_kucoin_launchpool_quarantine
Неразрешенные кейсы маппинга/ингеста KuCoin GemPool.
| Column | Type | Notes |
|---|---|---|
snapshot_at |
timestamptz | время снимка |
exchange_id |
text FK | kucoin |
project_id |
text nullable | id проекта |
subpool_key |
text nullable | ключ подпула |
project_coin / subpool_coin |
text nullable | символы |
reason |
text | missing_*, missing_subpool_symbol, ambiguous_*, api_error |
details |
jsonb | диагностические поля |
raw_payload |
jsonb | raw entity payload |
fct_kucoin_launchpool_5min / fct_kucoin_launchpool_daily
Continuous aggregates:
- fct_kucoin_launchpool_5min: bucket 5 minutes, APR min/avg/max, participants sum/max, last(...) descriptors.
- fct_kucoin_launchpool_daily: bucket 1 day поверх fct_kucoin_launchpool_5min.
Политики:
- retention: 7 days raw snapshots, 30 days 5m cagg, 1 year daily cagg;
- compression: 1 day raw, 7 days 5m cagg, 30 days daily cagg.