-- 141_cian_promote_house_type.sql
-- Purpose (#2008):
--   (1) Class B promote-колонки is_apartments / is_rosreestr_checked — cian SERP
--       отдаёт их в карточке; раньше копились только в raw_payload. Нужны для
--       дашборда покрытия и matching (НЕ для valuation — estimator их не читает,
--       follow-up #2012). mortgage_available и kitchen_area_m2 УЖЕ существуют
--       (011_listings_alter.sql) — не добавляем.
--   (2) Backfill cian listings.house_type из camelCase materialType-вокабуляра в
--       канон (monolith/brick/panel/monolith_brick/block/wood). Cian писал
--       materialType как есть (monolithBrick / gasSilicateBlock / stalin / ...),
--       что != каноничному enum → estimator soft-penalty ложно штрафовал аналог.
--       Код-фикс (normalize_house_type на ингесте) чинит НОВЫЕ строки; этот файл
--       подтягивает СТАРЫЕ под тот же канон.
--
-- Маппинг тождественен house_type_normalizer._RAW_TO_CANON (cian-ветка):
--   monolithBrick->monolith_brick, gasSilicateBlock->block, aerocreteBlock->block,
--   foamConcreteBlock->block, stalin->brick («сталинка» = кирпич).
--   Уже-каноничные monolith/brick/panel/block/wood НЕ трогаем (ELSE house_type) —
--   консервативно, чтобы не потерять канон. Неизвестные токены тоже остаются
--   как есть (паритет с normalize_house_type, который их вернул бы NULL только на
--   ингесте; здесь СТАРЫЕ значения не схлопываем агрессивно).
--
-- Idempotency:
--   - ADD COLUMN IF NOT EXISTS — повторный apply безопасен.
--   - WHERE house_type IN (<только мапимые camelCase>) → после первого прогона их
--     не остаётся, повторный apply = no-op (0 rows). Scope строго source='cian' —
--     yandex (#2007 / миграция 140) и avito не трогаем.

BEGIN;

ALTER TABLE listings ADD COLUMN IF NOT EXISTS is_apartments boolean;
ALTER TABLE listings ADD COLUMN IF NOT EXISTS is_rosreestr_checked boolean;

UPDATE listings
   SET house_type = CASE house_type
                        WHEN 'monolithBrick'     THEN 'monolith_brick'
                        WHEN 'gasSilicateBlock'  THEN 'block'
                        WHEN 'aerocreteBlock'    THEN 'block'
                        WHEN 'foamConcreteBlock' THEN 'block'
                        WHEN 'stalin'            THEN 'brick'
                        ELSE house_type
                    END
 WHERE source = 'cian'
   AND house_type IN (
       'monolithBrick', 'gasSilicateBlock', 'aerocreteBlock',
       'foamConcreteBlock', 'stalin'
   );

COMMIT;
