feat: conformité AI Act — divulgation IA, consentement, rétention, arrêt urgence

- Léa se présente comme "assistante basée sur l'intelligence artificielle"
- Dialog consentement avant enregistrement (capture écran/clavier)
- Rétention logs 180 jours (Article 12 + 26(6))
- Bouton ARRÊT D'URGENCE toujours visible (Article 14)
- Transparence mode autonome explicite (Article 50)
- Rapport conformité AI Act en français (docs/CONFORMITE_AI_ACT.md)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-03-18 16:57:43 +01:00
parent 353c2a347e
commit f340eab628
7 changed files with 424 additions and 23 deletions

View File

@@ -247,9 +247,10 @@ class ChatWindow:
self._build_input_area(root)
self._build_resize_grip(root)
# Message d'accueil
# Message d'accueil — divulgation IA obligatoire (Article 50, Reglement IA)
self._add_lea_message(
"Bonjour ! Je suis L\u00e9a.\n"
"Bonjour ! Je suis L\u00e9a, une assistante bas\u00e9e sur "
"l'intelligence artificielle.\n"
"Je peux apprendre vos t\u00e2ches r\u00e9p\u00e9titives "
"et les refaire \u00e0 votre place.\n"
"Que puis-je faire pour vous ?"
@@ -915,11 +916,33 @@ class ChatWindow:
)
def _do_quick_record(self) -> None:
"""Demande le nom de la t\u00e2che et lance l'enregistrement."""
import tkinter as tk
from tkinter import simpledialog
"""Demande le consentement puis le nom de la tache et lance l'enregistrement.
# Creer un dialogue ephemere
Notification prealable obligatoire (Articles 13/14, Reglement IA) :
l'utilisateur doit etre informe de ce qui sera capture AVANT le demarrage.
"""
import tkinter as tk
from tkinter import simpledialog, messagebox
# --- Consentement prealable (Articles 13/14, Reglement IA) ---
consent_root = tk.Tk()
consent_root.withdraw()
consent_root.attributes('-topmost', True)
consent = messagebox.askyesno(
"Enregistrement — Information",
"\u26a0\ufe0f L'enregistrement va capturer votre \u00e9cran, "
"vos clics et vos frappes clavier pour apprendre cette t\u00e2che.\n\n"
"Les donn\u00e9es sensibles seront automatiquement flout\u00e9es.\n\n"
"Voulez-vous continuer ?",
parent=consent_root,
)
consent_root.destroy()
if not consent:
self._add_lea_message("Enregistrement annul\u00e9.")
return
# --- Dialogue de saisie du nom ---
tmp_root = tk.Tk()
tmp_root.withdraw()
tmp_root.attributes('-topmost', True)