- 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.
44 lines
2.1 KiB
PL/PgSQL
44 lines
2.1 KiB
PL/PgSQL
-- 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;
|