gendesign/_wt-cadval/data/sql/72_objective_sync_config.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

46 lines
3.4 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.

-- Динамическая конфигурация Objective sync — single-row settings.
--
-- Зачем нужна:
-- 1. В админке /admin/scrape/objective можно менять параметры запроса
-- (groups, use_ddu/dkp, period_months_back, inter_group_delay) без редеплоя.
-- 2. Cron-расписание тоже хранится здесь — Celery beat читает его при старте.
-- Изменение требует restart beat-контейнера (это указано в UI как hint).
--
-- Pattern: single-row (id=1), UPSERT для безопасных обновлений.
-- Если строки нет — task/beat падают на settings.* env как fallback.
CREATE TABLE IF NOT EXISTS objective_sync_config (
id SMALLINT PRIMARY KEY DEFAULT 1 CHECK (id = 1),
-- Cron-расписание для Celery beat (5-полевой формат: 'minute hour dom month dow').
-- Celery beat перечитывает это поле только при старте — после изменения
-- нужен `docker compose restart beat`.
cron_schedule TEXT NOT NULL DEFAULT '0 6 * * tue',
-- Группы для sync (csv). Эмпирически проверены на тарифе:
-- 'Свердловская область', 'Челябинск', 'Тюмень', 'Пермь',
-- 'Екатеринбург', 'Верхняя Пышма', 'Берёзовский', 'Нижний Тагил',
-- 'Каменск-Уральский', 'Первоуральск', 'Новоуральск', 'Сысерть'.
groups_csv TEXT NOT NULL DEFAULT 'Свердловская область,Челябинск,Тюмень,Пермь',
-- Параметры запроса /v2/Report/GetReport.
use_ddu BOOLEAN NOT NULL DEFAULT TRUE,
use_dkp BOOLEAN NOT NULL DEFAULT TRUE,
-- Сколько месяцев назад тянуть для Сводных отчётов (corp_sum).
-- 1 = только последний полный месяц (default). 12 = весь год.
-- Поквартирные/Лоты не имеют дат — всегда snapshot.
period_months_back SMALLINT NOT NULL DEFAULT 1 CHECK (period_months_back BETWEEN 1 AND 24),
-- Пауза между группами в одном task'е (секунды). Защита от 429.
inter_group_delay_s SMALLINT NOT NULL DEFAULT 30 CHECK (inter_group_delay_s BETWEEN 0 AND 300),
-- Пауза между HTTP-запросами в client (мс). Передаётся в ObjectiveClient(rate_ms=…).
rate_ms SMALLINT NOT NULL DEFAULT 3000 CHECK (rate_ms BETWEEN 0 AND 10000),
-- Сколько ретраев на 429/5xx.
retries SMALLINT NOT NULL DEFAULT 2 CHECK (retries BETWEEN 0 AND 5),
updated_at timestamptz NOT NULL DEFAULT NOW(),
updated_by TEXT
);
COMMENT ON TABLE objective_sync_config IS
'Single-row динамическая конфигурация Objective sync. Все task-ы и beat '
'читают отсюда. Если строки нет — fallback на settings.* env.';
-- Засеваем единственную строку с дефолтами (если ещё не создана).
INSERT INTO objective_sync_config (id) VALUES (1)
ON CONFLICT (id) DO NOTHING;