Skip to main content

Migra 50 file da REST a GraphQL

Definisci l'ambito di una migrazione di 50 file da REST a GraphQL, suddividila in pacchetti di lavoro indipendenti e senza conflitti ed eseguili tutti in una volta con sessioni batch.
AuthorCognition
CategoryMigrations
FeaturesAdvanced, Playbooks
1

Definisci l’ambito della migrazione con Ask Devin

Hai 50 file che importano da src/lib/restClient.ts e devi migrare al nuovo graphqlClient. Prima di suddividere il lavoro in attività parallele, devi capire come sono collegati questi file. Usa Ask Devin per mappare il perimetro della migrazione — quali file importano il client legacy, come si raggruppano per dominio e dove si trovano gli accoppiamenti rischiosi. Devin utilizza DeepWiki e la ricerca semantica in background, quindi può rispondere a queste domande basandosi sul tuo codice reale.
Ask Devin richiede che il tuo repository sia indicizzato. Vai su Settings > Repositories per controllare lo stato di indicizzazione o indicizzare un nuovo repository.
Apri Ask Devin e chiedi:Ask Devin restituisce un’analisi dettagliata come questa:
50 files import restClient across 8 domains:

  User Management  (7 files) — isolated, full test coverage
  Billing          (9 files) — isolated, 6/9 tested
  Analytics        (5 files) — isolated, 3/5 tested
  Auth             (6 files) — shared middleware, full test coverage
  Notifications    (8 files) — isolated, 5/8 tested
  Admin            (5 files) — depends on Auth middleware
  Search           (4 files) — isolated, 2/4 tested
  Onboarding       (6 files) — isolated, 4/6 tested

Coupling note: Admin imports requireAuth from Auth. Migrate
Auth first, then Admin. All other domains are independent.
Questo ti dice se la parallelizzazione ha senso. Se la maggior parte dei file è fortemente accoppiata tra i domini, una migrazione sequenziale è più sicura. Qui, 6 domini su 8 sono completamente indipendenti — puoi gestirli in parallelo.
2

Crea un playbook per la migrazione

Ogni sessione parallela dovrebbe seguire lo stesso pattern di migrazione in modo che le PR risultanti siano coerenti e facili da revisionare. Crea un playbook che definisca esattamente come deve essere migrato ciascun file.Vai su Settings > Playbooks > Create Playbook e definisci i passaggi:Oppure usa Advanced Devin per generare il playbook per te — descrivi il tuo pattern di migrazione e produrrà un playbook completo:Fare riferimento a questo playbook nel tuo prompt di orchestrazione garantisce che tutte le sessioni parallele producano PR che sembrino provenire dallo stesso sviluppatore.
3

Avvia sessioni parallele con Advanced Devin

Open Advanced Devin (l’icona a forma di scintilla nella web app) e fornisci il prompt di orchestrazione. Advanced Devin analizza il grafo delle dipendenze della tua base di codice, crea pacchetti di lavoro indipendenti e avvia una sessione batch per ciascun pacchetto — tutte in esecuzione in parallelo.Advanced Devin presenta una proposta di raggruppamento per la tua approvazione prima di avviare qualunque cosa:
Pacchetti di lavoro proposti (8 gruppi, 50 file in totale):

Gruppo 1 — Gestione utenti (7 file, complessità: 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

Gruppo 2 — Fatturazione (9 file, complessità: 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

Gruppo 3 — Analytics (5 file, complessità: S)
  src/services/AnalyticsService.ts, src/pages/Dashboard.tsx,
  src/components/MetricsCard.tsx, src/hooks/useMetrics.ts,
  src/components/ChartPanel.tsx

Gruppo 4 — Auth (6 file, complessità: L) ⚠ da migrare per primo
  src/services/AuthService.ts, src/middleware/requireAuth.ts,
  src/middleware/refreshToken.ts, src/pages/Login.tsx,
  src/pages/Signup.tsx, src/services/SessionService.ts

Gruppo 5 — Notifiche (8 file, complessità: 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

Gruppo 6 — Admin (5 file, complessità: M) ⚠ dipende da Auth
  src/pages/AdminDashboard.tsx, src/pages/AdminUsers.tsx,
  src/services/AdminService.ts, src/components/AdminSidebar.tsx,
  src/middleware/requireAdmin.ts

Gruppo 7 — Ricerca (4 file, complessità: S)
  src/services/SearchService.ts, src/pages/SearchResults.tsx,
  src/components/SearchBar.tsx, src/hooks/useSearch.ts

Gruppo 8 — Onboarding (6 file, complessità: 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 sulle dipendenze: il Gruppo 6 (Admin) importa middleware dal Gruppo 4
(Auth). Auth verrà avviato per primo, poi Admin dopo che la PR di Auth viene integrata.
Avvio immediato dei restanti 6 gruppi in parallelo.

Avviare 6 sessioni parallele ora + 2 sequenziali? (y/n)
Approva il raggruppamento e l’avvio contemporaneo delle sei sessioni. Auth viene eseguito per primo, poi Admin parte dopo che il merge di Auth è stato completato.
4

Rivedi e unisci i risultati

Ogni sessione apre la propria PR. Poiché i pacchetti sono indipendenti, puoi esaminarle ed eseguire il merge in qualsiasi ordine — ma esegui prima il merge di Auth, perché Admin ne dipende, ed esegui la CI completa dopo ogni merge per intercettare eventuali interazioni impreviste.Una volta che tutte e 8 le PR di migrazione sono state unite, usa una sessione di follow-up per ripulire il codice inutilizzato: