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


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

Цель:
Проверить финальную версию SberTrack-интеграции в рабочей корпоративной сети, где API доступен.

Важно:
Сейчас ничего не дорабатываем без необходимости.
Сначала только проверяем.
Если что-то сломано — сначала покажи ошибку и причину, потом предложи минимальное исправление.
Не делай git push.
Не выводи секреты.
Не выводи полный .env.
PATCH/PUT/DELETE не выполнять.
Blocker не создавать.
Реальные POST выполнять только после dry-run и только для тестовых сущностей в пространстве TST123456.

Контекст:
Ранее дома API возвращал HTTP 403 даже на GET /rest/api/user/v1/current-info и GET /rest/api/space/v3/TST123456.
Сейчас я на рабочей сети, ожидаем, что доступ к API есть.

В проекте уже реализовано:
- создание release
- создание epic
- создание story
- создание task
- создание bug
- создание links
- sbertrack_write_enabled=false по умолчанию
- dry-run режим
- UnitCache
- ensure/update/cache Jira-like поведение частично
- action sbertrack_cache_status
- action sbertrack_plan_full_release_safe
- action sbertrack_create_full_release_from_yaml_ensure
- action sbertrack_create_links_only
- blocker отложен, endpoint не подтверждён

Нужно выполнить финальную проверку по шагам.

---

# 1. Проверка директории

Выполни:

pwd

Убедись, что директория:

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

Если не там — перейди туда.

---

# 2. Безопасная проверка .env

Не выводи полный .env.

Выполни:

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

Проверь:
- sbertrack_base_url есть
- sbertrack_project_key=TST123456
- sbertrack_write_enabled=false
- sbertrack_username есть

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

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

---

# 3. Проверка синтаксиса

Выполни:

python -m py_compile src/sbertrack_api.py src/sbertrack_planner.py src/unit_cache.py src/main.py src/yaml_reader.py

Ожидаю:
- ошибок синтаксиса нет

Если есть ошибка — не продолжай POST. Покажи ошибку и предложи минимальное исправление.

---

# 4. Проверка action-ов

Проверь, что в src/main.py есть action-ы:

- sbertrack_cache_status
- sbertrack_plan_full_release_safe
- sbertrack_create_full_release_from_yaml_ensure
- sbertrack_create_links_only

Нужно вывести таблицу:

| Action | Найден | Назначение |

---

# 5. Проверка доступности SberTrack API через GET

Сделай read-only GET-проверку через текущий клиент проекта.

Проверить:
- GET /rest/api/user/v1/current-info
- GET /rest/api/space/v3/TST123456

Важно:
- не выводи пароль;
- не выводи токен;
- не выводи полный response, если там персональные данные;
- покажи только HTTP status и краткий sanitized вывод.

Ожидаю:
- если HTTP 200/2xx — доступ есть, можно продолжать;
- если HTTP 403 — остановиться и написать, что проблема всё ещё в доступе/VPN/IP/credentials;
- если HTTP 401 — проблема в auth;
- если HTTP 404 — проверить base_url/endpoint.

---

# 6. Проверка YAML для тестового релиза

Проверь, есть ли файл:

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

Если файла нет — создай его в текущем проекте.

Содержимое должно быть таким:

summary: testic
description: Test release created from project-manager-tools for SberTrack final 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"
introduction_start_date: "2026-06-16T09:00:00+03:00"
epic:
  summary: testic epic
  description: Test epic for SberTrack final check. Safe to delete.
stories:
  - summary: testic story 1
    description: Test story 1 for SberTrack final check. Safe to delete.
  - summary: testic story 2
    description: Test story 2 for SberTrack final check. Safe to delete.
tasks:
  - summary: testic task 1
    description: Test task 1 for SberTrack final check. Safe to delete.
  - summary: testic task 2
    description: Test task 2 for SberTrack final check. Safe to delete.
  - summary: testic task 3
    description: Test task 3 for SberTrack final check. Safe to delete.
bugs:
  - summary: testic bug 1
    description: Test bug 1 for SberTrack final check. Safe to delete.

После этого покажи:
- путь файла
- summary
- количество epic/story/task/bug
- секретов нет

---

# 7. Safe dry-run планирования

Выполни:

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

Ожидаю:
- YAML найден
- release testic найден в YAML
- epic/stories/tasks/bugs распознаны
- payload полный
- POST/PATCH/PUT/DELETE не выполнялись
- sbertrack_write_enabled=false

Если снова будет No YAML release files found — остановись и проверь yaml_reader.py / путь / glob pattern.

---

# 8. Проверка cache

Выполни:

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

Ожидаю:
- команда работает
- cache читается
- если cache пустой — это не ошибка
- команда read-only
- cache не модифицируется

---

# 9. Dry-run ensure

Выполни:

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

Важно:
sbertrack_write_enabled должен оставаться false.

Ожидаю:
- ensure pattern отрабатывает в dry-run
- если cache hit — показывает code
- если cache miss — показывает, что создал бы сущность
- реальных POST нет
- PATCH/PUT/DELETE нет

---

# 10. Реальный POST полного тестового релиза

Если шаги 1-9 успешны и GET к API работает, сделай один реальный запуск создания полного тестового релиза testic.

Перед запуском:
- покажи sanitized summary сущностей;
- покажи endpoint-ы;
- покажи, что sbertrack_write_enabled=false;
- предупреди, что сейчас будет один реальный запуск.

Затем:

sed -i '' 's/sbertrack_write_enabled=false/sbertrack_write_enabled=true/' .env
python src/main.py --tracker sbertrack --action sbertrack_create_full_release_from_yaml_ensure --project luch --service luch-pprb
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

---

# 11. Что должно быть создано

Ожидаю создание:

- Release: testic
- Epic: testic epic
- Story: testic story 1
- Story: testic story 2
- Task: testic task 1
- Task: testic task 2
- Task: testic task 3
- Bug: testic bug 1

И связи:
- Story -> Release, type=release
- Task -> Release, type=release
- Epic -> Release, type=release
- Story -> Epic, type=decomposition
- Task -> Story, type=decomposition
- Release -> Bug, type=containsbug

Blocker не создавать.

---

# 12. Проверка результата

После реального запуска выведи:

| Сущность | Summary | HTTP status | Created code/id | Response body sanitized |

Для связей:

| Source | Destination | Type | HTTP status | Response body sanitized |

Ожидаю:
- создание сущностей: HTTP 200 или 201
- создание связей: HTTP 201
- response body для сущностей содержит id/code
- response body для связей может быть true

---

# 13. Если возникли ошибки

Если HTTP 570:
- проверь обязательные поля payload;
- покажи sanitized payload;
- скажи, какого поля не хватает.

Если HTTP 403:
- проверь GET;
- если GET тоже 403 — доступ/VPN/credentials;
- если GET 200, а POST 403 — права на создание в TST123456 или endpoint.

Если HTTP 404:
- проверить endpoint.

Если дубли:
- проверить cache и ensure.

Если links не создаются:
- проверить, что source/destination code реально получены;
- проверить type: release/decomposition/containsbug.

Не делай PATCH/PUT/DELETE.

---

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

В конце выведи отчёт:

## ФИНАЛЬНЫЙ ОТЧЁТ ПРОВЕРКИ

### 1. Окружение
- Текущая директория:
- API доступен: да/нет
- GET current-info status:
- GET space status:

### 2. Синтаксис
- py_compile: успешно/ошибка

### 3. .env безопасность
- sbertrack_write_enabled в начале:
- sbertrack_write_enabled в конце:
- секреты выводились: нет
- полный .env выводился: нет

### 4. YAML
- release-testic.yaml найден/создан:
- путь:
- summary:
- payload полный: да/нет

### 5. Dry-run
- plan_full_release_safe: успешно/ошибка
- cache_status: успешно/ошибка
- ensure dry-run: успешно/ошибка

### 6. Реальный POST
- Выполнялся: да/нет
- Что создано:
- Какие HTTP status:
- Created IDs/codes:

### 7. Links
- Выполнялись: да/нет
- Количество:
- HTTP status:
- Ошибки:

### 8. Blocker
- Создавался: нет
- Причина: endpoint/модель blocker не подтверждены

### 9. Безопасность
Подтверди:
- POST выполнялся только для тестового YAML testic
- PATCH не выполнялся
- PUT не выполнялся
- DELETE не выполнялся
- git push не выполнялся
- blocker не создавался
- sbertrack_write_enabled=false возвращён

### 10. Итог
Скажи:
- финальная версия рабочая: да/нет
- что именно работает
- что осталось доработать
- можно ли показывать наставнику