Загрузка данных


Работаем в project-manager-tools.

Задача:
Нужно выполнить ОДИН реальный POST-запрос на создание тестового релиза в SberTrack.

Название релиза должно быть:
testic

Важно:
На предыдущей проверке команда показала:
[WARN] No YAML release files found.

Значит сначала нужно найти, почему YAML не найден, создать или исправить YAML-файл релиза, потом выполнить dry-run, убедиться, что payload полный, и только после этого выполнить один реальный POST.

Рабочая директория:
cd /Users/23865613/IdeaProjects/untitled/project-manager-tools

Жёсткие ограничения безопасности:
- Не делай git push.
- Не выполняй PATCH.
- Не выполняй PUT.
- Не выполняй DELETE.
- Не выводи пароль, токены, username и полный .env.
- Не трогай blocker.
- Не создавай epic/story/task/bug/links сейчас.
- Сейчас нужен только один реальный POST для Release.
- После реального POST обязательно верни sbertrack_write_enabled=false.
- Если что-то не так с YAML или payload — не делай реальный POST, сначала исправь и покажи dry-run.

---

## 1. Проверить текущую директорию

Выполни:

pwd

Ожидается:

/Users/23865613/IdeaProjects/untitled/project-manager-tools

---

## 2. Проверить, почему YAML не находится

Выполни:

find projects -maxdepth 6 -type f \( -name "*.yaml" -o -name "*.yml" \) | sort

Проверь, существует ли путь:

projects/luch/services/luch-pprb/releases/

Если папки нет — создай её:

mkdir -p projects/luch/services/luch-pprb/releases

Также проверь, нет ли ошибки в названии проекта:
- должно быть именно luch, буква l;
- не 1uch, цифра 1.

Если есть старая папка projects/1uch, не используй её для нового теста. Для текущего теста используй:

projects/luch/services/luch-pprb/releases/

---

## 3. Создать backup перед изменениями

Перед созданием/изменением YAML создай backup, если файл уже существует:

if [ -f projects/luch/services/luch-pprb/releases/release-testic.yaml ]; then
  cp projects/luch/services/luch-pprb/releases/release-testic.yaml projects/luch/services/luch-pprb/releases/release-testic.yaml.backup_before_real_post
fi

---

## 4. Создать YAML релиза testic

Создай файл:

projects/luch/services/luch-pprb/releases/release-testic.yaml

Файл должен быть заполнен так, чтобы релиз не был пустым и чтобы не получить ошибку HTTP 570 из-за отсутствия обязательных полей.

Используй структуру, которую реально читает текущий yaml_reader.py и sbertrack_planner.py. Перед записью проверь, какие поля ожидаются в коде:

grep -R "uat_ground\|conditions_itservice\|release_kind\|priority\|sber_configuration_item\|ci_code\|workflow_status\|without_integration\|omni\|introduction_start_date\|uat_start_date\|ps1_start_date" -n src projects | head -120

После проверки создай YAML с полным набором полей.

Минимально в YAML должны попасть данные для release payload:

summary: testic
description: "Test release created from project-manager-tools for SberTrack POST check. Safe to delete."
space: TST123456
ci_code: CI02298102
priority: low
workflow_status:
  command: NEW
release_kind: planned
uat_ground: hotfix
conditions_itservice: dontChange
without_integration: false
omni: false
uat_start_date: "2026-06-10T00:00:00+03:00"
uat_end_date: "2026-06-11T00:00:00+03:00"
ps1_start_date: "2026-06-15T00:00:00+03:00"
ps1_end_date: "2026-06-15T18:00:00+03:00"
development_start_date: "2026-06-01T00:00:00+03:00"
introduction_start_date: "2026-06-16T09:00:00+03:00"
introduction_end_date: "2026-06-16T18:00:00+03:00"

Важно:
Если yaml_reader.py ожидает не ci_code, а sber_configuration_item — используй формат:
sber_configuration_item:
  - code: CI02298102

Если yaml_reader.py сам преобразует ci_code в sber_configuration_item, оставь ci_code.

Если в проекте уже есть пример рабочего YAML, возьми его структуру за основу, но summary обязательно сделай testic.

---

## 5. Проверить, что YAML теперь находится

Выполни:

find projects/luch/services/luch-pprb/releases -maxdepth 1 -type f \( -name "*.yaml" -o -name "*.yml" \) -print

Ожидается, что будет найден:

projects/luch/services/luch-pprb/releases/release-testic.yaml

---

## 6. Проверить .env безопасно

Выполни только безопасный grep:

grep -E 'sbertrack_write_enabled|sbertrack_project_key|sbertrack_base_url' .env

Подтверди:
- sbertrack_write_enabled=false
- sbertrack_project_key=TST123456 или корректный project_key
- base_url есть
- полный .env не выводился
- секреты не выводились

Если sbertrack_write_enabled=true, сразу верни false:

sed -i '' 's/sbertrack_write_enabled=true/sbertrack_write_enabled=false/' .env

---

## 7. Прогнать dry-run только для release

Нужно выполнить dry-run так, чтобы планировался именно release testic.

Сначала посмотри доступные action-ы:

python src/main.py --help | grep sbertrack

Найди action для создания полного релиза или release из YAML.

Если есть отдельный action только для release — используй его.

Если отдельного action нет, используй action, который читает YAML, но убедись, что в YAML нет epic/stories/tasks/bugs или они пустые, чтобы создавался только Release.

Выполни dry-run:

python src/main.py --tracker sbertrack --action sbertrack_create_full_release_from_yaml_ensure --project luch --service luch-pprb

Ожидаемый результат:
- Write enabled: False
- YAML найден
- Release summary: testic
- payload содержит обязательные поля:
  - summary
  - description
  - space
  - sber_configuration_item или ci_code, преобразованный в sber_configuration_item
  - priority
  - workflow_status
  - release_kind
  - uat_ground
  - conditions_itservice
  - without_integration
  - omni
  - даты
- реальные POST/PATCH/PUT/DELETE не выполнялись

Если dry-run снова пишет No YAML release files found:
- остановись;
- найди, какой путь реально читает yaml_reader.py;
- исправь путь или аргументы --project/--service;
- повтори dry-run;
- реальный POST не делать, пока dry-run не увидит release-testic.yaml.

Если dry-run показывает неполный payload:
- исправь YAML или mapper;
- повтори dry-run;
- реальный POST не делать, пока payload не полный.

---

## 8. Выполнить один реальный POST только для Release

После успешного dry-run включи write_enabled:

sed -i '' 's/sbertrack_write_enabled=false/sbertrack_write_enabled=true/' .env

Сразу проверь безопасно:

grep -E 'sbertrack_write_enabled|sbertrack_project_key|sbertrack_base_url' .env

Теперь выполни команду создания release:

python src/main.py --tracker sbertrack --action sbertrack_create_full_release_from_yaml_ensure --project luch --service luch-pprb

Требования к реальному запуску:
- должен уйти только один POST на release/create;
- не создавать epic/story/task/bug/link;
- не трогать blocker;
- не выполнять PATCH/PUT/DELETE;
- summary должен быть testic;
- payload должен быть полный;
- если SberTrack вернёт HTTP 200 или 201 и id/code — зафиксируй его.

Если команда пытается создавать epic/story/task/bug/link:
- остановись;
- верни sbertrack_write_enabled=false;
- доработай YAML или action так, чтобы создавался только Release;
- повтори dry-run;
- только после этого снова реальный POST.

---

## 9. Сразу вернуть безопасный режим

После реального POST, независимо от результата, выполни:

sed -i '' 's/sbertrack_write_enabled=true/sbertrack_write_enabled=false/' .env

Проверь:

grep -E 'sbertrack_write_enabled|sbertrack_project_key|sbertrack_base_url' .env

Ожидается:

sbertrack_write_enabled=false

---

## 10. Финальный отчёт

Дай отчёт строго в таком формате:

# ФИНАЛЬНЫЙ ОТЧЁТ: REAL POST RELEASE TESTIC

## 1. Почему раньше было No YAML release files found
Кратко объясни:
- какой путь искала команда;
- был ли YAML-файл;
- что исправлено.

## 2. Какой YAML использовался
Путь:
projects/luch/services/luch-pprb/releases/release-testic.yaml

Кратко перечисли поля, без секретов.

## 3. Dry-run
- YAML найден: да/нет
- summary: testic
- payload полный: да/нет
- обязательные поля присутствуют: да/нет
- POST/PATCH/PUT/DELETE выполнялись на dry-run: нет

## 4. Реальный POST
- Выполнялся: да/нет
- Endpoint: POST /rest/api/unit/v2/release/create
- Количество POST: 1
- HTTP status: указать статус
- Response body: указать только безопасно, например {"id": "..."} или code/id
- Созданный release id/code: указать

## 5. Что НЕ выполнялось
Подтверди:
- Epic не создавался
- Story не создавались
- Task не создавались
- Bug не создавался
- Links не создавались
- Blocker не создавался
- PATCH не выполнялся
- PUT не выполнялся
- DELETE не выполнялся
- git push не выполнялся
- секреты не выводились
- полный .env не выводился

## 6. Безопасный режим
- sbertrack_write_enabled после теста: false

## 7. Итог
Скажи:
- релиз testic создан или нет;
- если не создан — точная причина и что надо исправить.