gendesign/_wt-cadval/data/sql/50_schema_kn_extensions.sql
bot-backend 542ff1c9ca docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253
Оба места утверждали, что у Домклика один выделенный резидентный прокси и
пула нет. Это перестало быть правдой ещё в #2800 (миграция 253 сняла
резервацию узла), но текст остался — и именно на него опирался тикет #3189,
поставленный под «калибровку» ограничения, которого не существует.
Свип к тому же ходит через пул давно (serp.py:359), а бэкфилл подключён к
нему в PR #3222.

Заодно докстринг называл не тот ограничитель: свип кладёт не счётчик
провалов lease, а break по первому DomClickBlockedError (#2854) — до
ротации дело не доходит ни при каком счётчике, отсюда buckets_completed=0.

Только комментарии, поведение не меняется. Миграция 175 уже применена, а
_schema_migrations трекает по имени файла без checksum — правка текста
её не перезапустит.
2026-08-29 18:57:25 +03:00

47 lines
2.5 KiB
SQL
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.

-- Расширения схемы для регулярного парсинга наш.дом.рф /сервисы/api/kn/{flats,objects}.
-- См. план C:\Users\user\.claude\plans\crispy-waddling-swing.md.
-- ── Версионирование строк через UNIQUE (id, snapshot_date) ────────────────
-- Текущий PK на flats.id и objects.obj_id мешает сохранять несколько срезов
-- одного и того же ЖК/квартиры. Меняем на UNIQUE по (id, snapshot_date)
-- чтобы UPSERT идемпотентно записывал свежий snapshot.
ALTER TABLE domrf_kn_flats DROP CONSTRAINT IF EXISTS domrf_kn_flats_pkey;
ALTER TABLE domrf_kn_flats
ADD CONSTRAINT uq_kn_flats_id_snap UNIQUE (id, snapshot_date);
ALTER TABLE domrf_kn_objects DROP CONSTRAINT IF EXISTS domrf_kn_objects_pkey;
ALTER TABLE domrf_kn_objects
ADD CONSTRAINT uq_kn_objects_id_snap UNIQUE (obj_id, snapshot_date);
-- ── Backfill region_cd для Антоновых flats где obj_id матчится с Свердл ──
UPDATE domrf_kn_flats f
SET region_cd = 66
FROM domrf_kn_objects o
WHERE f.obj_id = o.obj_id
AND o.region_cd = 66
AND f.region_cd IS NULL;
-- ── Композитные индексы для выборок последнего среза ──────────────────────
CREATE INDEX IF NOT EXISTS idx_kn_flats_region_snap
ON domrf_kn_flats (region_cd, snapshot_date);
CREATE INDEX IF NOT EXISTS idx_kn_objects_region_snap
ON domrf_kn_objects (region_cd, snapshot_date);
-- ── Журнал прогонов скрейпера ─────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS kn_scrape_runs (
run_id BIGSERIAL PRIMARY KEY,
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
finished_at TIMESTAMPTZ,
region_codes INT[] NOT NULL,
developer_ids TEXT[],
objects_count INT,
flats_count INT,
requests_count INT,
status TEXT NOT NULL DEFAULT 'running', -- running | done | failed
error TEXT,
snapshot_date DATE NOT NULL DEFAULT CURRENT_DATE
);
CREATE INDEX IF NOT EXISTS idx_kn_runs_status ON kn_scrape_runs (status, started_at DESC);
COMMENT ON TABLE kn_scrape_runs IS 'Журнал запусков парсера наш.дом.рф kn-API. Один прогон = один (regions, developers) sweep.';