Skip to content
Snippets Groups Projects

Serveur MCP with internal calls

All threads resolved!

Cette PR propose d'éviter les appels internes en HTTP, est-ce mieux que !4 (merged) ?

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Refactorisation du code API

    Objectif

    Réduire la duplication de code entre les routes API et les fonctions utilisées par la route MCP en factorisant la logique métier dans des modules partagés.

    Structure avant refactorisation

    • /routes/communes/autocomplete/+server.ts : contient toute la logique de recherche de communes
    • /routes/communes/[code]/+server.ts : contient toute la logique de récupération d'une commune
    • /routes/departements/autocomplete/+server.ts : contient toute la logique de recherche de départements
    • /lib/server/internal-api.ts : duplique tout le code des routes ci-dessus pour la route MCP

    Structure après refactorisation

    Modules de logique métier extraits

    • /lib/server/communes-search.ts : logique de recherche de communes extraite
    • /lib/server/communes-get.ts : logique de récupération d'une commune extraite
    • /lib/server/departements-search.ts : logique de recherche de départements extraite
    • /lib/server/epci-search.ts : logique de recherche d'EPCI extraite

    API interne simplifiée

    • /lib/server/internal-api.ts : ne fait que déléguer aux modules de logique métier

    Routes simplifiées

    Les routes n'appellent plus qu'une seule fonction :

    export const GET: RequestHandler = ({ url }) => {
      const result = searchCommunes(url.searchParams)
    
      if (result.error !== undefined) {
        console.error(`Error in ${url.pathname} query:`, result.error)
      }
    
      return json(result)
    }

    Avantages de cette approche

    1. Réduction de la duplication : le code de logique métier n'existe plus qu'une seule fois
    2. Maintien de la cohérence : les routes API et MCP utilisent exactement la même logique
    3. Facilité de maintenance : un seul endroit à modifier pour corriger un bug ou ajouter une fonctionnalité
    4. Testabilité : la logique métier peut être testée indépendamment des routes
    5. Lisibilité : les routes sont maintenant très simples et focalisées sur leur responsabilité
    Edited by Benoît Courty
  • Benoît Courty added 2 commits

    added 2 commits

    Compare with previous version

  • added 1 commit

    Compare with previous version

  • Benoît Courty resolved all threads

    resolved all threads

  • added 1 commit

    • 52dd53b1 - Apply 1 suggestion(s) to 1 file(s)

    Compare with previous version

  • added 1 commit

    • cb6bc516 - Ajout de get_departement, get_epci et get_circonscription_legislative

    Compare with previous version

  • reopened

  • mentioned in commit 2f88f32b

  • Please register or sign in to reply
    Loading