Architecture Technique & Déploiement
Cette section détaille les composants logiciels et l'organisation technique de NaturSQL.
🏗️ Vue d'Ensemble des Composants
L'application NaturSQL est découpée en couches logiques indépendantes pour assurer une maintenabilité optimale :
graph TD
subgraph Frontend["Couche Présentation (Gradio)"]
UI["Interface Web (ui_gradio.py)"]
end
subgraph Service["Couche Métier (Services)"]
AUTH["Service d'Authentification (auth.py)"]
CORE["Service NL -> SQL (core.py)"]
end
subgraph Infrastructure["Infrastructure & Données"]
LLM["Serveur LLM (Ollama)"]
DB[(Base MariaDB 'appia')]
end
UI --> AUTH
UI --> CORE
AUTH --> DB
CORE --> LLM
CORE --> DB
📦 Stack Technologique
| Composant | Technologie | Rôle |
|---|---|---|
| Interface Utilisateur | Gradio | Interface réactive en Python, formulaires de connexion et chat conversationnel. |
| Modèle de Langage | Ollama | Hébergement et inférence locale du LLM pour la traduction NL -> SQL. |
| Base de Données | MariaDB | Stockage relationnel des comptes utilisateurs et des maquettes d'enseignement (appia). |
| Orchestration | Docker Compose | Déploiement multi-conteneurs simplifié et reproductible. |
| Documentation | MkDocs Material | Site statique de documentation déployé via GitHub Actions. |
🔒 Sécurité et Intégrité des Données
- Exécution en lecture seule (
SELECT) : Toutes les requêtes générées par l'IA sont contrôlées avant exécution pour bloquer toute opération d'écriture ou de suppression (INSERT,UPDATE,DELETE,DROP). - Cloisonnement local : Les échanges entre l'application et le LLM s'effectuent sur le réseau local interne ; aucune information sensible n'est transmise à l'extérieur.
- Mots de passe hachés : Les identifiants utilisateurs sont sécurisés en base de données selon les bonnes pratiques de cryptographie.
🚀 Déploiement avec Docker
Pour démarrer l'ensemble des services en local :
# Cloner le dépôt
git clone https://github.com/ChtiAxel/appli_intelligente.git
cd appli_intelligente
# Lancer les conteneurs (Base de données + Interface web)
docker compose up -d --build
L'interface est alors accessible directement sur http://localhost:7860.