learn.chetana.fr

La carte du systĂšme

12 min de lectureDécouverte

Ce que fait le produit (en une phrase)

Un copilot de vente B2B : il lit des commandes qui arrivent en vrac (emails, PDF, Excel), en extrait les lignes, matche chaque ligne avec le bon produit du catalogue, applique les prix, crĂ©e le devis — et offre un chat agentique qui rĂ©pond aux questions et agit sur les donnĂ©es. Deux surfaces IA distinctes :

  1. le pipeline d'extraction : un document entre, des lignes matchĂ©es sortent — un workflow orchestrĂ© (LangGraph, module 6) ;
  2. le copilot conversationnel : une boucle agent ReAct avec des outils (module 4).

Le modular monolith

Pas de microservices : un monolithe modulaire, assemblé au démarrage. Chaque domaine est un package Python indépendant (workspace uv) :

api/            ← bootstrap FastAPI : create_app(), lifespan, montage des routers
modules/
  auth/         ← OIDC Logto, JWT, rĂ©solution du tenant, wiring RLS
  copilot/      ← l'agent conversationnel + ses tools
  catalog/      ← produits, prix, stocks
  requests/     ← commandes multi-canal
  engine/       ← le pipeline d'extraction+matching (LangGraph)
libs/
  shared/       ← modĂšles SQLAlchemy, schĂ©mas, db/RLS, Protocols — la FEUILLE
  ai_runtime/   ← runtime LLM, bus de tools, streaming, observabilitĂ©
web/            ← Nuxt 4 SSR

La rĂšgle d'or : les modules domaine ne s'importent pas entre eux (c'est vĂ©rifiĂ© en CI par import-linter — l'architecture est un test qui casse). Le module engine ne connaĂźt mĂȘme pas catalog : il consomme des interfaces (typing.Protocol : CatalogProvider, PriceProvider, OrderSink) dont les implĂ©mentations sont injectĂ©es au boot.

Le chemin d'une requĂȘte (Ă  garder en tĂȘte tout le cours)

HTTP → middleware auth (JWT Logto → tenant_id)
     → session DB scoppĂ©e tenant (RLS, module 3 — le concept le plus structurant)
     → service du module → [LLM / recherche hybride / tools]
     → rĂ©ponse streamĂ©e en SSE vers Nuxt (module 8)

Chaque module de ce cours Ă©claire un segment de ce chemin. À la fin, tu pourras suivre n'importe quelle requĂȘte de bout en bout.

đŸ§© Quiz1/3

Comment le module engine accĂšde-t-il au catalogue sans l'importer ?

🃏 Flashcards1/3