Application full-stack qui transforme des manuels PDF (entretien, depannage, fonctionnalites) en assistant conversationnel specialise par vehicule.
Permet d'obtenir des reponses contextualisees a partir de documents techniques, sans recherche manuelle dans des centaines de pages.
- Sessions isolees par vehicule avec upload multi-PDF
- Pipeline RAG optimise : extraction parallele, chunking intelligent par sections, filtrage des pages inutiles
- Recherche hybride : FAISS (semantique) + BM25 (lexicale) pour une meilleure pertinence
- Traitement asynchrone avec suivi de progression en temps reel
- Chat contextuel base uniquement sur les documents de la session
| Couche | Technologies |
|---|---|
| Backend | Python, Flask, LangChain, FAISS, BM25, Google Gemini |
| Frontend | React 19, Vite, React Router, Framer Motion |
| Deploiement | Render (backend), Vercel (frontend) |
backend/
├── api.py # API Flask (point d'entree)
├── requirements.txt
├── render.yaml # Config deploiement Render
└── src/
├── config.py # Configuration & variables d'env
├── session_manager.py # Gestion des sessions utilisateur
├── pdf_processor.py # Pipeline : extraction → chunking → indexation
├── text_chunker.py # Chunking intelligent par sections
├── vector_store.py # FAISS vector store
└── session_chatbot.py # RAG chatbot avec recherche hybride
frontend/
├── vercel.json # Config deploiement Vercel
└── src/
├── App.jsx
└── pages/
├── LandingPage.jsx
├── UploadPage.jsx
├── ProcessingPage.jsx
└── ChatPage.jsx
- Python 3.10+
- Node.js 18+
- Cle API Google Gemini (obtenir ici)
cd backend
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
cp .env.example .env # Editer et ajouter GOOGLE_API_KEY
python api.pycd frontend
npm install
npm run devL'API tourne sur http://localhost:5002, le frontend sur http://localhost:5173.
Pour eviter de publier des donnees sensibles ou trop lourdes, le repo ne versionne pas:
backend/data/guides/*/vector_store/*(indexes FAISS/BM25 issus des manuels)backend/data/waitlist/*- les fichiers
.env - les PDF de manuels
- Mettre les PDF dans
car data/<marque>/*.pdf - Lancer l'indexation:
cd backend
python index_manuals.py --prune-missing-sources- Redemarrer l'API Flask (
python api.py)
- Les images front sont dans
backend/data/vehicle_images/ - Nom recommande: nom du vehicule (exemple:
honda civic 11.png) - Si besoin de retraitement local:
cd backend
python process_vehicle_images.py| Methode | Route | Description |
|---|---|---|
POST |
/api/session/create |
Creer une session vehicule |
POST |
/api/session/{id}/upload |
Uploader un PDF |
POST |
/api/session/{id}/process |
Lancer le traitement |
GET |
/api/session/{id}/status |
Statut de la session |
POST |
/api/session/{id}/chat |
Poser une question |
GET |
/api/health |
Verification de sante |
- Backend → Render (Free tier, config dans
render.yaml) - Frontend → Vercel (Free tier, config dans
vercel.json)
Variable d'environnement Vercel : VITE_API_URL=https://your-app.onrender.com/api
Depuis la racine du projet (Windows PowerShell) :
./clean-workspace.ps1Options utiles :
./clean-workspace.ps1 -IncludeFrontendDist./clean-workspace.ps1 -IncludeFrontendDist -IncludeNodeModules
Amine S.