-- 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;