Skip to content

_bidding_strategy: дедуп пар build_*_search/network_strategy через config-объект #592

@axisrow

Description

@axisrow

Follow-up по #581 / эпик #584 (находка #4 из аудита — самый объёмный пласт, ~1400 строк).

Распространить уже доказанный _TextStrategyConfig (NamedTuple) + _build_text_strategy_block на остальные типы кампаний: каждая пара build_*_search_strategy/build_*_network_strategy дублирует весь пайплайн (field_support, валидация detail-флагов, CPA-обработка, сборка budget-блоков).

Разбить по одному PR на тип кампании (каждая пара ~350 строк дублей → отдельный PR ≤1000 добавленных):

  • dynamic_text, smart_campaign, unified_campaign, mobile_app.

Заодно (находка reuse-ревью #581): переиспользовать новые _build_custom_period_budget/_build_exploration_budget в inline budget-валидации dynamic/smart/mobile builder'ов (сейчас там свой паттерн *_values dict + len != len проверка). Не забыть exploration_yes_only=False для этих поверхностей (по cached WSDL).

Инварианты: --help, --dry-run payload, тексты ошибок байт-идентичны. Эталоны до/после по каждому типу кампании. Гейты: test_dry_run.py, test_wsdl_parity_gate.py, test_cli_contract.py. НЕ трогать реестр CAMPAIGN_TYPE_BUILDERS и build_*_base (точки расширения).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions