masters launch — запуск черновика должен быть отдельной командой, а не флагом update --launch
Сейчас единственный способ опубликовать DRAFT-кампанию — masters update <id> --launch. Это расходится и с вебом, и с контрактом остальных команд
этого CLI.
1. --launch нельзя передать в одиночку
$ direct masters update 713231614 --launch --format json
Error: Provide at least one of --weekly-budget, --promotion-goal,
--directs-helps/--no-directs-helps, --name, --headline, --text, --image.
(direct_cli/commands/masters.py:1096)
--launch — модификатор сохранения формы, а не действие: он выбирает,
какой из двух терминальных кнопок сохранить (#668). Поэтому запустить
черновик, ничего не меняя, невозможно — приходится передавать поле
повторно с тем же значением только ради того, чтобы дойти до кнопки:
$ direct masters update 713231614 --weekly-budget 3000 --launch --format json
{
"CampaignId": 713231614,
"WeeklyBudget": 3000
}
Это искусственная мутация: лишний проход _set_weekly_budget +
_verify_saved на ровном месте, при том что запись значения, которое уже
стоит, не нужна никому.
В вебе так не надо. На странице черновика кнопка «Запустить кампанию»
доступна сама по себе, правка полей для запуска не требуется.
2. Расходится с контрактом соседних команд
У campaigns каждое изменение состояния — отдельная команда-глагол, а не
флаг к update:
direct campaigns resume --id N
direct campaigns suspend --id N
direct campaigns archive --id N
direct campaigns unarchive --id N
У masters этот же принцип уже соблюдён для трёх команд —
masters suspend|resume|archive CAMPAIGN_IDS (список через запятую,
ничего не правят, проверяют смену статуса, идемпотентны). Из общего ряда
выбивается только запуск.
3. Молчаливый результат
Вывод выше — {"CampaignId": ..., "WeeklyBudget": 3000}. Про смену
статуса нет ни слова, хотя кампания реально ушла DRAFT → MODERATION
(проверено отдельным masters list). Самое необратимое действие команды
проходит молча.
При этом в copy_master для этого уже есть поле:
result["Launched"] = launch (direct_cli/browser/masters.py:1239).
Предлагаемое решение
direct masters launch CAMPAIGN_IDS
Контракт — как у masters suspend|resume|archive: список ID через
запятую, проверка фактической смены статуса перед рапортом об успехе,
идемпотентность на не-DRAFT (как --launch сейчас: «Has no effect on a
non-DRAFT campaign»). Реализация переиспользует уже существующий
_click_draft_terminal_button(page, campaign_id, launch=True) из #668.
Практическая мотивация: в партии Мастеров 2026-08 — 20 черновиков.
Разница между одной командой со списком и 20 вызовами update с
фиктивной правкой бюджета существенная.
Судьбу update --launch после этого — на усмотрение: оставить как
низкоуровневый «сохранить-и-опубликовать» или убрать в пользу launch.
Минимум — добавить "Launched": true в вывод.
Живая проверка (что уже подтверждено)
|
|
| CLI |
direct, version 0.5.1 |
| main |
aad9ccc |
| Кампания |
713231614 «Мастер ИЖ-1 Сосуды и вены (холодный)» |
| Результат |
DRAFT → MODERATION, подтверждено masters list |
| Дата |
2026-08-04 |
Сам механизм публикации из #668 работает — претензия только к форме
вызова и к молчаливому выводу.
Связано: #668 (DRAFT save/launch), #702 (живая проверка
--weekly-budget), #648 (умбрелла).
masters launch— запуск черновика должен быть отдельной командой, а не флагомupdate --launchСейчас единственный способ опубликовать DRAFT-кампанию —
masters update <id> --launch. Это расходится и с вебом, и с контрактом остальных командэтого CLI.
1.
--launchнельзя передать в одиночку(
direct_cli/commands/masters.py:1096)--launch— модификатор сохранения формы, а не действие: он выбирает,какой из двух терминальных кнопок сохранить (#668). Поэтому запустить
черновик, ничего не меняя, невозможно — приходится передавать поле
повторно с тем же значением только ради того, чтобы дойти до кнопки:
Это искусственная мутация: лишний проход
_set_weekly_budget+_verify_savedна ровном месте, при том что запись значения, которое ужестоит, не нужна никому.
В вебе так не надо. На странице черновика кнопка «Запустить кампанию»
доступна сама по себе, правка полей для запуска не требуется.
2. Расходится с контрактом соседних команд
У
campaignsкаждое изменение состояния — отдельная команда-глагол, а нефлаг к
update:У
mastersэтот же принцип уже соблюдён для трёх команд —masters suspend|resume|archive CAMPAIGN_IDS(список через запятую,ничего не правят, проверяют смену статуса, идемпотентны). Из общего ряда
выбивается только запуск.
3. Молчаливый результат
Вывод выше —
{"CampaignId": ..., "WeeklyBudget": 3000}. Про сменустатуса нет ни слова, хотя кампания реально ушла
DRAFT → MODERATION(проверено отдельным
masters list). Самое необратимое действие командыпроходит молча.
При этом в
copy_masterдля этого уже есть поле:result["Launched"] = launch(direct_cli/browser/masters.py:1239).Предлагаемое решение
Контракт — как у
masters suspend|resume|archive: список ID череззапятую, проверка фактической смены статуса перед рапортом об успехе,
идемпотентность на не-DRAFT (как
--launchсейчас: «Has no effect on anon-DRAFT campaign»). Реализация переиспользует уже существующий
_click_draft_terminal_button(page, campaign_id, launch=True)из #668.Практическая мотивация: в партии Мастеров 2026-08 — 20 черновиков.
Разница между одной командой со списком и 20 вызовами
updateсфиктивной правкой бюджета существенная.
Судьбу
update --launchпосле этого — на усмотрение: оставить какнизкоуровневый «сохранить-и-опубликовать» или убрать в пользу
launch.Минимум — добавить
"Launched": trueв вывод.Живая проверка (что уже подтверждено)
direct, version 0.5.1aad9ccc713231614«Мастер ИЖ-1 Сосуды и вены (холодный)»DRAFT → MODERATION, подтвержденоmasters listСам механизм публикации из #668 работает — претензия только к форме
вызова и к молчаливому выводу.
Связано: #668 (DRAFT save/launch), #702 (живая проверка
--weekly-budget), #648 (умбрелла).