File size: 4,706 Bytes
0d74ab8
1d8c2e0
 
 
 
0d74ab8
1d8c2e0
0d74ab8
e4d3f10
1d8c2e0
 
 
0d74ab8
1d8c2e0
0d74ab8
 
1d8c2e0
0d74ab8
1d8c2e0
0d74ab8
1d8c2e0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
---
title: Feedback Scoring App
emoji: 🔐
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
tags:
- streamlit
- annotation
- feedback
- secure
pinned: false
short_description: Secure code feedback annotation with multi-annotator support
---

# Feedback Scoring Tool - Production Version

Application Streamlit sécurisée pour l'annotation et le scoring de feedbacks de code par plusieurs annotateurs. Version prête pour le déploiement en production avec authentification, dispatch et persistance cloud.

## Fonctionnalités

### Annotation
- 📊 **Interface de scoring intuitive** : Notation de 1 à 5 pour chaque feedback
- 📈 **Statistiques en temps réel** : Suivi de votre progression et distribution des scores
- 💬 **Commentaires** : Ajoutez des notes sur chaque annotation
- 📥 **Import flexible** : Support des fichiers JSONL locaux et datasets HuggingFace

### Sécurité et Collaboration
- 🔐 **Authentification** : Accès protégé par mot de passe
- 👥 **Multi-annotateurs** : Système de dispatch automatique par portion
- 🎯 **Isolation** : Chaque annotateur ne voit que sa portion du dataset
- 📋 **Traçabilité** : Toutes les annotations sont identifiées par annotateur

### Persistance
- ☁️ **Sauvegarde cloud** : Stockage permanent sur HuggingFace Dataset privé
- 💾 **Auto-sauvegarde** : Progression sauvegardée automatiquement en local
- 🔄 **Reprise de session** : Continuez où vous en étiez, même après redémarrage
- 📤 **Export JSONL** : Téléchargez vos annotations à tout moment

## Configuration pour Production

Cette application nécessite une configuration avant déploiement. Voir **[CONFIGURATION.md](CONFIGURATION.md)** pour le guide complet.

### Configuration rapide

1. **Créer un dataset HF privé** pour stocker les annotations
2. **Configurer les secrets** dans Settings du Space :
   - `APP_PASSWORD` : Mot de passe d'accès
   - `HF_TOKEN` : Token avec droits d'écriture
   - `HF_DATASET_REPO` : Nom du dataset de stockage
3. **Configurer les annotateurs** dans `data/annotators.json`
4. **Pousser sur HF Spaces**

📖 **Documentation complète** : [CONFIGURATION.md](CONFIGURATION.md)

## Utilisation (Annotateurs)

### Workflow
1. **Connexion** : Entrez le mot de passe fourni
2. **Identification** : Sélectionnez votre identifiant
3. **Chargement** : L'app charge automatiquement votre portion
4. **Annotation** : Scorez les feedbacks (1-5) avec commentaires
5. **Sauvegarde** : Cliquez sur "☁️ Sauvegarder sur HF" régulièrement
6. **Reprise** : Vous pouvez fermer et reprendre plus tard

### Format du dataset

```json
{
  "anchor": "code source",
  "positive": "feedback positif",
  "language": "python"
}
```

## Architecture

```
backend/
├── auth.py              # Authentification
├── annotator_config.py  # Configuration annotateurs
├── hf_storage.py        # Sauvegarde HuggingFace
├── data_loader.py       # Chargement datasets
├── persistence.py       # Sauvegarde locale
├── export.py            # Export JSONL
└── statistics.py        # Métriques

frontend/
├── components.py        # Composants UI
├── styles.py            # Styles CSS
└── help_page.py         # Page d'aide

data/
├── annotators.json      # Config annotateurs
└── [sessions locales]   # Sauvegardes temporaires
```

## Développement

### Local
```bash
pip install -r requirements.txt

# Définir les variables d'environnement
export APP_PASSWORD="dev"
export HF_TOKEN="hf_xxxxx"
export HF_DATASET_REPO="username/annotations"

streamlit run app.py
```

### Docker
```bash
docker build -t feedback-scoring-app .
docker run -p 7860:7860 \
  -e APP_PASSWORD="dev" \
  -e HF_TOKEN="hf_xxxxx" \
  -e HF_DATASET_REPO="username/annotations" \
  feedback-scoring-app
```

## Intégration avec FFGen

Cette application s'intègre avec le pipeline [FFGen](https://github.com/YOUR_USERNAME/FFGen) :

1. **Préparation** : Utilisez `create_annotation_study.py` pour créer les subsets
2. **Annotation** : Utilisez cette app pour distribuer et collecter les scores
3. **Analyse** : Utilisez `analyze_agreement.py` pour calculer l'accord
4. **Fusion** : Utilisez `merge_scores.py` pour créer le dataset final

## Sécurité

- ✅ Authentification par mot de passe
- ✅ Dataset de stockage privé
- ✅ Isolation des annotateurs
- ✅ Traçabilité complète
- ✅ Pas de données sensibles en clair dans le code

## Support

- 📖 Documentation : [CONFIGURATION.md](CONFIGURATION.md)
- 🐛 Issues : [GitHub Issues](https://github.com/YOUR_USERNAME/feedbacks-scoring-app/issues)
- 📧 Contact : your.email@example.com

## Licence

Ce projet est open source.