This commit is contained in:
el 2025-06-24 18:17:53 +02:00
commit d7666f7b2c
44 changed files with 2246 additions and 0 deletions

71
backend/README.md Normal file
View file

@ -0,0 +1,71 @@
# Backend - Allons-y API
Ce dossier contient le code source de l'API RESTful pour l'application "Allons-y - Assistant de Candidature IA". Il est développé en Python avec le framework FastAPI.
## Technologies
* **Framework :** FastAPI
* **Base de Données ORM :** SQLAlchemy
* **Base de Données :** PostgreSQL (connexion à une base de données distante)
* **Authentification :** JWT avec `python-jose` et hachage de mot de passe avec `passlib[bcrypt]`
* **Analyse de Fichiers :** `pypdf` pour les PDF, `python-docx` pour les DOCX
* **IA APIs :** `google-generativeai` pour Gemini, `mistralai` pour Mistral
* **Gestion des variables d'environnement :** `python-dotenv`
## Comment Démarrer le Backend (Développement Local)
### Pré-requis :
* Python 3.9+
* pip (gestionnaire de paquets Python)
* Accès à votre base de données PostgreSQL distante.
### Étapes :
1. **Naviguer dans le répertoire du backend :**
```bash
cd backend
```
2. **Créer et activer un environnement virtuel (recommandé) :**
```bash
python -m venv venv
source venv/bin/activate # Sur Linux/macOS
# venv\Scripts\activate # Sur Windows
```
3. **Installer les dépendances :**
```bash
pip install -r requirements.txt
```
4. **Configurer les variables d'environnement :**
* Copiez `.env.example` en `.env` :
```bash
cp .env.example .env
```
* **Éditez le fichier `.env`** et renseignez les valeurs exactes pour `DATABASE_URL` (avec le `host`, `port`, `user`, `password` de votre base de données distante), `SECRET_KEY`, `GEMINI_API_KEY`, `MISTRAL_API_KEY`, et `FILES_UPLOAD_PATH`.
* **Important :** La `SECRET_KEY` doit être une chaîne de caractères longue et aléatoire pour la sécurité de vos JWT.
* Pour `FILES_UPLOAD_PATH`, assurez-vous que le répertoire `./uploads` existe ou sera créé et qu'il a les permissions d'écriture.
5. **Lancer l'application FastAPI :**
```bash
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
L'API sera accessible à `http://localhost:8000`. La documentation Swagger UI est disponible à `http://localhost:8000/docs`.
## Structure du Code (à venir)
* `main.py` : Point d'entrée de l'application FastAPI.
* `routers/` : Contient les routes de l'API (authentification, fichiers, IA).
* `models/` : Contient les modèles de base de données SQLAlchemy.
* `schemas/` : Contient les Pydantic schemas pour la validation des données.
* `crud/` : Contient les opérations CRUD pour la base de données.
* `utils/` : Fonctions utilitaires (sécurité, extraction de texte, etc.).
* `core/` : Configuration, dépendances.
## Endpoints Principaux (MVP)
* `POST /auth/register` : Inscription d'un nouvel utilisateur.
* `POST /auth/login` : Connexion de l'utilisateur.
* `GET /users/me` : Récupérer le profil utilisateur (authentifié).
* `POST /files/upload_cv` : Upload d'un CV.
* `POST /ia/analyze_offer` : Analyse d'offre d'emploi (scoring).
---