diff --git a/README.md b/README.md index 92a42b4..aa8cb50 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,246 @@ -# NextcloudSNT +# Système Nextcloud SNT - Résumé Complet -Pour envoyer et récupérer activités des élèves via Nextcloud \ No newline at end of file +## 🎯 Objectif Accompli + +Système automatisé pour l'enseignement SNT avec Nextcloud gérant **180 élèves** (6 classes × 30 élèves) avec distribution et collecte automatique des devoirs. + +## 🏗️ Architecture Finale + +### Structure serveur +``` +/var/www/html/nextcloud/data/ +├── profsnt/files/ +│ ├── Modeles_SNT/ # Modèles pour toutes classes +│ │ ├── Sequence1_Introduction_SNT/ +│ │ ├── Sequence2_Web/ +│ │ └── ... (7 séquences SNT) +│ └── Classes_SNT/ # Rendus par classe +│ ├── 2nde1/Rendus/ +│ ├── 2nde2/Rendus/ +│ └── ... +└── [eleve]/files/SNT/ # Espace de travail élève + ├── Sequence1_Introduction_SNT/ + └── ... +``` + +### Configuration +- **Quotas :** 125MB par élève (optimisé pour 25GB serveur) +- **Groupe :** "eleves" pour gestion centralisée +- **Comptes :** Allégés (sans fichiers par défaut Nextcloud) +- **Sécurité :** Politique mots de passe assouplie (4 caractères minimum) + +## 🔧 Scripts Opérationnels + +### 1. `setup_complet_snt_v2.sh` - Création des comptes + +```bash +# Usage +./setup_complet_snt_v2.sh eleves.csv + +# Format CSV +Classe,Nom,Prenom,Email,MotDePasse +2nde1,Martin,Paul,paul.martin@lycee.fr,1234 +``` + +**Fonctions :** +- Création 180 comptes avec mots de passe du CSV +- Ajout au groupe "eleves" +- Quotas 125MB +- Structure SNT/ dans chaque espace élève +- Création Modeles_SNT/ chez prof +- Suppression fichiers par défaut Nextcloud + +### 2. `distribution_modeles_v2.sh` - Distribution intelligente + +```bash +# Usage +./distribution_modeles_v2.sh # Toutes classes +./distribution_modeles_v2.sh 2nde1 # Classe spécifique +./distribution_modeles_v2.sh 2nde1 csv # Avec CSV custom +``` + +**Fonctions :** +- Distribue depuis Modeles_SNT/ unique +- Ajoute suffixe `_v0` aux fichiers distribués +- Ne distribue QUE si aucune version n'existe (v0,v1,v2... ou fichier sans version) +- Gère les espaces dans noms de fichiers +- Rescan automatique pour visibilité immédiate + +### 3. `collecte_final.sh` - Collecte avec historique + +```bash +# Usage +./collecte_final.sh eleves.csv +``` + +**Fonctions :** +- Collecte fichiers modifiés (30 dernières minutes) +- Historique automatique : v1, v2, v3... +- Anti-doublons MD5 (pas de version si contenu identique) +- Gère tous patterns versions : `_v1`, `v1`, `-v1`, `v1` +- Gestion robuste des espaces dans noms +- Compteur précis des fichiers collectés + +### 4. `gestion_comptes.sh` - Administration + +```bash +./gestion_comptes.sh lister # Liste comptes + groupe +./gestion_comptes.sh groupe # Infos groupe eleves +./gestion_comptes.sh quota-groupe # Modifier quotas en masse +./gestion_comptes.sh verifier # Vérifier comptes existants +./gestion_comptes.sh nettoyer # Suppression fin d'année +``` + +## 📊 Workflow de Production + +### Setup initial +```bash +1. ./setup_complet_snt_v2.sh eleves_complets.csv +2. Création modèles dans Modeles_SNT/ via interface web +3. ./distribution_modeles_v2.sh +4. Crontab : */30 8-17 * * 1-5 /scripts/collecte_final.sh +``` + +### Workflow élève +- **Reçoit :** `Exercise_v0.docx` (modèle à conserver) +- **Travaille sur :** `Exercise_v1.docx`, `v2.docx`, etc. +- **Collecte :** Automatique toutes les 30 min +- **Interface :** Épurée (seulement dossier SNT/) + +## 🎯 Points Techniques Importants + +### Gestion des espaces +- `find -print0` + `IFS= read -r -d ''` pour fichiers avec espaces +- `find` au lieu de glob bash pour détection versions + +### Anti-doublons +- Comparaison MD5 avec version précédente +- Évite stockage inutile si contenu identique + +### Permissions +- Tous scripts en root (nécessaire pour occ) +- `chown www-data:www-data` systématique après création +- Rescan obligatoire pour visibilité interface + +### Format CSV +```csv +Classe,Nom,Prenom,Email,MotDePasse +2nde1,Martin,Paul,paul.martin@lycee.fr,1234 +2nde1,Dupont,Sophie,sophie.dupont@lycee.fr,5678 +``` + +## 🔧 Commandes Utiles + +### Surveillance système +```bash +# Espace utilisé +du -sh /var/www/html/nextcloud/data/ + +# Statistiques groupe +sudo -u www-data php /var/www/html/nextcloud/occ group:list-users eleves + +# Rescan manuel +sudo -u www-data php /var/www/html/nextcloud/occ files:scan username + +# Vérifier quota élève +sudo -u www-data php /var/www/html/nextcloud/occ user:info username +``` + +### Debug et maintenance +```bash +# Logs Nextcloud +sudo -u www-data php /var/www/html/nextcloud/occ log:tail + +# Nettoyer cache +sudo -u www-data php /var/www/html/nextcloud/occ files:cleanup + +# Statistiques collecte +find /var/www/html/nextcloud/data/profsnt/files/Classes_SNT -name "*.docx" | wc -l +``` + +## 📝 Pour Interface Web + +### Scripts à interfacer + +1. **Setup** + - Upload CSV → Exécution setup → Affichage résultats + - Validation format CSV + - Progression en temps réel + +2. **Distribution** + - Sélection classe → Exécution → Statistiques + - Aperçu modèles disponibles + - Logs de distribution + +3. **Collecte** + - Bouton collecte manuelle → Résumé fichiers collectés + - Statistiques par classe/élève + - Historique des collectes + +4. **Gestion** + - Quotas, stats groupe, nettoyage + - Monitoring espace disque + - Administration groupe élèves + +### Variables importantes +```bash +NEXTCLOUD_DATA="/var/www/html/nextcloud/data" +PROF_USERNAME="profsnt" +SCRIPTS_PATH="/scripts/" +NEXTCLOUD_ROOT="/var/www/html/nextcloud" +``` + +### Résultats à parser + +**Compteurs :** +- `(\d+) fichier\(s\) collecté\(s\)` - Nombre fichiers collectés +- `(\d+) fichier\(s\) distribué\(s\)` - Nombre fichiers distribués +- `(\d+) comptes créés` - Nombre comptes créés + +**Status :** +- `✅` - Succès +- `❌` - Erreur +- `⚠️` - Avertissement +- `↔️` - Fichier identique (non collecté) + +**Messages d'erreur courants :** +- `Unknown user` - Problème utilisateur +- `Permission denied` - Problème permissions +- `No such file` - Fichier/dossier manquant + +### API suggestions pour interface + +```javascript +// Endpoints +POST /api/setup - Upload CSV + création comptes +GET /api/classes - Liste des classes +POST /api/distribute - Distribution modèles +POST /api/collect - Collecte manuelle +GET /api/stats - Statistiques système +GET /api/logs - Logs en temps réel +``` + +## 🎓 Système Final Validé + +### Fonctionnalités opérationnelles +- ✅ **180 élèves** opérationnels +- ✅ **Distribution intelligente** sans doublons +- ✅ **Collecte robuste** avec historique +- ✅ **Gestion des espaces** dans noms fichiers +- ✅ **Anti-doublons MD5** fonctionnel +- ✅ **Interface épurée** élèves +- ✅ **Administration centralisée** + +### Capacités système +- **Stockage :** 22,5 GB utilisables (180 × 125MB) +- **Performance :** Collecte 30 min, rescan automatique +- **Robustesse :** Gestion erreurs, anti-doublons, logging +- **Scalabilité :** Extensible à plus de classes + +### Sécurité +- **Isolation :** Chaque élève dans son espace +- **Groupe :** Gestion centralisée via groupe "eleves" +- **Quotas :** Limitation espace par utilisateur +- **Permissions :** Contrôle accès granulaire + +--- \ No newline at end of file