Skip to main content
Vous ne souhaitez pas effectuer cette configuration manuellement ? Collez un lien vers cette page dans une session Devin et demandez-lui de tout configurer pour vous.
1

Présentez le monolithe à Devin

Vous connaissez ce fichier : un seul routeur Express qui a grossi pendant dix-huit mois. Tous les endpoints pour tous les domaines se trouvent dans src/routes/index.ts : l’inscription utilisateur à côté des webhooks de paiement, à côté de la recherche de produits. Les vérifications d’authentification en ligne sont copiées-collées dans 40 gestionnaires. Personne ne veut y toucher, car une modification de la logique des commandes pourrait casser les endpoints utilisateur trois cents lignes plus haut dans le fichier.Voici à quoi ressemble généralement le haut du fichier :
src/routes/index.ts (before — 2,000 lines)
Dites à Devin exactement à quoi doit ressembler la structure cible.
2

Guidez Devin à l’aide de conventions

Devin lit votre base de code pour en déduire des patterns, mais c’est lors de la refactorisation que les entrées Knowledge sont les plus utiles. Ajoutez des entrées pour les conventions que Devin doit suivre :
  • Patterns de routeur — “Chaque routeur de domaine utilise Router() et est monté avec app.use('/domain', domainRouter) à la racine”
  • Middleware — “Le middleware d’authentification se trouve dans src/middleware/ et est toujours importé, jamais défini inline”
  • Gestion des erreurs — “Tous les gestionnaires de route utilisent notre wrapper asyncHandler depuis src/lib/asyncHandler.ts — jamais de try/catch direct”
Orienter Devin vers un routeur déjà bien structuré dans votre base de code produit souvent de meilleurs résultats que de décrire les conventions à partir de zéro. Ajoutez une ligne comme “Suivez le pattern dans src/routes/admin.ts, qui est déjà clairement séparé” à votre prompt.Vous pouvez également demander à Devin de générer des entrées Knowledge pour vous — décrivez simplement vos conventions et il créera des entrées bien structurées que vous pourrez relire et enregistrer.
3

Examiner la PR de Devin

Devin cartographie tous les endpoints, suit le graphe d’import, extrait la logique partagée, crée les fichiers de domaine, rebranche le routeur racine et exécute votre suite de tests. Voici à quoi ressemble généralement la PR :
Voici à quoi ressemble le routeur racine simplifié après la séparation :
src/routes/index.ts (after — 15 lines)
Et un fichier de routes de domaine où le middleware partagé est correctement importé :
src/routes/orders.ts (after — excerpt)
Chaque chemin d’URL reste identique — /orders est désormais géré par ordersRouter, monté sur /orders, de sorte que les clients et les tests existants continuent de fonctionner sans modification.
4

(Facultatif) Basculez sur la branche et testez en local

Pour une refactorisation structurelle de ce type, il est préférable de récupérer la branche et de vérifier en local avant de fusionner. Ouvrez le projet dans Devin Desktop ou dans votre IDE préféré, lancez l’application et appelez quelques endpoints pour confirmer que le routage, le middleware et la gestion des erreurs se comportent comme auparavant.
Si quelque chose vous semble incorrect, laissez un commentaire sur la PR — Devin en tiendra compte et poussera un correctif.
5

Continuer le nettoyage

Une fois le routeur séparé, utilisez des prompts de suivi pour prolonger la refactorisation :