# Changelog - Version Production ## Version 2.0.0 - Production Ready (2025-01-27) ### 🎉 Nouvelles fonctionnalités majeures #### 🔐 Sécurité et Authentification - **Authentification par mot de passe** : Accès sécurisé via `APP_PASSWORD` - **Système de dispatch multi-annotateurs** : Chaque annotateur ne voit que sa portion - **Isolation des données** : Traçabilité complète par annotateur - Module : `backend/auth.py` #### 👥 Gestion des Annotateurs - **Configuration flexible** : Fichier JSON ou secrets HF - **Assignment automatique** : Filtrage par `start_idx` / `end_idx` - **Interface de sélection** : Choix visuel de l'identifiant - **Validation** : Vérification de la cohérence de la config - Module : `backend/annotator_config.py` #### ☁️ Persistance Cloud - **Sauvegarde HuggingFace** : Stockage permanent sur dataset privé - **Auto-restore** : Chargement automatique au démarrage - **Format horodaté** : Fichiers JSON avec timestamp - **Bouton explicite** : Sauvegarde manuelle à tout moment - Module : `backend/hf_storage.py` ### 🔧 Modifications #### Interface Utilisateur - Affichage de l'identité annotateur dans la sidebar - Indicateur de portion assignée (start-end) - Badge de statut sauvegarde cloud - Bouton "☁️ Sauvegarder sur HF" proéminent - Nom de fichier export personnalisé par annotateur #### Backend - Filtrage automatique du dataset au chargement - Stockage du dataset complet + portion filtrée - Métadonnées enrichies (annotator_id, filtered, etc.) - Support secrets HF + variables d'environnement #### Configuration - Nouveau fichier `data/annotators.json` - Exemple fourni : `data/annotators.json.example` - Secrets HF : `APP_PASSWORD`, `HF_TOKEN`, `HF_DATASET_REPO` - Fallback sur config par défaut si non configuré ### 📚 Documentation #### Nouveaux fichiers - **QUICKSTART.md** : Guide de démarrage rapide (15 min) - **CONFIGURATION.md** : Documentation complète de configuration - **CHANGELOG.md** : Ce fichier #### Mises à jour - **README.md** : Vue d'ensemble production, architecture, sécurité - **requirements.txt** : Ajout de `huggingface_hub>=0.20.0` - **.gitignore** : Ignorer secrets et données sensibles ### 🏗️ Architecture #### Nouveaux modules ``` backend/ ├── auth.py # Authentification ├── annotator_config.py # Configuration annotateurs └── hf_storage.py # Sauvegarde HuggingFace data/ └── annotators.json.example # Template configuration ``` #### Flux d'exécution 1. **Authentification** : Vérification mot de passe 2. **Sélection** : Choix de l'annotateur 3. **Filtrage** : Dataset filtré automatiquement 4. **Annotation** : Interface scoring 5. **Persistance** : Sauvegarde locale + HF cloud ### 🔒 Sécurité #### Protections ajoutées - ✅ Mot de passe obligatoire pour accès - ✅ Tokens jamais en clair dans le code - ✅ Dataset de stockage privé recommandé - ✅ Isolation des annotateurs - ✅ Traçabilité complète (qui a annoté quoi) #### Bonnes pratiques - Secrets via HF Spaces (pas de commit) - Validation des configurations - Messages d'erreur explicites - Mode développement avec fallbacks ### 📊 Intégration FFGen #### Workflow complet 1. **FFGen** : `create_annotation_study.py` → Créer subsets + gold 2. **App** : Distribuer et collecter annotations 3. **FFGen** : `analyze_agreement.py` → Calculer accord 4. **FFGen** : `merge_scores.py` → Dataset final #### Compatibilité - Format identique aux scripts FFGen - Support des gold items pour IAA - Export JSONL directement utilisable - Métadonnées compatibles ### 🐛 Corrections - Fix : Sauvegarde perdue après redémarrage → Sauvegarde HF - Fix : Tous les annotateurs voient tout → Filtrage par portion - Fix : Pas de traçabilité → annotator_id dans toutes les sauvegardes - Fix : Accès public non sécurisé → Authentification obligatoire ### ⚠️ Breaking Changes #### Configuration requise - **Avant** : Aucune config nécessaire - **Après** : Secrets HF obligatoires en production #### Workflow - **Avant** : Un seul utilisateur, dataset complet - **Après** : Multi-utilisateurs, portions filtrées #### Migration depuis v1.0 1. Configurer les secrets HF (voir QUICKSTART.md) 2. Créer `data/annotators.json` 3. Pousser la nouvelle version 4. Informer les annotateurs du nouveau workflow ### 📈 Métriques #### Fichiers modifiés - 4 fichiers modifiés - 3 nouveaux modules backend - 3 nouveaux fichiers documentation - 1 fichier exemple configuration #### Lignes de code - ~600 lignes ajoutées (backend) - ~200 lignes ajoutées (app.py) - ~800 lignes documentation ### 🚀 Déploiement #### Prérequis 1. Créer dataset HF privé pour stockage 2. Créer token HF avec droits write 3. Configurer secrets dans HF Space 4. Créer configuration annotateurs #### Commandes ```bash git add . git commit -m "Add authentication, dispatch and HF persistence" git push origin main ``` Le Space rebuild automatiquement (3-5 min). ### 📖 Ressources - **Guide rapide** : [QUICKSTART.md](QUICKSTART.md) - 15 minutes - **Documentation complète** : [CONFIGURATION.md](CONFIGURATION.md) - **Exemple config** : `data/annotators.json.example` ### 🙏 Remerciements Cette version implémente les recommandations de sécurité et persistance pour un déploiement en production sur HuggingFace Spaces avec hébergement gratuit. Inspiré par : - Le système de dispatch de FFGen (`create_annotation_study.py`) - Les bonnes pratiques HuggingFace Spaces - Les besoins réels d'études d'annotation multi-annotateurs --- ## Versions précédentes ### Version 1.0.0 - Version initiale - Interface de scoring basique - Sauvegarde locale uniquement - Un seul utilisateur - Pas d'authentification