-- 031_houses_alter_yandex.sql
-- Purpose: Add Yandex Realty-specific columns to houses table (ЖК landing + valuation enrichment).
-- Dependencies:
--   - houses table: 009_houses.sql
--   - 020_houses_alter_cian.sql (prior Cian columns must exist; no FK dependency, column-level only)
-- Deploy order: Apply after 033_listings_alter_yandex.sql (renamed from duplicate-prefix 030 in PR feat/sql-rename-030-and-schema-debt)
--
-- Sources:
--   - decisions/Schema_YandexRealty_Recon.md sec 11.2 (Newbuilding ЖК landing fields)
--   - decisions/Schema_YandexRealty_Recon.md sec 13.1 (Yandex Valuation tool enrichment)
--   - YandexRealtyScraper_v1_Implementation_Plan Stage 1
--
-- Idempotent: all ALTER TABLE uses ADD COLUMN IF NOT EXISTS; all CREATE INDEX use IF NOT EXISTS.

BEGIN;

ALTER TABLE houses
  -- Yandex Newbuilding (ЖК) landing
  ADD COLUMN IF NOT EXISTS yandex_jk_id           text,          -- '1592987'
  ADD COLUMN IF NOT EXISTS yandex_jk_slug         text,          -- 'tatlin'
  ADD COLUMN IF NOT EXISTS commission_year        int,           -- 2023
  ADD COLUMN IF NOT EXISTS commission_month       text,          -- 'июнь' (raw RU month)
  ADD COLUMN IF NOT EXISTS total_area_ha          numeric(6,2),  -- 1.50
  ADD COLUMN IF NOT EXISTS corpus_count           int,           -- 3 (parsed from "три башни")

  -- Yandex Valuation tool enrichment
  ADD COLUMN IF NOT EXISTS yandex_validated_at    timestamptz,   -- last enrichment timestamp
  ADD COLUMN IF NOT EXISTS yandex_total_listings  int,           -- "N объектов" в истории дома
  ADD COLUMN IF NOT EXISTS has_panorama           boolean;       -- Yandex Panorama 3D view available

-- Partial index on yandex_jk_id for fast lookup by Yandex newbuilding identifier
CREATE INDEX IF NOT EXISTS houses_yandex_jk_idx
  ON houses (yandex_jk_id)
  WHERE yandex_jk_id IS NOT NULL;

-- Partial index on commission_year for filtering by year of commissioning
CREATE INDEX IF NOT EXISTS houses_commission_year_idx
  ON houses (commission_year)
  WHERE commission_year IS NOT NULL;

COMMIT;
