"""Общие seed price-brackets для exhaustive-скрапперов (avito/cian/yandex).

EKB-настроенные (анализ прод-распределения вторички ЕКБ). Структура city-dict —
готова под per-city (multi-city: Москва пик 15-40М, Тюмень — иные; multi-city —
отдельная фича, см. vault decision). Сейчас единственный город — ekaterinburg.
"""

# (lo, hi) рубли; hi=None — открытый верхний брекет (без потолка). Закрытые
# брекеты соприкасаются — вызывающий применяет hi-1 (эксклюзивный верх), дедуп
# по source_id страхует на стыках.
_EKB_SECONDARY: list[tuple[int, int | None]] = [
    (0, 4_000_000),
    (4_000_000, 5_000_000),
    (5_000_000, 6_000_000),
    (6_000_000, 7_000_000),
    (7_000_000, 8_000_000),
    (8_000_000, 10_000_000),
    (10_000_000, 13_000_000),
    (13_000_000, 17_000_000),
    (17_000_000, 25_000_000),
    (25_000_000, 250_000_000),
    (250_000_000, None),  # 250М+ открытый catch-all (без потолка)
]

CITY_PRICE_SEED_BRACKETS: dict[str, list[tuple[int, int | None]]] = {
    "ekaterinburg": _EKB_SECONDARY,
    # B1 oblast rollout (Свердловская область, region 66) — Н.Тагил/Каменск-Уральский/
    # Первоуральск/В.Пышма/Серов вторичка дешевле ЕКБ (меньше 17-25М+ сегмента), но
    # отдельного per-city анализа прод-распределения пока не делали (сами schedule'ы
    # ship disabled — данных для брекетов ещё нет). Временно реюзаем EKB-брекеты как
    # безопасный upper-bound-охват (get_price_seed_brackets и так фоллбэчит на
    # ekaterinburg для незнакомых городов — эти entries делают выбор ЯВНЫМ, не implicit
    # fallback, чтобы легче было найти и заменить, когда появится реальная статистика).
    "nizhniy_tagil": _EKB_SECONDARY,
    "kamensk_uralskiy": _EKB_SECONDARY,
    "pervouralsk": _EKB_SECONDARY,
    "verkhnyaya_pyshma": _EKB_SECONDARY,
    "serov": _EKB_SECONDARY,
}


def get_price_seed_brackets(city: str = "ekaterinburg") -> list[tuple[int, int | None]]:
    """Seed price-brackets для города (fallback на ekaterinburg)."""
    return CITY_PRICE_SEED_BRACKETS.get(city, _EKB_SECONDARY)
