# Реализация функции из проблемы GitHub

Дайте GitHub проблему , GitHub Copilot CLIзатем направьте разговор на внедрение этой функции.

GitHub Copilot CLI Можно прочитать проблему GitHub , предложить план реализации и разработать изменения в кодексе, соответствующие требованиям. Поскольку рабочий процесс разговорный, можно исправлять предположения, указывать на релевантные файлы и совершенствовать подход по мере GitHub Copilot CLI работы.

## Пример сценария

Представьте, что вы работаете в команде платформы, которая поддерживает внутренний API Node.js биллинга, обеспечивающий подписки клиентов. Менеджер продукта открывает проблему, запрашивая новую `GET /subscriptions/{id}/plan` конечную точку, которая возвращает план, привязанный к данной подписке, вместе с модульными тестами и обновлением спецификации OpenAPI. Проблема включает желаемую форму ответа, случаи ошибок при пропущенных или отменённых подписках, а также ссылку на существующую `/subscriptions/{id}` конечную точку для следования в виде шаблона. Вы можете передать проблему, GitHub Copilot CLI чтобы она подставила маршрут, контроллер и тесты, а затем открыть pull request.

## Пример рабочего процесса

GitHub Copilot CLI Можно читать проблему напрямую, GitHubпланировать работу, писать код, запускать тесты и открывать pull request.

### Посмотрите вопрос в контекст

Начните с корня репозитория и ссылайтесь на проблему по URL или `owner/repo#number`.
GitHub Copilot CLI использует GitHub MCP-сервер для получения тела выпуска, комментариев и связанных элементов, а затем сохраняет этот контекст доступным для остальной сессии.

```text copy
Read octo-org/billing-api#482 and any issues or PRs it links to. 
Summarize what needs to be implemented before we plan the work.
```

### Составьте план реализации с помощью `/plan`

Переключитесь в режим планирования, чтобы GitHub Copilot CLI продумать изменения перед тем, как трогать какие-либо файлы.

```text copy
/plan Implement the subscription lookup endpoint described in the issue. 
Follow the same conventions as the existing GET /subscriptions/{id} endpoint.
```

> \[!NOTE] Следующий ответ является примером. Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.

GitHub Copilot CLI Возвращает план, похожий на следующий:

```text
1. Add a `getPlanForSubscription` method in `src/services/subscriptionService.ts` that reuses the existing billing client, throws `NotFoundError` when the subscription or plan does not exist, and throws `CancelledSubscriptionError` when the subscription has been cancelled.
1. Add a `GET /subscriptions/:id/plan` route in `src/routes/subscriptions.ts`, mirroring the error handling in the sibling `GET /subscriptions/:id` route and mapping `CancelledSubscriptionError` to a `410` response.
1. Update `openapi/subscriptions.yaml` with the new path, response schema, and `404` and `410` responses.
1. Add unit tests in `test/services/subscriptionService.test.ts` and `test/routes/subscriptions.test.ts` covering the success case, missing subscription, cancelled subscription, and missing plan.
1. Run the test suite and update the changelog entry.
```

Пересмотрите план, возражайте против всего, что кажется неправильным, и попросите GitHub Copilot CLI пересмотреть его, прежде чем одобрять. Например, вы можете ответить и `Use the existing error classes in src/errors—NotFoundError for missing subscriptions or plans and CancelledSubscriptionError for cancelled subscriptions rather than introducing new ones` попросить сайт обновить затронутые шаги.

### Запускайте реализацию и направляйте по мере необходимости

Утвердите план начала программирования.
GitHub Copilot CLI Проходит шаги по одному, показывая каждую правку перед применением. Если сообщение идёт не в ту сторону, перебивайте и перенаправляйте.

Например, предположим GitHub Copilot CLI , что вы добавляете новый запрос к базе данных в ваш `getPlanForSubscription` метод вместо повторного использования клиента для выставления счетов, на котором ваша команда стандартизировалась. Вы можете остановиться и управлять ею:

```text copy
Don't add a new query here. The billing client in 
src/clients/billingClient.ts already exposes a getPlan method. 
Use that and update the service to handle its NotFound response.
```

GitHub Copilot CLI пересматривает кодекс и продолжает выполнение оставшихся этапов плана.

### Создание и запуск модульных тестов

Когда GitHub Copilot CLI достигает этапа тестирования, он создаёт тесты, соответствующие шаблонам из ваших существующих тестовых файлов. Для конечной точки плана можно добавить такие случаи, как:

* Возвращает запись плана для активной подписки.
* Возвращается `404` , когда подписка отсутствует.
* Возвращается `410` после отмены подписки.
* Возвращается `404` , если в подписке нет плана.

После написания тестов GitHub Copilot CLI запустите их в терминале, чтобы сразу увидеть результаты.

```text copy
Run the test suite for the new endpoint and fix any failures.
```

Если тест не проходит, GitHub Copilot CLI считывается результат неудачи, обновляет реализацию и запускается повторно, пока набор тестов не станет зелёным. Проверьте каждое исправление, чтобы убедиться, что оно устраняет коренную причину, а не скрывает её.

### Пересмотрите изменения с помощью `/diff`

Используйте `/diff` для просмотра обобщённого обзора изменений, внесённых в течение сессии.

```text copy
/diff
```

Если что-то кажется не так, попросите GitHub Copilot CLI доработать его перед тем, как принимать решение. Например, вы можете ответить: `Revert the formatting changes in src/routes/subscriptions.ts to only keep the new route handler` «Обхват дифференции обратно к задуманным изменениям».

### Создать пулл-реквест

После того как функция будет реализована, протестирована и проверена, попросите GitHub Copilot CLI открыть pull request. Он использует GitHub MCP-сервер для отправки ветви и создания pull-запроса

```text copy
Commit the changes on a new branch, push it, and open a pull request 
against main. Link it to octo-org/billing-api#482 and summarize the 
implementation, the tests added, and any follow-up work.
```

GitHub Copilot CLI Сообщайте с URL pull request, чтобы вы могли двигать дальше.

## Дополнительные материалы

* [GitHub Copilot CLI](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-cli)