Follow-up по #582 / эпик #584. Расширить фабрику make_get_command (direct_cli/commands/_get.py, введена в #582 / PR #586) на get-команды с вложенными *FieldNames и ограничениями массивов criteria.
Группа 2 (вложенные *FieldNames + add_criteria_csv): adextensions, adimages, leads, retargeting, sitelinks, feeds, clients, agencyclients.
Группа 3 (enforce_criteria_array_limits, per-module *_GET_CRITERIA_LIMITS): dynamicads, smartadtargets, dynamicfeedadtargets, bids, bidmodifiers, reports, keywordbids.
Потребует расширения фабрики: поддержка nested_field_options (parse_nested_field_names → params.update) и прокидывание criteria-limits/пустой-criteria проверок. Механизм выбрать под реальные требования (callback criteria_builder уже есть; при необходимости — post_criteria_validators или декларативный criteria-spec).
Инварианты (обязательно): --help (порядок опций, i18n-ключи), --dry-run payload и patchability — байт-идентичны до/после. Снимать эталоны до миграции и diff'ить. Гейты: test_cli.py, test_comprehensive.py, test_dry_run.py, test_api_coverage.py (schema-parity capture), test_read_cassettes.py.
Follow-up по #582 / эпик #584. Расширить фабрику
make_get_command(direct_cli/commands/_get.py, введена в #582 / PR #586) на get-команды с вложенными*FieldNamesи ограничениями массивов criteria.Группа 2 (вложенные
*FieldNames+add_criteria_csv): adextensions, adimages, leads, retargeting, sitelinks, feeds, clients, agencyclients.Группа 3 (
enforce_criteria_array_limits, per-module*_GET_CRITERIA_LIMITS): dynamicads, smartadtargets, dynamicfeedadtargets, bids, bidmodifiers, reports, keywordbids.Потребует расширения фабрики: поддержка
nested_field_options(parse_nested_field_names → params.update) и прокидывание criteria-limits/пустой-criteria проверок. Механизм выбрать под реальные требования (callbackcriteria_builderуже есть; при необходимости —post_criteria_validatorsили декларативный criteria-spec).Инварианты (обязательно):
--help(порядок опций, i18n-ключи),--dry-runpayload и patchability — байт-идентичны до/после. Снимать эталоны до миграции и diff'ить. Гейты:test_cli.py,test_comprehensive.py,test_dry_run.py,test_api_coverage.py(schema-parity capture),test_read_cassettes.py.