-- DOM.RF additional snapshots (downloaded as XLSX/PDF from наш.дом.рф via "Скачать" buttons).
-- Snapshot date stamped on the file: 26.04.2026 (mortgage_rates is 19.04.2026).
-- These extend the JSON dashboard data with: full developer registry, escrow banks,
-- 214-FZ guaranty per region, sold-out (Tile3 velocity), housing info by mechanism, mortgage rates.

-- 1. Полный реестр застройщиков с метриками (НЕ группа компаний — а юрлица из проектных деклараций)
CREATE TABLE IF NOT EXISTS domrf_developers_full (
    snapshot_date       DATE NOT NULL,
    developer_name      TEXT NOT NULL,
    area_thousand_sqm   NUMERIC,
    permits_count       INT,
    houses_count        INT,
    flats_count         INT,
    market_share_pct    NUMERIC,
    PRIMARY KEY (snapshot_date, developer_name)
);

-- 2. Банки эскроу с метриками
CREATE TABLE IF NOT EXISTS domrf_escrow_banks (
    snapshot_date       DATE NOT NULL,
    bank_name           TEXT NOT NULL,
    houses_count        INT,
    permits_count       INT,
    area_thousand_sqm   NUMERIC,
    developers_count    INT,
    regions_count       INT,
    PRIMARY KEY (snapshot_date, bank_name)
);

-- 3. Долевое стр-во по 214-ФЗ — по регионам с разбивкой эскроу/ПП480
CREATE TABLE IF NOT EXISTS domrf_guaranty_regions (
    snapshot_date           DATE NOT NULL,
    territory_name          TEXT NOT NULL,           -- 'Российская Федерация' | 'Центральный ФО' | 'Свердловская область' ...
    territory_level         TEXT NOT NULL,           -- 'rf' | 'fo' | 'region'
    -- Всего строится
    total_permits           INT,
    total_area_th_sqm       NUMERIC,
    total_developers        INT,
    -- Имеют право привлекать ДУ по 214-ФЗ (всего)
    fz214_permits           INT,
    fz214_area_th_sqm       NUMERIC,
    fz214_developers        INT,
    fz214_pct_of_total      NUMERIC,
    -- В т.ч. с эскроу
    escrow_permits          INT,
    escrow_area_th_sqm      NUMERIC,
    escrow_developers       INT,
    -- В т.ч. ПП №480 (без эскроу)
    pp480_permits           INT,
    pp480_area_th_sqm       NUMERIC,
    pp480_developers        INT,
    PRIMARY KEY (snapshot_date, territory_name)
);

-- 4. Сводные показатели по механизмам привлечения (housing_info)
CREATE TABLE IF NOT EXISTS domrf_housing_summary (
    snapshot_date       DATE NOT NULL,
    territory_name      TEXT NOT NULL,           -- 'Российская Федерация' | город | регион
    territory_level     TEXT NOT NULL,           -- 'rf' | 'region' | 'city'
    mechanism           TEXT NOT NULL,           -- 'all' | 'escrow' | 'fund' | 'no_attraction'
    developers_count    INT,
    permits_count       INT,
    declarations_count  INT,
    houses_count        INT,
    area_thousand_sqm   NUMERIC,
    flats_thousand      NUMERIC,
    PRIMARY KEY (snapshot_date, territory_name, mechanism)
);

-- 5. Плановые сроки ввода (housing_info, нижняя таблица)
CREATE TABLE IF NOT EXISTS domrf_planned_commissioning (
    snapshot_date       DATE NOT NULL,
    plan_year           INT NOT NULL,
    escrow_th_sqm       NUMERIC,
    fund_th_sqm         NUMERIC,
    no_attraction_th_sqm NUMERIC,
    total_th_sqm        NUMERIC,
    PRIMARY KEY (snapshot_date, plan_year)
);

-- 6. Реализация (sold_out_info) — РФ итог + регионы
CREATE TABLE IF NOT EXISTS domrf_sold_out (
    snapshot_date       DATE NOT NULL,           -- '2026-04-11' (отчёт за март 2026)
    territory_name      TEXT NOT NULL,
    -- Площади
    total_area_th_sqm   NUMERIC,
    sold_area_th_sqm    NUMERIC,
    unsold_area_th_sqm  NUMERIC,
    not_open_area_th_sqm NUMERIC,
    -- Проценты
    sold_pct            NUMERIC,
    unsold_pct          NUMERIC,
    not_open_pct        NUMERIC,
    -- Дополнительно (только для РФ)
    avg_price_per_sqm   NUMERIC,                 -- ₽/м²
    attracted_funds_mln_rub NUMERIC,             -- млн ₽
    PRIMARY KEY (snapshot_date, territory_name)
);

-- 7. Реализация по году ввода
CREATE TABLE IF NOT EXISTS domrf_sold_out_by_year (
    snapshot_date       DATE NOT NULL,
    plan_year           TEXT NOT NULL,           -- '2026' .. '2031+'
    total_th_sqm        NUMERIC,
    pct_of_total        NUMERIC,
    sold_pct            NUMERIC,
    unsold_pct          NUMERIC,
    not_open_pct        NUMERIC,
    PRIMARY KEY (snapshot_date, plan_year)
);

-- 8. Распределение по % реализации в доме
CREATE TABLE IF NOT EXISTS domrf_sold_out_by_progress (
    snapshot_date       DATE NOT NULL,
    progress_bucket     TEXT NOT NULL,           -- 'not_open' | '0-20' | '21-40' | '41-60' | '61-80' | '80+'
    total_th_sqm        NUMERIC,
    pct_of_total        NUMERIC,
    sold_pct_within     NUMERIC,
    unsold_pct_within   NUMERIC,
    PRIMARY KEY (snapshot_date, progress_bucket)
);

-- 9. Ставки ипотеки топ-20 банков (mortgage_rates)
CREATE TABLE IF NOT EXISTS domrf_mortgage_rates (
    snapshot_date       DATE NOT NULL,
    bank_name           TEXT NOT NULL,
    primary_rate        NUMERIC,                 -- %, NULL если 'не предоставляет'
    secondary_rate      NUMERIC,
    refinance_rate      NUMERIC,
    note                TEXT,                    -- 'Максимальный срок – 19 лет', 'ПВ от 50%' etc.
    PRIMARY KEY (snapshot_date, bank_name)
);

CREATE INDEX IF NOT EXISTS idx_domrf_developers_full_share  ON domrf_developers_full (market_share_pct DESC);
CREATE INDEX IF NOT EXISTS idx_domrf_guaranty_level         ON domrf_guaranty_regions (territory_level);
CREATE INDEX IF NOT EXISTS idx_domrf_housing_summary_terr   ON domrf_housing_summary (territory_name, mechanism);
