{"meta":{"title":"Implementando um recurso de um problema de GitHub","intro":"Apresente um GitHub problema a GitHub Copilot CLI e, em seguida, direcione a conversa para implementar a funcionalidade.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/tutorials","title":"Tutoriais"},{"href":"/pt/copilot/tutorials/copilot-cookbook","title":"Livro de receitas do GitHub Copilot"},{"href":"/pt/copilot/tutorials/copilot-cookbook/generate-code","title":"Gerar código"},{"href":"/pt/copilot/tutorials/copilot-cookbook/generate-code/implement-a-feature","title":"Implementar um recurso"}],"documentType":"article"},"body":"# Implementando um recurso de um problema de GitHub\n\nApresente um GitHub problema a GitHub Copilot CLI e, em seguida, direcione a conversa para implementar a funcionalidade.\n\nGitHub Copilot CLI pode ler um GitHub problema, propor um plano de implementação e elaborar alterações de código que atendam aos requisitos. Como o fluxo de trabalho é conversacional, você pode corrigir suposições, apontar para arquivos relevantes e refinar a abordagem como GitHub Copilot CLI funciona.\n\n## Cenário de exemplo\n\nImagine que você trabalhe em uma equipe de plataforma que mantém uma API de cobrança de Node.js interna que alimenta as assinaturas do cliente. Um gerente de produto abre uma issue solicitando um novo endpoint `GET /subscriptions/{id}/plan` que retorna o plano associado a uma determinada assinatura, juntamente com testes de unidade e uma atualização da especificação OpenAPI. A tarefa inclui o formato de resposta desejado, casos de erro para assinaturas inexistentes ou canceladas e um link para o endpoint existente `/subscriptions/{id}` para servir de padrão. Você pode entregar a issue para GitHub Copilot CLI e pedir que ele gere a estrutura da rota, do controlador e dos testes e, em seguida, abra um pull request.\n\n## Fluxo de trabalho de exemplo\n\nGitHub Copilot CLI pode ler o problema diretamente de GitHub, planejar o trabalho, gravar o código, executar seus testes e abrir uma solicitação de pull.\n\n### Colocar o problema no contexto\n\nInicie na raiz do repositório e faça referência ao problema por URL ou `owner/repo#number`.\nGitHub Copilot CLI usa o GitHub servidor MCP para buscar o corpo do problema, comentários e itens vinculados e, em seguida, mantém esse contexto disponível para o restante da sessão.\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### Elaborar um plano de implementação com `/plan`\n\nAlterne para o modo de planejamento para que GitHub Copilot CLI pense na mudança antes de mexer em qualquer arquivo.\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] A resposta a seguir é um exemplo. Respostas do Copilot Chat são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.\n\nGitHub Copilot CLI retorna um plano semelhante a:\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\nRevise o plano, conteste qualquer coisa que pareça errada e peça a GitHub Copilot CLI que o revise antes de aprová-lo. Por exemplo, você pode responder com `Use the existing error classes in src/errors—NotFoundError for missing subscriptions or plans and CancelledSubscriptionError for cancelled subscriptions rather than introducing new ones` e fazer com que isso atualize as etapas afetadas.\n\n### Iniciar a implementação e orientar conforme necessário\n\nAprove o plano para iniciar a codificação.\nGitHub Copilot CLI funciona pelas etapas uma de cada vez, mostrando cada edição antes de aplicá-la. Se seguir na direção errada, interrompa e redirecione.\n\nPor exemplo, suponha que GitHub Copilot CLI adicione uma nova consulta ao banco de dados no seu método `getPlanForSubscription` em vez de reutilizar o cliente de faturamento que sua equipe padronizou. Você pode parar e guiá-lo:\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 revisa o código e continua com as etapas restantes do plano.\n\n### Gerar e executar testes de unidade\n\nQuando GitHub Copilot CLI chega à etapa de teste, ele gera a estrutura de testes que segue os padrões dos seus arquivos de teste existentes. Para o ponto de extremidade do plano, ele pode adicionar casos como:\n\n* Retorna o registro do plano de uma assinatura ativa.\n* Retorna `404` quando a assinatura não existe.\n* Retorna `410` quando a assinatura foi cancelada.\n* Retorna `404` quando a assinatura não tem nenhum plano anexado.\n\nDepois de escrever os testes, GitHub Copilot CLI execute-os no terminal para que você possa ver os resultados imediatamente.\n\n```text copy\nRun the test suite for the new endpoint and fix any failures.\n```\n\nSe um teste falhar, GitHub Copilot CLI lerá a saída da falha, atualizará a implementação e executará novamente até que o conjunto de testes fique verde. Examine cada correção para verificar se ela está abordando a causa raiz em vez de mascara-la.\n\n### Examine as alterações com `/diff`\n\nUse `/diff` para ver uma exibição consolidada das alterações feitas em toda a sessão.\n\n```text copy\n/diff\n```\n\nSe algo parecer errado, peça a GitHub Copilot CLI que o revise antes de fazer o commit. Por exemplo, você pode responder com `Revert the formatting changes in src/routes/subscriptions.ts to only keep the new route handler` para restringir o diff novamente às alterações desejadas.\n\n### Abrir uma solicitação de pull\n\nDepois que o recurso for implementado, testado e revisado, peça GitHub Copilot CLI para abrir uma solicitação de pull. Ele usa o servidor MCP GitHub para enviar a branch e criar o pull request\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 retorna com a URL do pull request para que você possa dar continuidade a ele a partir daí.\n\n## Leitura adicional\n\n* [GitHub Copilot CLI](/pt/copilot/how-tos/copilot-cli)"}