Skip to main content

Реализация функции из проблемы 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
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
/plan Implement the subscription lookup endpoint described in the issue. 
Follow the same conventions as the existing GET /subscriptions/{id} endpoint.

Примечание.

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

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

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
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
Run the test suite for the new endpoint and fix any failures.

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

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

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

Text
/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
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, чтобы вы могли двигать дальше.

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