# 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). ---