geocode-missing получил target=listings|deals. deals.geocode_tried_at добавлен в миграцию 005. cron геокодит и сделки Росреестра по улицам.
22 lines
1.4 KiB
SQL
22 lines
1.4 KiB
SQL
-- Trade-In MVP — отслеживание попыток геокодинга.
|
||
--
|
||
-- Проблема: geocode-missing раньше выбирал ВСЕ строки с lat IS NULL. Адреса,
|
||
-- которые Nominatim не может распознать (~12%), выбирались на каждом прогоне
|
||
-- → бесконечный ретрай + cron-таймаут.
|
||
--
|
||
-- Решение: колонка geocode_tried_at. После КАЖДОЙ попытки (успех или провал)
|
||
-- ставим NOW(). geocode-missing выбирает только не-пробованные ИЛИ
|
||
-- пробованные >7 дней назад. Failed-адреса ретраятся раз в неделю, не каждый cron.
|
||
--
|
||
-- Идемпотентно (ADD COLUMN IF NOT EXISTS) — безопасно при каждом деплое.
|
||
|
||
ALTER TABLE listings ADD COLUMN IF NOT EXISTS geocode_tried_at timestamptz;
|
||
ALTER TABLE deals ADD COLUMN IF NOT EXISTS geocode_tried_at timestamptz;
|
||
|
||
-- Частичные индексы: ускоряют выборку «что ещё геокодить».
|
||
CREATE INDEX IF NOT EXISTS listings_geocode_pending_idx
|
||
ON listings (geocode_tried_at NULLS FIRST)
|
||
WHERE lat IS NULL;
|
||
CREATE INDEX IF NOT EXISTS deals_geocode_pending_idx
|
||
ON deals (geocode_tried_at NULLS FIRST)
|
||
WHERE lat IS NULL;
|