Проблема найдена: при запуске
PYTHONPATH=src python src/main.py --tracker sbertrack --action sbertrack_test_create_release
main.py сначала создаёт BacklogPlanning, а BacklogPlanning в __init__ вызывает tracker_api.get_field_mapping().
Для SberTrack этот метод пока intentionally disabled, поэтому тестовый action падает до выполнения create_test_release_issue.
Нужно исправить routing action, а не обходить через python -c.
Важно:
- Не делать push.
- Не делать commit без моего подтверждения.
- Не запускать plan_releases.
- Не использовать Jira.
- Не создавать больше одной задачи.
- Не выводить .env.
- Не выводить логин, пароль или токены.
- Не делать grep/cat .env.
- Не трогать реальные секреты.
- Не выполнять реальный POST, пока я отдельно не подтвержу.
Задача:
Сделать так, чтобы action sbertrack_test_create_release выполнялся через main.py, но ДО создания BacklogPlanning.
Логика должна быть такая:
1. main.py парсит args.
2. Если args.tracker == "sbertrack" и args.action == "sbertrack_test_create_release":
- загрузить sbertrack_api;
- вызвать sbertrack_api.create_test_release_issue();
- вывести безопасный результат;
- завершить программу;
- НЕ создавать BacklogPlanning;
- НЕ вызывать get_field_mapping();
- НЕ импортировать/создавать JiraAPI;
- НЕ запускать plan_releases.
3. Для всех остальных action оставить старую логику без изменений.
Нужно проверить, что:
- Jira-режим по умолчанию не сломан;
- обычный plan_releases работает по старому пути;
- только sbertrack_test_create_release идёт по отдельному short-circuit пути.
Дополнительно:
Сейчас project key должен быть новым тестовым пространством:
1231TST1231
Payload должен быть:
{
"fields": {
"project": {
"key": "1231TST1231"
},
"summary": "TEST project-manager-tools SberTrack release integration",
"issuetype": {
"name": "Релиз"
},
"description": "Test task created by project-manager-tools SberTrack integration. Safe to delete."
}
}
Сначала выполнить только dry-run:
- sbertrack_write_enabled=false;
- POST не отправлять;
- показать sanitized payload;
- подтвердить, что BacklogPlanning не создавался;
- подтвердить, что get_field_mapping не вызывался;
- подтвердить, что Jira не использовалась.
После изменения кода выполнить проверки:
1. python -m compileall src
2. pytest только по SberTrack тестам, если доступен:
python -m pytest src/shared/lib/sbertrack/tests/test_sbertrack_api.py
3. Запуск dry-run:
PYTHONPATH=src python src/main.py --tracker sbertrack --action sbertrack_test_create_release
Ожидаемый dry-run результат:
- нет вызова BacklogPlanning;
- нет ошибки get_field_mapping;
- POST не отправлен;
- показан sanitized payload с project.key=1231TST1231.
После этого остановись и покажи отчёт:
1. какие файлы изменены;
2. почему раньше падало;
3. как исправлено;
4. результат compileall;
5. результат тестов;
6. результат dry-run;
7. готово ли к одному реальному POST после моего подтверждения.
Реальный POST пока не запускать.