Skip to content

Feat/anonimyze files#20

Open
armandliegey wants to merge 4 commits into
mainfrom
feat/anonimyze-files
Open

Feat/anonimyze files#20
armandliegey wants to merge 4 commits into
mainfrom
feat/anonimyze-files

Conversation

@armandliegey

Copy link
Copy Markdown
Contributor

Cette MR étend la protection des données sensibles aux fichiers envoyés aux fournisseurs d’IA, aussi bien depuis l’AI Workspace que directement via le proxy OpenAI/Anthropic.

Changements principaux

  • Ajout d’un sidecar local Presidio pour extraire, anonymiser puis reconstruire les fichiers :
    • PDF ;
    • DOCX ;
    • XLS/XLSX ;
    • CSV/TXT ;
    • images avec OCR.
  • Remplacement des données sensibles textuelles par les mêmes pseudonymes persistants que ceux utilisés dans les prompts.
  • Masquage irréversible des données détectées par OCR dans les images et les PDF scannés.
  • Anonymisation des fichiers inline et des uploads multipart vers /v1/files.
  • Persistance des identifiants de fichiers déjà anonymisés afin de sécuriser leur réutilisation.
  • Gestion configurable des échecs avec les politiques remove, reject et passthrough.
  • Exécution en parallèle de l’analyse NER des prompts et du traitement des fichiers pour limiter la latence.

AI Workspace

  • Ajout de pièces jointes par sélection ou glisser-déposer.
  • Prise en charge des PDF, documents Office, fichiers texte, CSV et images.
  • Prévisualisation du fichier sélectionné et possibilité de le retirer avant l’envoi.
  • Conservation sécurisée des pièces jointes anonymisées dans les conversations.
  • Envoi natif des fichiers lorsque le fournisseur le permet, avec fallback textuel dans les autres cas.
  • Affichage d’un avertissement lorsqu’un fichier est retiré ou non conservé après un échec d’anonymisation.
  • Correction du rendu Markdown des tableaux/listes imbriqués dans des tableaux JavaScript.

Proxy et observabilité

  • Augmentation de la taille maximale des requêtes à 50 MiB.
  • Ajout de mesures détaillées sur les différentes étapes :
    • anonymisation de la requête ;
    • analyse NER ;
    • traitement Presidio ;
    • appel au fournisseur ;
    • traitement de la réponse.
  • Suppression de la journalisation brute du contenu des requêtes afin de ne pas exposer de données sensibles.
  • Ajout du support des uploads de fichiers OpenAI et Anthropic.

Configuration

Ajout des variables suivantes :

KLOVIS_PRESIDIO_MODE=full
KLOVIS_PRESIDIO_URL=http://presidio:8092
KLOVIS_PRESIDIO_TIMEOUT=60s
KLOVIS_PRESIDIO_MAX_FILE_BYTES=52428800
KLOVIS_PRESIDIO_FAILURE_POLICY=remove
KLOVIS_PRESIDIO_OCR_LANG=eng+fra

Le sidecar Presidio est intégré à Docker Compose ainsi qu’au script de démarrage local.

Tests

  • Couverture du client d’anonymisation de fichiers.
  • Tests des pièces jointes et de leur persistance dans l’AI Workspace.
  • Tests des fichiers inline et des uploads multipart OpenAI/Anthropic.
  • Vérification des différentes politiques d’échec.
  • Vérification de l’exécution parallèle entre NER et anonymisation des fichiers.
  • Vérification de la restauration des réponses et de la conservation de l’ordre des contenus.

…ation

Introduce a Presidio-based file anonymization pipeline alongside the existing
text anonymization flow.

- add a new Presidio sidecar with Docker, compose, Python server, and runtime dependencies
- anonymize supported PDF, image, DOCX, XLSX, and XLS attachments before forwarding them upstream
- intercept OpenAI and Anthropic /v1/files uploads and track trusted anonymized file IDs
- wire Presidio configuration into the Go runtime, proxy, and file anonymizer client
- expose Presidio environment variables in .env.example, Docker, README, npm start flow, and dev scripts
- add npm tests covering Presidio start-mode handling
…vability

Prepare text and inline file anonymization concurrently for OpenAI and
Anthropic requests while preserving placeholder ordering and file policies.

Add startup readiness checks for GLiNER and Presidio, migrate internal HTTP
calls to Resty, and introduce structured timing logs across anonymization,
upstream API calls, response processing, and deanonymization.

Enable proxy debug file logging in Docker Compose and cover request
preparation, inline media handling, failure policies, and concurrency with
dedicated tests.
Accept multipart completion requests, enforce upload size limits, anonymize attachments before provider submission, and persist reusable files with conversation history.

Support native document payloads and text fallbacks across providers, apply configured failure policies, and add CSV and TXT processing to the Presidio sidecar.

Allow users to attach PDF, Office, image, CSV, and TXT files through the file picker or by dropping them anywhere in the chat.

Display attachment metadata and anonymization warnings, restore failed uploads, add localized feedback, and improve connected-provider credential placeholders.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants