-- 010_houses_alter.sql
-- ALTER TABLE houses — добавить 15+ полей из Houses Catalog endpoint
-- (material_walls, parking_type, rating_distribution, raw_characteristics, etc.)
--
-- Dependencies: 009_houses.sql (houses table must exist)
-- Apply after: 009_houses.sql
-- Apply before: 011_listings_alter.sql
--
-- Source: decisions/Schema_Avito_Houses_Listings_History.md sec 25
--
-- Идемпотентно: ADD COLUMN IF NOT EXISTS безопасен при повторном запуске.

BEGIN;

ALTER TABLE houses
    -- Идентификатор хеша (из Avito internal base64-encoded ID)
    ADD COLUMN IF NOT EXISTS avito_id_hash text,                  -- base64 "MTE3LjM3MDg5MA"

    -- Адрес (два формата)
    ADD COLUMN IF NOT EXISTS short_address text,                   -- "Свердловская область, Екатеринбург"
    ADD COLUMN IF NOT EXISTS full_address text,                    -- полный с улицей

    -- Материалы и конструкция
    ADD COLUMN IF NOT EXISTS material_walls text,                  -- "Монолитный" / "Железобетонные"
    ADD COLUMN IF NOT EXISTS material_floors text,                 -- "Железобетонные перекрытия"

    -- Инженерные системы
    ADD COLUMN IF NOT EXISTS hot_water text,                       -- "Центральное" / "Автономное"

    -- Парковка и придомовая территория
    ADD COLUMN IF NOT EXISTS parking_type text,                    -- "Подземная / За шлагбаумом во дворе"
    ADD COLUMN IF NOT EXISTS has_playground boolean,               -- "Детская площадка"

    -- Застройщик
    ADD COLUMN IF NOT EXISTS developer_name text,                  -- "ЛСР Недвижимость" (может быть NULL)
    ADD COLUMN IF NOT EXISTS developer_key text,                   -- Avito internal key застройщика

    -- Инфраструктура
    ADD COLUMN IF NOT EXISTS infrastructure_summary text,          -- "Больница, детский сад, магазин, школа"
    ADD COLUMN IF NOT EXISTS infrastructure_walk_distance text,    -- "в 5 минутах ходьбы"

    -- Рейтинг (детальный) — дополняет houses.rating (numeric(2,1))
    ADD COLUMN IF NOT EXISTS rating_score numeric(4,2),            -- 4.666 (точное значение до сотых)
    ADD COLUMN IF NOT EXISTS rating_string text,                   -- "4,7" (как отображает Avito)
    ADD COLUMN IF NOT EXISTS rating_distribution jsonb,            -- [{score:5,count:4},{score:4,count:1},...]

    -- Карта и дополнительные данные
    ADD COLUMN IF NOT EXISTS map_pins jsonb,                       -- перезапись поля из 009 (соседние дома + POI)
    ADD COLUMN IF NOT EXISTS raw_characteristics jsonb;            -- весь expandParams — для retrofit новых полей

COMMENT ON COLUMN houses.rating_score IS
    'Точный рейтинг до сотых (напр. 4.666). Avito округляет до 4.7 для отображения (rating_string).';
COMMENT ON COLUMN houses.rating_distribution IS
    'Распределение оценок: [{score: 5, count: 4}, {score: 4, count: 1}, ...] из Houses Catalog.';
COMMENT ON COLUMN houses.raw_characteristics IS
    'Сырые expandParams из Houses Catalog для retrofit новых полей без re-scrape.';

COMMIT;
