You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Зонтичный трекер по результатам аудита всего проекта на дублирование и возможности упрощения (xhigh-effort: 4 параллельных аудитора по областям + ручная верификация чтением кода). Рабочее дерево чистое на коммите f77b52e.
Кодовая база зрелая — utils.py, _lifecycle.py (17 файлов), _batch.py показывают, что дедуп уже идёт. Осталось несколько пластов, где паттерн доказан, а тиражируется руками.
parse_ids vs add_criteria_csv и контракт пустого SelectionCriteria — стиль/контракт ошибок, вне темы дедупа.
Дисциплина при рефакторинге
Все находки сохраняют CLI-поверхность 1:1: i18n-ключи, тексты ошибок и --dry-run payload должны остаться байт-идентичными. Гейты test_wsdl_parity_gate.py, test_dry_run.py, test_api_coverage.py — обязательны к прохождению.
Зонтичный трекер по результатам аудита всего проекта на дублирование и возможности упрощения (xhigh-effort: 4 параллельных аудитора по областям + ручная верификация чтением кода). Рабочее дерево чистое на коммите
f77b52e.Кодовая база зрелая —
utils.py,_lifecycle.py(17 файлов),_batch.pyпоказывают, что дедуп уже идёт. Осталось несколько пластов, где паттерн доказан, а тиражируется руками.Дочерние задачи (по убыванию ROI)
_bidding_strategy.py(~2000 строк дублей): 4 копии_build_*_custom_period_budget, 4 копии_build_*_exploration_budget(со скрытым YES-only расхождениемbuild_*_search/*_network_strategy, 3 копии_assemble_*_strategy_block.commands/: фабрикаmake_get_commandдля идентичного get-скелета (26 файлов, 72 вхожденияif dry_run); локальные lifecycle-обёртки; дубльset-bids; boilerplateadd._non_emptyбайт-в-байт, парсингID=VALUE×3, парсинг списков ID ×3); единая captcha-детекция междуwsdl_coverage.pyиreports_coverage.py.Рекомендованный порядок
make_get_command(паттерн уже доказан_lifecycle.py).Намеренно НЕ выносится
CAMPAIGN_TYPE_BUILDERSреестр — задел под расширение (campaigns bidding strategies: TextCampaign search branch #361–369), не дубль.Дисциплина при рефакторинге
Все находки сохраняют CLI-поверхность 1:1: i18n-ключи, тексты ошибок и
--dry-runpayload должны остаться байт-идентичными. Гейтыtest_wsdl_parity_gate.py,test_dry_run.py,test_api_coverage.py— обязательны к прохождению.