# 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`