Serveur MCP with internal calls
All threads resolved!
All threads resolved!
Cette PR propose d'éviter les appels internes en HTTP, est-ce mieux que !4 (merged) ?
Merge request reports
Activity
requested review from @eraviart
assigned to @benoit-cty
mentioned in merge request !4 (merged)
- Resolved by Benoît Courty
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
- Réduction de la duplication : le code de logique métier n'existe plus qu'une seule fois
- Maintien de la cohérence : les routes API et MCP utilisent exactement la même logique
- Facilité de maintenance : un seul endroit à modifier pour corriger un bug ou ajouter une fonctionnalité
- Testabilité : la logique métier peut être testée indépendamment des routes
- Lisibilité : les routes sont maintenant très simples et focalisées sur leur responsabilité
Edited by Benoît Courty-
added 1 commit
- cb6bc516 - Ajout de get_departement, get_epci et get_circonscription_legislative
mentioned in commit 2f88f32b
Please register or sign in to reply