Перейти к основному содержимому

Матрица ролей таблиц — снимок 2026-07-11

Матрица отвечает на три практических вопроса: таблица собирается или рассчитывается, кто её должен писать и можно ли считать её рабочим источником отчёта. Точные поля, типы, индексы и DDL — в SCHEMA-SNAPSHOT-2026-07-11.sql.

Схема gwptd_intake — 104 собранные таблицы

СемействоТаблицыРоль
Envelopecollection_run, raw_payload, parser_error, schema_snapshotметаданные прогона, исходный ответ и ошибки; schema_snapshot пока без писателя
WBwb_*, включая wb_warehouse_stocks, wb_adverts, wb_advert_stats, wb_paid_storage, wb_finance_reportstyped-ответы 23 endpoint'ов WB; wb_warehouse_stocks — текущий источник WB FBO для kernel
Ozonozon_*, включая ozon_product_*, ozon_postings_*, ozon_stocks, ozon_stock_on_warehouses, ozon_compensation, ozon_search_queriestyped-ответы 18 endpoint'ов; ozon_analytics сейчас intake-only
YMym_*, включая ym_analytics, ym_services, ym_tariffs, ym_boost, ym_competitorstyped-ответы 18 endpoint'ов; асинхронные xlsx-отчёты уже сохраняются как typed-данные
Lamodalamoda_orders, lamoda_inventory, lamoda_nomenclatures, lamoda_status_dates, lamoda_returns, lamoda_return_boxes, lamoda_promotions, lamoda_promotion_products, lamoda_questions, lamoda_documents, lamoda_prices, lamoda_funnelAPI- и кабинетные данные Lamoda; первые семь участвуют в общем V3-контуре, последние три — ручной кабинетный поток
Amazonamz_*: inventory, orders, settlements, sales traffic, finance events, ranks, buybox, reimbursement/storage/planning/country/ledger/report-healthсинхронизированные с s2 результаты SP-API и отдельных API; суммы остаются в валюте рынка
Golden Applega_rawraw JSON-срезы по тегам кабинета; последний успешный срез на тег — актуальный
1С и зеркалаonec_supplier_catalog, onec_nomenclature_ref, onec_warehouse_ref, onec_warehouse_stockсправочник товара и закупочные остатки; часть refresh-скриптов идёт вне envelope
Общиеmp_seller_healthрейтинг/здоровье продавца для нескольких МП

Называть intake-таблицу «фактом» нельзя: это нормализованный ответ конкретного API, который может быть append-only, upsert или полным срезом в зависимости от коллектора. Правило для конкретной таблицы проверяется в коде коллектора и в DDL, а не по общему предположению об UPSERT.

Схема gwptd_kernel — 20 расчётных/справочных таблиц

ГруппаТаблицыПисатель и использование
Идентичностьdim_marketplace, dim_product, dim_product_identifier, dim_product_identifier_history, dim_warehouse, dim_ozon_fbo_cluster, map_ozon_fbo_warehouse_cluster, resolution_quarantinebuild_dim_product/resolve_identifiers; history резервна, quarantine требует разбора ключа
Карточка товараdim_product_attribute, dim_product_description, dim_product_imagesзеркала и sync-скрипты; питает карточку товара
Событийные фактыfact_orders, fact_returns, fact_finance, fact_analytics, fact_promotionskernel ETL, кроме fact_promotions: это исторический frozen-слой без текущего builder-а/reader-а
Состояниеfact_stocks_daily, fact_prices_daily, fact_supplier_stock_price, fact_storage_costskernel ETL; storage — вход для turnover, не сирота
Производныеfact_turnover, fact_ratingkernel ETL после заказов/остатков/хранения/дедупликации
ПрикладноеshipmentsLaravel, а не kernel ETL; план отгрузок

Витрины SQL

v_dim_product_card, v_dim_product_wide и v_fact_stocks_current — view, не самостоятельные писатели. Их поля определяются DDL, а свежесть зависит от таблиц-источников.

Таблицы, которым нельзя приписывать текущего бизнес-потребителя

ОбъектПроверенный статусСледующее действие
gwptd_intake.ozon_analyticsсобирается, но не попадает в fact_analytics и не питает funnelрешить: строить Ozon-ветку ETL или считать сбор резервным
gwptd_kernel.fact_promotions510 исторических строк; нет builder-а, шага build_all и reader-аопределить канонический источник промо до удаления/пересборки
gwptd_kernel.fact_financebuilder есть; экран WB finance сознательно читает intakeрешить отдельно, когда переводить отчёт на kernel
gwptd_intake.schema_snapshotDDL есть, писателя нетлибо реализовать schema-drift мониторинг, либо вывести из обязательного контура

Эта таблица не является разрешением удалять данные. Она отделяет «нет потребителя сейчас» от «можно удалить»: для второго нужен владелец, backfill план и проверка downstream-зависимостей.