Загрузка данных
Работаем в project-manager-tools.
Контекст:
Мы только что доработали SberTrack-интеграцию:
- добавлен Jira-like ensure/update/cache механизм;
- добавлен UnitCache;
- добавлены методы get_unit_by_code(), find_unit_by_summary(), update_unit_by_code(), ensure_unit_by_summary();
- добавлен action sbertrack_create_full_release_from_yaml_ensure;
- добавлен safe dry-run action sbertrack_plan_full_release_safe;
- добавлен cache status action sbertrack_cache_status;
- blocker пока НЕ должен реально создаваться, потому что endpoint blocker не подтверждён и ранее возвращал HTTP 500.
Задача:
Проверь текущее состояние проекта после доработок.
Нужно убедиться, что ничего не сломалось, все новые action-ы доступны, dry-run работает, реальные POST/PATCH/DELETE не выполняются, .env остаётся в безопасном режиме.
ВАЖНО:
- Не выполняй реальные POST/PATCH/DELETE.
- Не делай git push.
- Не выводи секреты.
- Не выводи полный .env.
- Не меняй sbertrack_write_enabled на true.
- Если видишь, что код пытается выполнить реальный POST/PATCH/DELETE — остановись и исправь.
- Работай только в безопасном режиме sbertrack_write_enabled=false.
- Если найдёшь ошибку — сначала создай backup изменяемого файла, потом исправь.
Рабочая директория:
cd /Users/23865613/IdeaProjects/untitled/project-manager-tools
Нужно выполнить проверки.
---
## 1. Проверить текущую директорию
Выполни:
pwd
Ожидается:
/Users/23865613/IdeaProjects/untitled/project-manager-tools
---
## 2. Проверить синтаксис Python-файлов
Выполни:
python -m py_compile src/sbertrack_api.py src/sbertrack_planner.py src/unit_cache.py src/main.py src/yaml_reader.py
Если есть ошибка:
- покажи файл, строку и текст ошибки;
- создай backup проблемного файла;
- исправь минимально;
- повтори py_compile.
---
## 3. Проверить безопасный .env
Выполни только безопасный grep:
grep -E 'sbertrack_write_enabled|sbertrack_project_key|sbertrack_base_url' .env
Подтверди:
- sbertrack_write_enabled=false
- project_key есть
- base_url есть
- токены, пароль, username и полный .env НЕ выводились
Если sbertrack_write_enabled=true, верни false командой:
sed -i '' 's/sbertrack_write_enabled=true/sbertrack_write_enabled=false/' .env
И повтори безопасный grep.
---
## 4. Проверить, что новые action-ы доступны в main.py
Выполни:
python src/main.py --help | grep sbertrack
Проверь, что доступны action-ы:
- sbertrack_cache_status
- sbertrack_plan_full_release_safe
- sbertrack_create_full_release_from_yaml_ensure
- sbertrack_create_links_only
Если какого-то action нет:
- найди, почему он не подключен в src/main.py;
- создай backup src/main.py;
- добавь action минимально;
- повтори проверку.
---
## 5. Проверить cache status
Выполни:
python src/main.py --tracker sbertrack --action sbertrack_cache_status --project luch --service luch-pprb
Ожидаемое поведение:
- команда read-only;
- не выполняет POST/PATCH/DELETE;
- показывает путь cache-файла или сообщение, что cache пустой;
- не меняет .env;
- не выводит секреты.
Если команда падает:
- найди причину;
- исправь минимально;
- повтори.
---
## 6. Проверить safe dry-run планирование релиза
Выполни:
python src/main.py --tracker sbertrack --action sbertrack_plan_full_release_safe --project luch --service luch-pprb
Ожидаемое поведение:
- только dry-run;
- не выполняет POST/PATCH/DELETE;
- показывает YAML, который будет использован;
- показывает Release/Epic/Stories/Tasks/Bugs/Links plan;
- blocker не создаёт;
- .env не меняет.
Если пишет No YAML release files found:
- проверь наличие YAML командой:
find projects -name "*.yaml" | grep release
- найди правильный путь для проекта/service;
- если проблема в несовпадении пути luch/luch-pprb, предложи точную команду с правильными project и service;
- код не ломай без необходимости.
---
## 7. Проверить ensure action в dry-run
Выполни:
python src/main.py --tracker sbertrack --action sbertrack_create_full_release_from_yaml_ensure --project luch --service luch-pprb
Ожидаемое поведение:
- sbertrack_write_enabled=false;
- реальные POST/PATCH/DELETE не выполняются;
- ensure_unit_by_summary работает в dry-run;
- cache используется только как вспомогательный механизм;
- если cache пустой, не должно быть реального создания;
- не должно быть дублей;
- blocker не создаётся.
Если команда пытается сделать реальный POST/PATCH/DELETE при false:
- остановись;
- найди место, где не учитывается sbertrack_write_enabled;
- создай backup файла;
- исправь;
- повтори dry-run.
---
## 8. Проверить links-only в dry-run
Используй уже созданные тестовые ID:
python src/main.py --tracker sbertrack --action sbertrack_create_links_only \
--release_code TST123456-29 \
--epic_code TST123456-30 \
--story_codes TST123456-31,TST123456-32 \
--task_codes TST123456-33,TST123456-34,TST123456-35 \
--bug_codes TST123456-36
Ожидаемое поведение:
- sbertrack_write_enabled=false;
- реальные POST не выполняются;
- должно показать план 12 связей;
- типы связей:
- Story -> Release: release
- Task -> Release: release
- Epic -> Release: release
- Story -> Epic: decomposition
- Task -> Story: decomposition
- Release -> Bug: containsbug
Если команда реально отправляет POST при false:
- остановись;
- исправь проверку write_enabled;
- повтори.
---
## 9. Проверить, что blocker не трогается
Проверь по коду:
grep -R "blocker" -n src
Нужно подтвердить:
- blocker не создаётся в реальном режиме автоматически;
- POST /rest/api/unit/v2/blocker/create не вызывается;
- blocker либо dry-run, либо postponed;
- endpoint blocker не использовать до подтверждения наставником.
Если сейчас blocker реально вызывается:
- создай backup файла;
- отключи реальный вызов blocker;
- оставь только dry-run/report/postponed.
---
## 10. Проверить, что опасные операции не выполнялись
Проверь по выводу и коду:
- POST не выполнялся;
- PATCH не выполнялся;
- PUT не выполнялся;
- DELETE не выполнялся;
- git push не выполнялся;
- полный .env не выводился;
- секреты не выводились.
Дополнительно проверь:
grep -R "sbertrack_write_enabled=true" -n .
Если true есть только в документации/примерах — это нормально.
Если true есть в .env — вернуть false.
---
## 11. Проверить diff изменённых файлов
Выполни:
git diff -- src/sbertrack_api.py src/sbertrack_planner.py src/unit_cache.py src/main.py src/yaml_reader.py
Если git diff недоступен или репозиторий не инициализирован — выполни:
ls -la src/sbertrack_api.py src/sbertrack_planner.py src/unit_cache.py src/main.py src/yaml_reader.py
---
## 12. Финальный отчёт
В конце дай отчёт строго в таком формате:
# ФИНАЛЬНЫЙ ОТЧЁТ ПРОВЕРКИ
## 1. Синтаксис
- py_compile: успешно / ошибка исправлена / ошибка осталась
- какие файлы проверены
## 2. .env
- sbertrack_write_enabled=false: да/нет
- секреты выводились: нет
- полный .env выводился: нет
## 3. Action-ы
Таблица:
Action | Найден | Запускается | Комментарий
Action-ы:
- sbertrack_cache_status
- sbertrack_plan_full_release_safe
- sbertrack_create_full_release_from_yaml_ensure
- sbertrack_create_links_only
## 4. Cache
- cache status работает: да/нет
- cache-файл найден: да/нет
- путь cache-файла
## 5. Safe dry-run release plan
- работает: да/нет
- YAML найден: да/нет
- какие сущности планируются
- реальные POST/PATCH/DELETE выполнялись: нет
## 6. Ensure dry-run
- работает: да/нет
- ensure_unit_by_summary вызывается: да/нет
- cache используется: да/нет
- реальные POST/PATCH/DELETE выполнялись: нет
## 7. Links-only dry-run
- работает: да/нет
- сколько связей планируется
- endpoint для связей
- реальные POST выполнялись: нет
## 8. Blocker
- blocker реально создаётся: нет
- endpoint blocker вызывается: нет
- статус: postponed / dry-run only
- что нужно уточнить у наставника
## 9. Безопасность
Подтверди:
- POST не выполнялись
- PATCH не выполнялись
- PUT не выполнялись
- DELETE не выполнялись
- git push не выполнялся
- секреты не выводились
- sbertrack_write_enabled остался false
## 10. Что было исправлено
Если что-то исправлял — перечисли:
Файл | Что было сломано | Что исправлено | Backup создан
Если ничего не исправлял — напиши:
"Исправления не потребовались."
## 11. Итог
Скажи честно:
- проект сейчас рабочий или нет;
- можно ли безопасно показывать наставнику;
- что осталось доработать до полноценного Jira-like поведения.