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

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

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

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

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

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

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

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

Начните с корня репозитория и ссылайтесь на проблему по URL или `owner/repo#number`.
интерфейс командной строки GitHub Copilot использует 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 продумать изменения перед тем, как трогать какие-либо файлы.

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

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

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

```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 пересмотреть его, прежде чем одобрять. Например, вы можете ответить и `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 Проходит шаги по одному, показывая каждую правку перед применением. Если сообщение идёт не в ту сторону, перебивайте и перенаправляйте.

Например, предположим интерфейс командной строки GitHub Copilot , что вы добавляете новый запрос к базе данных в ваш `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 пересматривает кодекс и продолжает выполнение оставшихся этапов плана.

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

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

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

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

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

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

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

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

```text copy
/diff
```

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

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

После того как функция будет реализована, протестирована и проверена, попросите интерфейс командной строки GitHub Copilot открыть 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 Сообщайте с URL pull request, чтобы вы могли двигать дальше.

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

* [интерфейс командной строки GitHub Copilot](/ru/copilot/how-tos/copilot-cli)