Skip to main content

Migrar 50 archivos de REST a GraphQL

Definir el alcance de la migración de 50 archivos de REST a GraphQL, dividirla en paquetes de trabajo sin conflictos y ejecutarlos todos simultáneamente mediante sesiones por lotes.
AuthorCognition
CategoryMigraciones
FeaturesAvanzado, Playbooks
1

Delimita el alcance de la migración con Ask Devin

Tienes 50 archivos que importan desde src/lib/restClient.ts y necesitas migrarlos al nuevo graphqlClient. Antes de dividir nada en trabajo en paralelo, necesitas entender cómo están conectados esos archivos. Usa Ask Devin para mapear la superficie de migración: qué archivos importan el cliente heredado, cómo se agrupan por dominio y dónde existe acoplamiento riesgoso. Devin usa DeepWiki y búsqueda semántica bajo el capó, por lo que puede responder estas preguntas basándose en tu código real.
Ask Devin requiere que tu repositorio esté indexado. Ve a Settings > Repositories para comprobar el estado de indexación o indexar un nuevo repositorio.
Abre Ask Devin y haz la siguiente consulta:Ask Devin devuelve un desglose como este:
50 archivos importan restClient en 8 dominios:

  User Management  (7 archivos) — aislado, cobertura de pruebas completa
  Billing          (9 archivos) — aislado, 6/9 probados
  Analytics        (5 archivos) — aislado, 3/5 probados
  Auth             (6 archivos) — middleware compartido, cobertura de pruebas completa
  Notifications    (8 archivos) — aislado, 5/8 probados
  Admin            (5 archivos) — depende del middleware de Auth
  Search           (4 archivos) — aislado, 2/4 probados
  Onboarding       (6 archivos) — aislado, 4/6 probados

Nota de acoplamiento: Admin importa requireAuth desde Auth. Migrar
Auth primero, luego Admin. Todos los demás dominios son independientes.
Esto te permite saber si la paralelización tiene sentido. Si la mayoría de los archivos están estrechamente acoplados entre distintos dominios, una migración secuencial es más segura. Aquí, 6 de 8 dominios son completamente independientes: puedes ejecutarlos en paralelo.
2

Crear un plan de migración

Cada sesión en paralelo debe seguir el mismo patrón de migración para que las PR resultantes sean coherentes y fáciles de revisar. Crea un playbook que defina exactamente cómo se debe migrar cada archivo.Ve a Settings > Playbooks > Create Playbook y define los pasos:O usa Advanced Devin para generar el playbook por ti: describe tu patrón de migración y generará un playbook completo:Incluir este playbook en tu prompt de orquestación garantiza que todas las sesiones en paralelo produzcan PR que parezcan hechas por el mismo desarrollador.
3

Inicia sesiones en paralelo con Advanced Devin

Open Advanced Devin (el ícono de destellos en la aplicación web) y dale la instrucción de orquestación. Advanced Devin analiza el grafo de dependencias de tu base de código, crea paquetes de trabajo independientes y lanza una sesión por lotes para cada paquete, todas ejecutándose simultáneamente.Advanced Devin presenta una agrupación para tu aprobación antes de iniciar cualquier cosa:
Paquetes de trabajo propuestos (8 grupos, 50 archivos en total):

Grupo 1 — Gestión de usuarios (7 archivos, complejidad: 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 — Facturación (9 archivos, complejidad: 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 — Análisis (5 archivos, complejidad: 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 archivos, complejidad: L) ⚠ migrar primero
  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 — Notificaciones (8 archivos, complejidad: 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 archivos, complejidad: 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 — Búsqueda (4 archivos, complejidad: S)
  src/services/SearchService.ts, src/pages/SearchResults.tsx,
  src/components/SearchBar.tsx, src/hooks/useSearch.ts

Grupo 8 — Onboarding (6 archivos, complejidad: 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 dependencia: el Grupo 6 (Admin) importa middleware del Grupo 4
(Auth). Se lanzará Auth primero y luego Admin una vez que el PR de Auth se integre.
Lanzar los 6 grupos restantes en paralelo de inmediato.

¿Iniciar 6 sesiones paralelas ahora + 2 secuenciales? (s/n)
Aprueba la agrupación y el lanzamiento simultáneo de las seis sesiones. Auth se ejecuta primero y luego se ejecuta Admin una vez que Auth se haya fusionado.
4

Revisa y fusiona los resultados

Cada sesión abre su propia solicitud de extracción (PR). Como los paquetes son independientes, puedes revisarlas y fusionarlas en cualquier orden, pero fusiona primero Auth, ya que Admin depende de él, y ejecuta la CI completa después de cada fusión para detectar cualquier interacción inesperada.Una vez que se hayan fusionado las 8 PR de migración, usa una sesión de seguimiento para limpiar el código muerto: