# Guide de déploiement O2switch - Setup Python App

## Configuration pour l'outil "Setup Python App" d'O2switch

### 1. Préparation des fichiers

Avant de déployer, assurez-vous d'avoir tous les fichiers nécessaires dans votre répertoire `backend-python/` :

```
backend-python/
├── app/                    # Code de l'application
├── alembic/               # Migrations de base de données
├── requirements.txt       # Dépendances Python
├── wsgi.py               # Point d'entrée WSGI (IMPORTANT)
├── alembic.ini           # Configuration Alembic
├── run.py                # Script de démarrage local
└── README.md             # Documentation
```

### 2. Configuration dans l'outil Setup Python App

#### Étape 1 : Créer une nouvelle application

1. Connectez-vous à votre panneau O2switch
2. Allez dans "Setup Python App"
3. Cliquez sur "Create application"

#### Étape 2 : Configuration de base

**Python version :** `3.11`

**Application root :** 
```
/home/votre_utilisateur/www/api.donshare.paydiaa.com
```

**Application URL :**
```
https://api.donshare.paydiaa.com
```

**Application startup file :**
```
wsgi.py
```

**Application Entry point :**
```
application
```

### 3. Upload des fichiers

#### Méthode 1 : Via FTP/SFTP
1. Connectez-vous à votre serveur O2switch via FTP
2. Naviguez vers `/home/votre_utilisateur/www/api.donshare.paydiaa.com/`
3. Uploadez tous les fichiers du dossier `backend-python/`

#### Méthode 2 : Via l'interface web O2switch
1. Utilisez l'outil de gestion de fichiers d'O2switch
2. Créez le dossier `api.donshare.paydiaa.com` dans `www/`
3. Uploadez les fichiers un par un

### 4. Configuration de la base de données

#### Créer la base de données PostgreSQL
1. Dans le panneau O2switch, allez dans "Bases de données"
2. Créez une nouvelle base PostgreSQL :
   - **Nom :** `donshare_db`
   - **Utilisateur :** `donshare_user`
   - **Mot de passe :** `donshare_password` (changez-le !)

#### Mettre à jour les variables d'environnement
Modifiez le fichier `wsgi.py` avec vos vraies informations :

```python
os.environ.setdefault('DATABASE_URL', 'postgresql://donshare_user:votre_vrai_mot_de_passe@localhost:5432/donshare_db')
os.environ.setdefault('SECRET_KEY', 'votre-cle-secrete-generee')
```

### 5. Installation des dépendances

#### Créer un environnement virtuel
```bash
cd /home/votre_utilisateur/www/api.donshare.paydiaa.com
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```

#### Exécuter les migrations
```bash
alembic upgrade head
```

### 6. Configuration des permissions

```bash
chmod +x wsgi.py
chmod 755 /home/votre_utilisateur/www/api.donshare.paydiaa.com
chmod -R 755 app/
chmod -R 755 alembic/
```

### 7. Test de l'application

#### Vérifier que l'application démarre
```bash
cd /home/votre_utilisateur/www/api.donshare.paydiaa.com
python3.11 wsgi.py
```

#### Tester l'API
```bash
curl https://api.donshare.paydiaa.com/api/v1/health
```

### 8. Configuration CORS

Assurez-vous que votre frontend Next.js peut accéder à l'API. Dans `wsgi.py`, vérifiez que les origines CORS incluent votre domaine frontend :

```python
os.environ.setdefault('CORS_ORIGINS', 'https://donshare.paydiaa.com,https://www.donshare.paydiaa.com,http://localhost:3000')
```

### 9. Variables d'environnement importantes

Modifiez ces variables dans `wsgi.py` selon votre configuration :

```python
# Base de données
os.environ.setdefault('DATABASE_URL', 'postgresql://user:password@localhost:5432/db_name')

# Sécurité
os.environ.setdefault('SECRET_KEY', 'votre-cle-secrete-32-caracteres')

# Domaine
os.environ.setdefault('CORS_ORIGINS', 'https://votre-domaine.com')

# Configuration
os.environ.setdefault('DEBUG', 'False')  # True pour le développement
```

### 10. Dépannage

#### Erreur "Module not found"
- Vérifiez que toutes les dépendances sont installées
- Vérifiez que l'environnement virtuel est activé

#### Erreur de connexion à la base de données
- Vérifiez les paramètres de connexion dans `DATABASE_URL`
- Vérifiez que la base de données existe
- Vérifiez que l'utilisateur a les bonnes permissions

#### Erreur CORS
- Vérifiez que les origines CORS incluent votre domaine frontend
- Vérifiez que le protocole (http/https) correspond

#### L'application ne démarre pas
- Vérifiez les logs d'erreur dans le panneau O2switch
- Vérifiez que `wsgi.py` est exécutable
- Vérifiez que le point d'entrée `application` est correct

### 11. Mise à jour de l'application

Pour mettre à jour l'application :

1. Uploadez les nouveaux fichiers
2. Redémarrez l'application via le panneau O2switch
3. Exécutez les migrations si nécessaire : `alembic upgrade head`

### 12. Monitoring

- Surveillez les logs dans le panneau O2switch
- Testez régulièrement l'endpoint de santé : `/api/v1/health`
- Surveillez l'utilisation de la base de données

### 13. Sécurité

- Changez le mot de passe de la base de données
- Utilisez une clé secrète forte
- Activez HTTPS
- Limitez les origines CORS
- Surveillez les logs d'accès

---

**Note :** Ce guide suppose que vous avez un hébergement O2switch avec support Python 3.11 et PostgreSQL. Adaptez les chemins et noms d'utilisateur selon votre configuration.
