Skip to main content

Migrar 50 arquivos de REST para GraphQL

Defina o escopo de uma migração de 50 arquivos de REST para GraphQL, divida-a em pacotes de trabalho sem conflitos entre si e execute todos de uma vez com sessões em lote.
AuthorCognition
CategoryMigrações
FeaturesAvançado, Playbooks
1

Use o Ask Devin para definir o escopo da migração

Você tem 50 arquivos que importam de src/lib/restClient.ts e precisa migrá-los para o novo graphqlClient. Antes de dividir esse trabalho em paralelo, você precisa saber como esses arquivos estão conectados. Use o Ask Devin para mapear o escopo da migração — quais arquivos importam o cliente legado, como eles se agrupam por domínio e onde estão os acoplamentos mais arriscados. O Devin usa DeepWiki e busca semântica nos bastidores, então consegue responder a essas perguntas com base no seu código real.
O Ask Devin exige que o seu repositório esteja indexado. Vá em Settings > Repositories para verificar o status de indexação ou indexar um novo repositório.
Abra o Ask Devin e peça:O Ask Devin retorna um detalhamento como este:
50 arquivos importam restClient em 8 domínios:

  User Management  (7 arquivos) — isolado, cobertura de testes completa
  Billing          (9 arquivos) — isolado, 6/9 testados
  Analytics        (5 arquivos) — isolado, 3/5 testados
  Auth             (6 arquivos) — middleware compartilhado, cobertura de testes completa
  Notifications    (8 arquivos) — isolado, 5/8 testados
  Admin            (5 arquivos) — depende do middleware Auth
  Search           (4 arquivos) — isolado, 2/4 testados
  Onboarding       (6 arquivos) — isolado, 4/6 testados

Nota de acoplamento: Admin importa requireAuth de Auth. Migre
Auth primeiro, depois Admin. Todos os outros domínios são independentes.
Isso indica se a paralelização faz sentido. Se a maioria dos arquivos estiver fortemente acoplada entre domínios, uma migração sequencial é mais segura. Aqui, 6 de 8 domínios são totalmente independentes — você pode executá-los em paralelo.
2

Criar um playbook de migração

Cada sessão paralela deve seguir o mesmo padrão de migração para que as PRs resultantes sejam consistentes e fáceis de revisar. Crie um playbook que defina exatamente como cada arquivo deve ser migrado.Acesse Settings > Playbooks > Create Playbook e defina as etapas:Ou use o Advanced Devin para gerar o playbook para você — descreva seu padrão de migração e ele produzirá um playbook completo:Referenciar esse playbook no seu prompt de orquestração garante que todas as sessões paralelas produzam PRs que pareçam ter vindo do mesmo desenvolvedor.
3

Inicie sessões paralelas com o Advanced Devin

Open Advanced Devin (o ícone de brilho no app web) e forneça a ele o prompt de orquestração. Advanced Devin analisa o grafo de dependências da sua base de código, cria pacotes de trabalho independentes e inicia uma sessão em lote por pacote — todas sendo executadas simultaneamente.Advanced Devin apresenta um agrupamento para sua aprovação antes de iniciar qualquer execução:
Pacotes de trabalho propostos (8 grupos, 50 arquivos no total):

Grupo 1 — Gerenciamento de Usuários (7 arquivos, complexidade: M)
  src/services/UserService.ts, src/pages/Profile.tsx,
  src/pages/Settings.tsx, src/hooks/useCurrentUser.ts,
  src/pages/UserDirectory.tsx, src/services/AvatarService.ts,
  src/components/UserCard.tsx

Grupo 2 — Faturamento (9 arquivos, complexidade: L)
  src/services/BillingService.ts, src/services/InvoiceService.ts,
  src/services/SubscriptionService.ts, src/pages/Checkout.tsx,
  src/pages/PlanSelector.tsx, src/pages/InvoiceHistory.tsx,
  src/components/PaymentForm.tsx, src/hooks/useSubscription.ts,
  src/components/PricingTable.tsx

Grupo 3 — Analytics (5 arquivos, complexidade: S)
  src/services/AnalyticsService.ts, src/pages/Dashboard.tsx,
  src/components/MetricsCard.tsx, src/hooks/useMetrics.ts,
  src/components/ChartPanel.tsx

Grupo 4 — Auth (6 arquivos, complexidade: L) ⚠ migrar primeiro
  src/services/AuthService.ts, src/middleware/requireAuth.ts,
  src/middleware/refreshToken.ts, src/pages/Login.tsx,
  src/pages/Signup.tsx, src/services/SessionService.ts

Grupo 5 — Notificações (8 arquivos, complexidade: M)
  src/services/NotificationService.ts, src/services/EmailService.ts,
  src/services/PushService.ts, src/pages/NotificationPreferences.tsx,
  src/components/NotificationBell.tsx, src/hooks/useNotifications.ts,
  src/components/NotificationToast.tsx, src/services/WebhookService.ts

Grupo 6 — Admin (5 arquivos, complexidade: M) ⚠ depende de Auth
  src/pages/AdminDashboard.tsx, src/pages/AdminUsers.tsx,
  src/services/AdminService.ts, src/components/AdminSidebar.tsx,
  src/middleware/requireAdmin.ts

Grupo 7 — Busca (4 arquivos, complexidade: S)
  src/services/SearchService.ts, src/pages/SearchResults.tsx,
  src/components/SearchBar.tsx, src/hooks/useSearch.ts

Grupo 8 — Onboarding (6 arquivos, complexidade: M)
  src/services/OnboardingService.ts, src/pages/Welcome.tsx,
  src/pages/SetupWizard.tsx, src/components/ProgressTracker.tsx,
  src/hooks/useOnboardingState.ts, src/services/ChecklistService.ts

Nota de dependência: o Grupo 6 (Admin) importa middleware do Grupo 4
(Auth). Auth será iniciado primeiro; Admin será iniciado após o PR de Auth ser mesclado.
Iniciar os 6 grupos restantes em paralelo imediatamente.

Iniciar 6 sessões paralelas agora + 2 sequenciais? (s/n)
Aprove o agrupamento e o lançamento simultâneo das seis sessões. Auth é executado primeiro e, depois que o merge de Auth for concluído, Admin é executado em seguida.
4

Revise e faça o merge dos resultados

Cada sessão abre seu próprio PR. Como os pacotes são independentes, você pode revisá-los e mesclá-los em qualquer ordem — mas faça o merge de Auth primeiro, já que Admin depende dele, e execute o CI completo após cada merge para detectar eventuais interações inesperadas.Depois que todos os 8 PRs de migração forem mesclados, use uma sessão de acompanhamento para limpar código morto: