gendesign/data/sql/100_22c_flat_plans.sql
lekss361 215441e4d8 feat(22c): domrf_kn_flat_plans new table + parser stub
- data/sql/100_22c_flat_plans.sql: CREATE TABLE domrf_kn_flat_plans
  (ods_id PK, obj_id, plan_image_url, local_path, dimensions, snapshot_date)
  + index on obj_id.

- backend/app/services/scrapers/flat_plans.py (NEW):
  * extract_flat_plans(raw_payload) — reserved stub; kn-API audit confirms
    plan images are NOT in portal/table payload, only in catalog SSR HTML.
    Function probes planImageUrl/layoutImageUrl/planUrl/layoutUrl/imageUrl
    for forward-compat if API ever adds the field.
  * upsert_flat_plans(db, obj_id, plans, snapshot_date) — UPSERT with
    COALESCE guard for local_path/downloaded_at/dimensions.
  * download_plan_image_stub() — NotImplementedError placeholder;
    real downloader is a future Celery task (#299 / 22d-track).

Audit (obj_id=65136): plan_image absent from kn_object_place_66 payload
(2.3 MB, checked planImage/planUrl/layoutImage/imageUrl — all FALSE).
Source is catalog flat page SSR only. Wiring domrf_kn.py — separate PR.

Issue #297 sub-task 22c.
2026-05-17 18:34:06 +03:00

44 lines
2.1 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Migration 100: domrf_kn_flat_plans — планировки квартир (22c)
--
-- Хранит URL картинки планировки для каждой квартиры DOM.РФ.
-- Источник данных: каталог-квартир SSR-страница / flats_plans endpoint.
-- Скачивание бинарников — Celery task (future PR, 22d-track).
--
-- Phase 3 / #297 sub-task 22c.
BEGIN;
CREATE TABLE IF NOT EXISTS domrf_kn_flat_plans (
ods_id text PRIMARY KEY,
obj_id bigint NOT NULL,
plan_image_url text NOT NULL,
local_path text,
width_px int,
height_px int,
size_bytes int,
downloaded_at timestamptz,
snapshot_date date NOT NULL,
scraped_at timestamptz DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS domrf_kn_flat_plans_obj_idx
ON domrf_kn_flat_plans (obj_id);
COMMENT ON TABLE domrf_kn_flat_plans IS
'Планировки квартир DOM.РФ: URL изображения + метаданные после скачивания. '
'PK = ods_id (совпадает с domrf_kn_flats.ods_id). '
'Источник: каталог-квартир SSR / flats_plans endpoint. '
'Issue #297 sub-task 22c.';
COMMENT ON COLUMN domrf_kn_flat_plans.ods_id IS
'Идентификатор квартиры DOM.РФ (напр. 65136/1/1.4.3) — PK и FK на domrf_kn_flats.ods_id.';
COMMENT ON COLUMN domrf_kn_flat_plans.plan_image_url IS
'Абсолютный URL картинки планировки с сервера DOM.РФ (cdn или основной домен).';
COMMENT ON COLUMN domrf_kn_flat_plans.local_path IS
'Путь к локальной копии файла после скачивания (относительно MEDIA_ROOT или абсолютный).';
COMMENT ON COLUMN domrf_kn_flat_plans.downloaded_at IS
'Момент успешного скачивания бинарника. NULL = ещё не скачан.';
COMMENT ON COLUMN domrf_kn_flat_plans.snapshot_date IS
'Дата snapshot DOM.РФ, в котором впервые обнаружен URL.';
COMMIT;