File size: 3,453 Bytes
c7ee2c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a8e5bec
c7ee2c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a8e5bec
c7ee2c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import csv
import os
from datetime import datetime
import uuid

DOMAINES = ["Santé", "Éducation", "Numérique", "Agriculture", "Politique", "Autre"]
LANGUES = ["Français", "Arabe tchadien", "Sara", "Ngambay", "Autre"]
TYPES = ["Texte brut", "Question-réponse", "Résumé", "Dialogue"]

FICHIER_SORTIE = "contributions.csv"

def sauvegarder_contribution(texte, domaine, langue, source, type_contenu, contributeur, consentement):
    if not texte or not texte.strip():
        return "⚠️ Le champ texte ne peut pas être vide."
    if not consentement:
        return "⚠️ Vous devez accepter les conditions de contribution pour soumettre."

    nouvelle_ligne = {
        "id": str(uuid.uuid4())[:8],
        "texte": texte.strip(),
        "domaine": domaine,
        "langue": langue,
        "source": source if source else "contribution directe",
        "type": type_contenu,
        "contributeur": contributeur if contributeur else "anonyme",
        "date_collecte": datetime.now().strftime("%Y-%m-%d"),
        "licence": "CC-BY-SA-4.0"
    }

    fichier_existe = os.path.isfile(FICHIER_SORTIE)
    with open(FICHIER_SORTIE, mode="a", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=nouvelle_ligne.keys())
        if not fichier_existe:
            writer.writeheader()
        writer.writerow(nouvelle_ligne)

    return "✅ Merci ! Votre contribution a été enregistrée et sera relue par l'équipe CIAT avant intégration."

with gr.Blocks(title="CIAT Dataset - Contribuer") as demo:
    gr.Markdown("""
    # 🇹🇩 Contribuer au CIAT Dataset Tchad
    
    Aidez-nous à construire un corpus public multilingue pour entraîner un modèle de langue tchadien.
    Toute contribution est relue par l'équipe CIAT avant intégration définitive.
    """)

    with gr.Row():
        with gr.Column():
            texte = gr.Textbox(
                label="Votre texte",
                placeholder="Collez ou écrivez votre contribution ici...",
                lines=8
            )
            domaine = gr.Dropdown(DOMAINES, label="Domaine", value="Numérique")
            langue = gr.Dropdown(LANGUES, label="Langue", value="Français")
            type_contenu = gr.Dropdown(TYPES, label="Type de contenu", value="Texte brut")
            source = gr.Textbox(label="Source (optionnel)", placeholder="Ex : rédaction originale, traduction, article...")
            contributeur = gr.Textbox(label="Votre pseudonyme (optionnel, laissez vide pour anonyme)")

            consentement = gr.Checkbox(
                label="J'accepte que ce contenu soit publié sous licence CC-BY-SA-4.0 et utilisé pour entraîner des modèles de langage."
            )

            bouton = gr.Button("Soumettre ma contribution", variant="primary")

        with gr.Column():
            resultat = gr.Textbox(label="Statut", interactive=False)
            gr.Markdown("""
            ### Règles de contribution
            - Ne soumettez que du contenu dont vous détenez les droits
            - Pas de contenu diffamatoire ou de désinformation
            - Pas de données personnelles ou médicales identifiables
            - Précisez la langue exacte de votre texte
            """)

    bouton.click(
        fn=sauvegarder_contribution,
        inputs=[texte, domaine, langue, source, type_contenu, contributeur, consentement],
        outputs=resultat
    )

demo.launch()