geocode_tried_at: после каждой попытки NOW(), повтор только через 7 дней. Эндпоинт чанкуется (limit=100), отдаёт remaining. cron вызывает в цикле.
18 lines
1.2 KiB
SQL
18 lines
1.2 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;
|
||
|
||
-- Частичный индекс: ускоряет выборку «что ещё геокодить».
|
||
CREATE INDEX IF NOT EXISTS listings_geocode_pending_idx
|
||
ON listings (geocode_tried_at NULLS FIRST)
|
||
WHERE lat IS NULL;
|