Initial commit

This commit is contained in:
Dom
2026-03-05 01:20:15 +01:00
commit c0c50e56f0
364 changed files with 62207 additions and 0 deletions

416
omop/RUN_SCRIPT_GUIDE.md Normal file
View File

@@ -0,0 +1,416 @@
# 🚀 Guide du Script run.sh
## Vue d'ensemble
Le script `run.sh` est un **script complet** qui démarre toute la stack OMOP Pipeline avec vérifications et gestion d'erreurs.
---
## Utilisation
### Démarrage simple
```bash
cd omop
./run.sh
```
C'est tout ! Le script s'occupe de tout.
---
## Ce que fait le script
### 1. Vérifications préalables ✅
Le script vérifie automatiquement :
- ✅ Python 3 est installé
- ✅ Node.js est installé
- ✅ npm est installé
- ✅ PostgreSQL est accessible
- ✅ Dépendances Python installées
- ✅ Dépendances npm installées
- ✅ Connexion à la base de données
### 2. Installation automatique 📦
Si des dépendances manquent, le script les installe automatiquement :
- Dépendances Python (`requirements.txt` + `requirements-api.txt`)
- Dépendances npm (`frontend/node_modules`)
### 3. Démarrage de la stack 🚀
Le script démarre dans l'ordre :
1. **API FastAPI** (port 8000)
2. **Frontend React** (port 4400)
### 4. Monitoring 📊
Le script :
- Vérifie que chaque service démarre correctement
- Affiche les PIDs des processus
- Crée des logs dans `logs/api.log` et `logs/frontend.log`
- Attend les signaux d'arrêt (Ctrl+C)
### 5. Arrêt propre 🛑
Quand tu appuies sur Ctrl+C :
- Le script arrête proprement l'API
- Le script arrête proprement le frontend
- Les processus sont nettoyés
---
## Ports utilisés
| Service | Port | URL |
|---------|------|-----|
| **Frontend** | 4400 | http://localhost:4400 |
| **API** | 8000 | http://localhost:8000 |
| **Docs API** | 8000 | http://localhost:8000/docs |
---
## Logs
Les logs sont automatiquement créés dans :
- `logs/api.log` - Logs de l'API FastAPI
- `logs/frontend.log` - Logs du frontend React
Pour consulter les logs en temps réel :
```bash
# Logs API
tail -f logs/api.log
# Logs Frontend
tail -f logs/frontend.log
```
---
## Messages du script
### Messages d'information (bleu)
```
[INFO] Vérification de Python...
[INFO] Démarrage de l'API FastAPI...
```
### Messages de succès (vert)
```
[SUCCESS] Python trouvé: Python 3.12.3
[SUCCESS] API démarrée (PID: 12345)
```
### Messages d'avertissement (jaune)
```
[WARNING] Dépendances Python manquantes, installation...
[WARNING] Impossible de se connecter à la base de données
```
### Messages d'erreur (rouge)
```
[ERROR] Python 3 n'est pas installé
[ERROR] Échec du démarrage de l'API
```
---
## Exemple de sortie
```
╔═══════════════════════════════════════════════════════════╗
║ ║
║ 🚀 OMOP PIPELINE - STACK COMPLÈTE 🚀 ║
║ ║
╚═══════════════════════════════════════════════════════════╝
[INFO] Vérification de Python...
[SUCCESS] Python trouvé: Python 3.12.3
[INFO] Vérification de Node.js...
[SUCCESS] Node.js trouvé: v20.11.0
[INFO] Vérification de npm...
[SUCCESS] npm trouvé: v10.2.4
[INFO] Vérification de PostgreSQL...
[SUCCESS] PostgreSQL trouvé: psql (PostgreSQL) 16.11
[INFO] Vérification des dépendances Python...
[SUCCESS] Dépendances Python OK
[INFO] Vérification des dépendances frontend...
[SUCCESS] Dépendances frontend OK
[INFO] Vérification de la connexion PostgreSQL...
[SUCCESS] Connexion à la base de données OK
[INFO] ═══════════════════════════════════════════════════════════
[INFO] DÉMARRAGE DE LA STACK
[INFO] ═══════════════════════════════════════════════════════════
[INFO] Démarrage de l'API FastAPI...
[SUCCESS] API démarrée (PID: 12345)
[SUCCESS] API disponible sur: http://localhost:8000
[SUCCESS] Documentation API: http://localhost:8000/docs
[INFO] Démarrage du frontend React...
[SUCCESS] Frontend démarré (PID: 12346)
[SUCCESS] Frontend disponible sur: http://localhost:4400
[SUCCESS] ═══════════════════════════════════════════════════════════
[SUCCESS] ✅ STACK OMOP PIPELINE DÉMARRÉE ✅
[SUCCESS] ═══════════════════════════════════════════════════════════
📊 Frontend: http://localhost:4400
🔌 API: http://localhost:8000
📚 Documentation: http://localhost:8000/docs
📝 Logs API: logs/api.log
📝 Logs Frontend: logs/frontend.log
[INFO] Appuyez sur Ctrl+C pour arrêter la stack
```
---
## Arrêt de la stack
### Arrêt normal
Appuie sur **Ctrl+C** dans le terminal où le script tourne :
```
^C
[WARNING] Arrêt de la stack OMOP Pipeline...
[INFO] Arrêt de l'API (PID: 12345)
[INFO] Arrêt du frontend (PID: 12346)
[SUCCESS] Stack arrêtée proprement
```
### Arrêt forcé
Si le script ne répond pas, tu peux forcer l'arrêt :
```bash
# Trouver les processus
ps aux | grep "run_api.py\|vite"
# Tuer les processus
kill -9 <PID_API> <PID_FRONTEND>
```
---
## Troubleshooting
### Le script ne démarre pas
**Problème** : `Permission denied`
**Solution** :
```bash
chmod +x run.sh
./run.sh
```
### Python n'est pas trouvé
**Problème** : `[ERROR] Python 3 n'est pas installé`
**Solution** :
```bash
# Vérifier Python
python3 --version
# Installer Python si nécessaire
sudo apt install python3 # Ubuntu/Debian
```
### Node.js n'est pas trouvé
**Problème** : `[ERROR] Node.js n'est pas installé`
**Solution** :
```bash
# Vérifier Node.js
node --version
# Installer Node.js si nécessaire
# Voir: https://nodejs.org/
```
### PostgreSQL n'est pas accessible
**Problème** : `[WARNING] Impossible de se connecter à la base de données`
**Solution** :
```bash
# Vérifier que PostgreSQL tourne
sudo systemctl status postgresql
# Démarrer PostgreSQL si nécessaire
sudo systemctl start postgresql
# Tester la connexion
psql -U dom -d omop_cdm
```
### L'API ne démarre pas
**Problème** : `[ERROR] Échec du démarrage de l'API`
**Solution** :
```bash
# Consulter les logs
cat logs/api.log
# Vérifier que le port 8000 est libre
lsof -i :8000
# Tester manuellement
python3 run_api.py
```
### Le frontend ne démarre pas
**Problème** : `[ERROR] Échec du démarrage du frontend`
**Solution** :
```bash
# Consulter les logs
cat logs/frontend.log
# Vérifier que le port 4400 est libre
lsof -i :4400
# Réinstaller les dépendances
cd frontend
rm -rf node_modules package-lock.json
npm install
```
---
## Comparaison avec start_web.sh
| Fonctionnalité | run.sh | start_web.sh |
|----------------|--------|--------------|
| Vérifications préalables | ✅ Complètes | ❌ Basiques |
| Messages colorés | ✅ Oui | ❌ Non |
| Logs dans fichiers | ✅ Oui | ❌ Non |
| Gestion d'erreurs | ✅ Avancée | ⚠️ Basique |
| Arrêt propre | ✅ Oui | ✅ Oui |
| Installation auto | ✅ Oui | ✅ Oui |
| Vérification BDD | ✅ Oui | ❌ Non |
**Recommandation** : Utilise `run.sh` pour un démarrage complet et robuste.
---
## Configuration
### Changer les ports
Pour changer les ports, modifie :
**Frontend** (port 4400) :
```javascript
// frontend/vite.config.js
server: {
port: 4400, // Changer ici
...
}
```
**API** (port 8000) :
```python
# run_api.py
uvicorn.run(
"src.api.main:app",
host="0.0.0.0",
port=8000, # Changer ici
...
)
```
N'oublie pas de mettre à jour le CORS dans `src/api/main.py` :
```python
allow_origins=["http://localhost:4400", ...]
```
---
## Utilisation avancée
### Démarrer en mode debug
```bash
# Modifier run_api.py pour activer le debug
# Puis lancer
./run.sh
```
### Démarrer uniquement l'API
```bash
python3 run_api.py
```
### Démarrer uniquement le frontend
```bash
cd frontend
npm run dev
```
### Consulter les logs en temps réel
```bash
# Terminal 1 - Logs API
tail -f logs/api.log
# Terminal 2 - Logs Frontend
tail -f logs/frontend.log
# Terminal 3 - Lancer la stack
./run.sh
```
---
## Intégration CI/CD
Le script peut être utilisé dans un pipeline CI/CD :
```yaml
# .github/workflows/deploy.yml
- name: Start OMOP Stack
run: |
cd omop
./run.sh &
sleep 10
- name: Run tests
run: |
curl http://localhost:8000/health
curl http://localhost:4400
```
---
## Résumé
**Commande unique** :
```bash
./run.sh
```
**Résultat** :
- ✅ Vérifications complètes
- ✅ Installation automatique
- ✅ Démarrage de la stack
- ✅ Logs dans fichiers
- ✅ Arrêt propre
**Accès** :
- Frontend : http://localhost:4400
- API : http://localhost:8000
- Docs : http://localhost:8000/docs
**Simple, robuste, complet ! 🚀**