Загрузка данных
Используй установленный skill:
project_manager
Skill расположен здесь:
/Users/23865613/.gigacode/skills/project_manager
Работаем в проекте:
/Users/23865613/IdeaProjects/untitled/project-manager-tools
Цель:
Провести контролируемую проверку установленного skill project_manager на реальном SberTrack API.
Важно:
Это проверка именно установленной копии skill из каталога GigaCode, а не исходной папки zadanie1/project_manager.
Не изменяй исходный skill.
Не копируй в него .env.
Для credentials используй конфигурацию рабочего проекта project-manager-tools.
Не выводи логин и пароль.
Не выводи полный .env.
Не печатай заголовок Authorization.
Не делай git push.
Проверку выполнить строго по этапам.
==================================================
ЭТАП 1. ПРОВЕРКА ИСТОЧНИКА SKILL
==================================================
Подтверди, что используется установленный skill:
/Users/23865613/.gigacode/skills/project_manager
Покажи:
- путь к загруженному SKILL.md;
- путь к src/main.py;
- путь к src/sbertrack_api.py;
- имя skill из frontmatter;
- что GigaCode распознал skill project_manager.
Не изменяй файлы установленного skill.
==================================================
ЭТАП 2. ПРОВЕРКА КОНФИГУРАЦИИ БЕЗ СЕКРЕТОВ
==================================================
Проверь в рабочем проекте только наличие публичных настроек:
- sbertrack_base_url;
- sbertrack_project_key;
- sbertrack_write_enabled.
Не выводи:
- username;
- password;
- токены;
- Authorization;
- полный .env.
Ожидаемое состояние перед тестом:
sbertrack_project_key=TST123456
sbertrack_write_enabled=false
Если значение write_enabled другое, вернуть его в false до начала теста.
==================================================
ЭТАП 3. READ-ONLY API CHECK
==================================================
Выполни безопасные реальные запросы чтения:
1. GET /rest/api/user/v1/current-info
2. GET /rest/api/space/v3/TST123456
Нужно получить:
- HTTP status;
- имя текущего пользователя без credentials;
- код пространства;
- подтверждение доступности API.
Если любой запрос вернул не 200:
- прекратить тест;
- не выполнять POST/PATCH;
- вернуть sbertrack_write_enabled=false;
- вывести причину.
==================================================
ЭТАП 4. DRY-RUN ЧЕРЕЗ УСТАНОВЛЕННЫЙ SKILL
==================================================
Подготовить отдельный тестовый YAML в рабочем проекте.
Путь:
projects/luch/services/luch-pprb/releases/release-skill-api-test.yaml
Использовать уникальный префикс:
skill-api-test-20260713-001
YAML должен содержать:
- 1 release;
- 1 epic;
- 1 story;
- 1 task;
- 1 bug;
- 1 blocker;
- связи между ними.
Все поля должны быть заполнены рабочими значениями.
Для release использовать подтвержденные поля:
summary: skill-api-test-20260713-001
description: Controlled API test created by installed GigaCode project_manager skill. Safe to delete.
space: TST123456
cl_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-07-20T10:00:00+03:00"
introduction_start_date: "2026-07-21T09:00:00+03:00"
Для дочерних сущностей использовать уникальные summary:
- skill-api-test-20260713-001 epic
- skill-api-test-20260713-001 story
- skill-api-test-20260713-001 task
- skill-api-test-20260713-001 bug
- skill-api-test-20260713-001 blocker
Для blocker использовать подтвержденный формат:
summary: skill-api-test-20260713-001 blocker
description: Controlled blocker test from installed project_manager skill. Safe to delete.
space: TST123456
priority: low
workflow_status:
command: NEW
reporter: текущий пользователь
reason_for_blocking:
code: external_wait
sber_configuration_item:
- code: CI02298102
На этапе dry-run:
- sbertrack_write_enabled=false;
- показать все payload;
- не выводить credentials;
- не выполнять POST;
- не выполнять PATCH;
- не создавать links.
Проверить, что skill распознал:
- release;
- epic;
- story;
- task;
- bug;
- blocker;
- links.
==================================================
ЭТАП 5. ENSURE/REMOTE SEARCH ПЕРЕД CREATE
==================================================
Перед реальным созданием выполнить поиск по exact summary для каждой сущности:
- skill-api-test-20260713-001
- skill-api-test-20260713-001 epic
- skill-api-test-20260713-001 story
- skill-api-test-20260713-001 task
- skill-api-test-20260713-001 bug
- skill-api-test-20260713-001 blocker
Использовать:
POST /rest/api/unit/v2/find
Поиск должен идти через установленный skill и его:
find_unit_by_summary()
ensure_unit_by_summary()
Если сущность уже существует:
- не создавать дубликат;
- вернуть существующий code;
- использовать найденный code для связей.
Если сущности не найдены, перейти к следующему этапу.
==================================================
ЭТАП 6. ОДИН КОНТРОЛИРУЕМЫЙ REAL CREATE
==================================================
Сначала выполнить только создание release.
Перед запросом:
1. временно установить sbertrack_write_enabled=true;
2. выполнить ровно один POST:
POST /rest/api/unit/v2/release/create
3. зафиксировать:
- HTTP status;
- созданный code;
- summary;
4. немедленно вернуть:
sbertrack_write_enabled=false
Если release не создан:
- не создавать остальные сущности;
- не создавать links;
- вывести response body без секретов;
- завершить тест.
Если release создан успешно, перейти к этапу 7.
==================================================
ЭТАП 7. СОЗДАНИЕ ОСТАЛЬНЫХ СУЩНОСТЕЙ
==================================================
После отдельного успешного создания release разрешено создать:
- epic;
- story;
- task;
- bug;
- blocker.
Перед серией запросов:
sbertrack_write_enabled=true
Использовать только подтвержденные endpoint:
POST /rest/api/unit/v2/epic/create
POST /rest/api/unit/v2/story/create
POST /rest/api/unit/v2/task/create
POST /rest/api/unit/v2/bug/create
POST /rest/api/unit/v2/blocker/create
После каждого запроса:
- проверить HTTP status;
- сохранить созданный code;
- записать code в UnitCache;
- при ошибке остановить создание последующих сущностей;
- не повторять POST автоматически.
После завершения немедленно вернуть:
sbertrack_write_enabled=false
==================================================
ЭТАП 8. СОЗДАНИЕ СВЯЗЕЙ
==================================================
Создавать links только если необходимые сущности успешно созданы или найдены через ensure.
Использовать:
POST /rest/api/unit/v1/link
Создать следующие связи:
1. story → release
type=release
2. task → release
type=release
3. epic → release
type=release
4. story → epic
type=decomposition
5. task → story
type=decomposition
6. release → bug
type=containsbug
7. blocker и блокируемая сущность
type=blocks
Для blocks перед реальным запросом:
- получить описание link type через link/types;
- определить правильное направление source/destination;
- не угадывать направление;
- использовать описание:
source = «Заблокирован»
destination = «Блокирует»
Перед созданием links:
sbertrack_write_enabled=true
После выполнения всех link-запросов немедленно вернуть:
sbertrack_write_enabled=false
HTTP 570 с текстом «связь уже существует» считать идемпотентным результатом, а не падением всего теста.
==================================================
ЭТАП 9. REMOTE SEARCH БЕЗ CACHE
==================================================
Проверить реальный remote search для созданного release:
1. создать backup cache-файла;
2. удалить только запись:
skill-api-test-20260713-001
3. убедиться, что cache miss подтвержден;
4. выполнить поиск через:
POST /rest/api/unit/v2/find
5. найти созданный release;
6. проверить, что его code снова сохранён в cache.
Не удалять остальные cache-записи.
==================================================
ЭТАП 10. PATCH/UPDATE
==================================================
Выполнить PATCH только для созданного тестового release.
Новое description:
Controlled PATCH test from installed GigaCode project_manager skill. Existing test release updated successfully. Safe to delete.
Перед PATCH:
sbertrack_write_enabled=true
Endpoint:
PATCH /rest/api/unit/v2/update/{created_release_code}
После одного PATCH немедленно вернуть:
sbertrack_write_enabled=false
Затем выполнить GET по code и подтвердить, что description обновилось.
Не менять summary.
==================================================
ЭТАП 11. ENSURE БЕЗ ДУБЛЕЙ
==================================================
Повторно запустить ensure для того же summary:
skill-api-test-20260713-001
Ожидаемый результат:
- возвращается тот же code;
- новый release не создаётся;
- дополнительный POST create не выполняется.
==================================================
ЭТАП 12. ФИНАЛЬНАЯ БЕЗОПАСНОСТЬ
==================================================
В конце обязательно проверить:
sbertrack_write_enabled=false
Не выполнять:
- DELETE;
- PUT;
- git push.
Не удалять созданные сущности.
Созданные сущности тестовые и могут быть удалены вручную позже.
==================================================
ФИНАЛЬНЫЙ ОТЧЁТ
==================================================
Выведи:
## 1. Использованный skill
- путь к установленному skill;
- подтверждение, что использовалась установленная копия;
- версия или hash файлов, если возможно без изменения репозитория.
## 2. Read-only API
Таблица:
Запрос | HTTP | Результат
## 3. Dry-run
Перечислить:
- release;
- epic;
- story;
- task;
- bug;
- blocker;
- links.
## 4. Remote search перед create
Таблица:
Unit type | Summary | Найден до create? | Code
## 5. Created units
Таблица:
Unit type | Summary | Endpoint | HTTP | Code
## 6. Links
Таблица:
Source | Destination | Type | HTTP | Результат
## 7. Blocker
Показать:
- blocker code;
- reason_for_blocking;
- priority;
- reporter;
- sber_configuration_item;
- endpoint;
- HTTP status;
- blocks link direction.
## 8. Remote search без cache
Показать:
- cache miss;
- endpoint;
- HTTP;
- найденный code;
- восстановление cache.
## 9. PATCH/update
Показать:
- code;
- endpoint;
- HTTP;
- старое description;
- новое description;
- результат GET после PATCH.
## 10. Ensure без дублей
Показать:
- исходный code;
- code после повторного ensure;
- количество дополнительных create POST;
- подтверждение отсутствия дубля.
## 11. Безопасность
Подтвердить:
- sbertrack_write_enabled=false в конце;
- DELETE не выполнялся;
- PUT не выполнялся;
- git push не выполнялся;
- credentials не выводились;
- полный .env не выводился;
- Authorization не выводился;
- запросы выполнялись только для тестового YAML.
## 12. Итог
Написать честно:
- установленный skill реально работает с SberTrack API или нет;
- какие операции подтверждены;
- какие сущности и links созданы;
- были ли ошибки;
- можно ли использовать skill для штатной работы.