tiffank1802
Add Django simulation server with Docker config
b42075e
# Simulation Numérique Server
Plateforme Django pour exécuter des méthodes de simulation numérique avec traitement asynchrone via Celery et Redis.
## Architecture
```
simulationserver/
├── simulations/ # App Django
│ ├── models.py # Modèles (SimulationMethod, SimulationRun)
│ ├── tasks.py # Tâches Celery
│ ├── views.py # API REST
│ ├── views_views.py # Vues HTML
│ └── templates/ # Templates
├── simulationserver/ # Configuration Django
│ ├── settings.py # Settings + Celery config
│ ├── celery.py # Configuration Celery
│ └── urls.py # URLs
└── manage.py
```
## Installation
```bash
pip install -r simulationserver/requirements.txt
```
## Configuration
1. Installer et démarrer Redis:
```bash
# Sur Debian/Ubuntu
sudo apt install redis-server
sudo systemctl start redis
# Ou avec Docker
docker run -d -p 6379:6379 redis:alpine
```
## Démarrage
1. Appliquer les migrations:
```bash
python manage.py migrate
```
2. Initialiser les méthodes de simulation:
```bash
python manage.py init_simulation_methods
```
3. Démarrer le serveur Django:
```bash
python manage.py runserver 0.0.0.0:8000
```
4. Démarrer le worker Celery (dans un autre terminal):
```bash
cd /root/bookshop
celery -A simulationserver worker --loglevel=info
```
## Utilisation
### Interface Web
- **Accueil**: http://localhost:8000/
- **Liste des méthodes**: http://localhost:8000/methods/
- **Créer une simulation**: http://localhost:8000/run/create/
- **Historique**: http://localhost:8000/runs/
### API REST
- `GET /api/methods/` - Liste des méthodes
- `GET /api/methods/{slug}/` - Détail d'une méthode
- `POST /api/runs/` - Créer et lancer une simulation
- `GET /api/runs/{id}/` - Détail d'une simulation
- `GET /api/runs/{id}/status/` - Statut d'une simulation
- `POST /api/runs/{id}/cancel/` - Annuler une simulation
- `GET /api/runs/recent/` - Simulations récentes
## Modèles
### SimulationMethod
Décrit une méthode de simulation:
- `name`: Nom de la méthode
- `slug`: Identifiant unique
- `description`: Description courte
- `theory`: Documentation/theorie
- `parameters_schema`: Schema JSON des paramètres
- `default_parameters`: Paramètres par défaut
### SimulationRun
Une exécution de simulation:
- `method`: Méthode utilisée
- `parameters`: Paramètres de la simulation
- `status`: PENDING, RUNNING, SUCCESS, FAILURE, CANCELLED
- `progress`: Pourcentage de progression
- `logs`: Logs d'exécution
- `result_data`: Résultats JSON
## Tâches Celery
Les simulations sont exécutées en arrière-plan via Celery:
- Le worker lit les paramètres depuis la base
- Exécute le calcul
- Met à jour le statut et les résultats
- Les pages web font du polling pour le suivi
## Ajouter une nouvelle méthode
1. Ajouter la fonction de simulation dans `simulations/tasks.py`
2. Ajouter le mapping dans `SIMULATION_METHODS`
3. Créer un `SimulationMethod` via l'admin ou `init_simulation_methods`