{"meta":{"title":"Реализация функции из проблемы GitHub","intro":"Дайте GitHub проблему , GitHub Copilot CLIзатем направьте разговор на внедрение этой функции.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/ru/enterprise-cloud@latest/copilot/tutorials","title":"Учебники"},{"href":"/ru/enterprise-cloud@latest/copilot/tutorials/copilot-cookbook","title":"Кулинарная книга GitHub Copilot"},{"href":"/ru/enterprise-cloud@latest/copilot/tutorials/copilot-cookbook/generate-code","title":"Создание кода"},{"href":"/ru/enterprise-cloud@latest/copilot/tutorials/copilot-cookbook/generate-code/implement-a-feature","title":"Реализовать функцию"}],"documentType":"article"},"body":"# Реализация функции из проблемы GitHub\n\nДайте GitHub проблему , GitHub Copilot CLIзатем направьте разговор на внедрение этой функции.\n\nGitHub Copilot CLI Можно прочитать проблему GitHub , предложить план реализации и разработать изменения в кодексе, соответствующие требованиям. Поскольку рабочий процесс разговорный, можно исправлять предположения, указывать на релевантные файлы и совершенствовать подход по мере GitHub Copilot CLI работы.\n\n## Пример сценария\n\nПредставьте, что вы работаете в команде платформы, которая поддерживает внутренний API Node.js биллинга, обеспечивающий подписки клиентов. Менеджер продукта открывает проблему, запрашивая новую `GET /subscriptions/{id}/plan` конечную точку, которая возвращает план, привязанный к данной подписке, вместе с модульными тестами и обновлением спецификации OpenAPI. Проблема включает желаемую форму ответа, случаи ошибок при пропущенных или отменённых подписках, а также ссылку на существующую `/subscriptions/{id}` конечную точку для следования в виде шаблона. Вы можете передать проблему, GitHub Copilot CLI чтобы она подставила маршрут, контроллер и тесты, а затем открыть pull request.\n\n## Пример рабочего процесса\n\nGitHub Copilot CLI Можно читать проблему напрямую, GitHubпланировать работу, писать код, запускать тесты и открывать pull request.\n\n### Посмотрите вопрос в контекст\n\nНачните с корня репозитория и ссылайтесь на проблему по URL или `owner/repo#number`.\nGitHub Copilot CLI использует GitHub MCP-сервер для получения тела выпуска, комментариев и связанных элементов, а затем сохраняет этот контекст доступным для остальной сессии.\n\n```text copy\nRead octo-org/billing-api#482 and any issues or PRs it links to. \nSummarize what needs to be implemented before we plan the work.\n```\n\n### Составьте план реализации с помощью `/plan`\n\nПереключитесь в режим планирования, чтобы GitHub Copilot CLI продумать изменения перед тем, как трогать какие-либо файлы.\n\n```text copy\n/plan Implement the subscription lookup endpoint described in the issue. \nFollow the same conventions as the existing GET /subscriptions/{id} endpoint.\n```\n\n> \\[!NOTE] Следующий ответ является примером. Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.\n\nGitHub Copilot CLI Возвращает план, похожий на следующий:\n\n```text\n1. 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.\n1. 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.\n1. Update `openapi/subscriptions.yaml` with the new path, response schema, and `404` and `410` responses.\n1. 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.\n1. Run the test suite and update the changelog entry.\n```\n\nПересмотрите план, возражайте против всего, что кажется неправильным, и попросите 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` попросить сайт обновить затронутые шаги.\n\n### Запускайте реализацию и направляйте по мере необходимости\n\nУтвердите план начала программирования.\nGitHub Copilot CLI Проходит шаги по одному, показывая каждую правку перед применением. Если сообщение идёт не в ту сторону, перебивайте и перенаправляйте.\n\nНапример, предположим GitHub Copilot CLI , что вы добавляете новый запрос к базе данных в ваш `getPlanForSubscription` метод вместо повторного использования клиента для выставления счетов, на котором ваша команда стандартизировалась. Вы можете остановиться и управлять ею:\n\n```text copy\nDon't add a new query here. The billing client in \nsrc/clients/billingClient.ts already exposes a getPlan method. \nUse that and update the service to handle its NotFound response.\n```\n\nGitHub Copilot CLI пересматривает кодекс и продолжает выполнение оставшихся этапов плана.\n\n### Создание и запуск модульных тестов\n\nКогда GitHub Copilot CLI достигает этапа тестирования, он создаёт тесты, соответствующие шаблонам из ваших существующих тестовых файлов. Для конечной точки плана можно добавить такие случаи, как:\n\n* Возвращает запись плана для активной подписки.\n* Возвращается `404` , когда подписка отсутствует.\n* Возвращается `410` после отмены подписки.\n* Возвращается `404` , если в подписке нет плана.\n\nПосле написания тестов GitHub Copilot CLI запустите их в терминале, чтобы сразу увидеть результаты.\n\n```text copy\nRun the test suite for the new endpoint and fix any failures.\n```\n\nЕсли тест не проходит, GitHub Copilot CLI считывается результат неудачи, обновляет реализацию и запускается повторно, пока набор тестов не станет зелёным. Проверьте каждое исправление, чтобы убедиться, что оно устраняет коренную причину, а не скрывает её.\n\n### Пересмотрите изменения с помощью `/diff`\n\nИспользуйте `/diff` для просмотра обобщённого обзора изменений, внесённых в течение сессии.\n\n```text copy\n/diff\n```\n\nЕсли что-то кажется не так, попросите GitHub Copilot CLI доработать его перед тем, как принимать решение. Например, вы можете ответить: `Revert the formatting changes in src/routes/subscriptions.ts to only keep the new route handler` «Обхват дифференции обратно к задуманным изменениям».\n\n### Создать пулл-реквест\n\nПосле того как функция будет реализована, протестирована и проверена, попросите GitHub Copilot CLI открыть pull request. Он использует GitHub MCP-сервер для отправки ветви и создания pull-запроса\n\n```text copy\nCommit the changes on a new branch, push it, and open a pull request \nagainst main. Link it to octo-org/billing-api#482 and summarize the \nimplementation, the tests added, and any follow-up work.\n```\n\nGitHub Copilot CLI Сообщайте с URL pull request, чтобы вы могли двигать дальше.\n\n## Дополнительные материалы\n\n* [GitHub Copilot CLI](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-cli)"}