title: "Addendum 19 — WebaScan & WebaDrive : Correctifs & Améliorations" date: "2026-09-01" author: "Équipe Plateforme GoWeBa" tags: ["webascan", "webadrive", "extraction", "webaform", "pdf", "correctifs"]
Addendum 19 — WebaScan & WebaDrive : Correctifs & Améliorations
Vue d'ensemble
Suite à un audit approfondi de WebaScan et WebaDrive, 8 anomalies ont été identifiées et corrigées à travers 8 Work Packages regroupés en 5 livraisons. Ces correctifs améliorent la fiabilité de l'extraction batch, l'assignation de rôles dans les formulaires, l'affichage des statistiques de dossiers, et la gestion des données consolidées.
WP-1 — Extraction Batch Progressive ⚡
Problème : L'extraction de documents en lot échouait systématiquement par timeout HTTP (>60s pour des projets volumineux).
Solution : Architecture « fire-and-forget » avec suivi asynchrone :
- Le POST
/api/storage/projects/aggregated-data/extractretourne immédiatement unjobId - Le client interroge périodiquement GET
/api/storage/projects/aggregated-data/extract-status?jobId=... - Barre de progression en temps réel avec % et compteur de fichiers
- Résumé final : fichiers traités vs erreurs
Fichiers : extract/route.ts, extract-status/route.ts, extraction-jobs.ts, aggregated-data-export.tsx
WP-2 — Assistant de remplissage avec rôles 👥
Problème : Le dialogue « Remplir un formulaire » ne permettait pas d'indiquer qui joue quel rôle (acheteur, vendeur, notaire, etc.), forçant l'utilisateur à corriger manuellement chaque champ.
Solution : Dialogue en 2 étapes :
- Étape 1 — Sélection du modèle de formulaire (bibliothèque privée + publique)
- Étape 2 — Assignation des rôles (10 rôles courants : acheteur, vendeur, notaire, prêteur, caution, témoins 1-2, fiduciaire, bénéficiaire, représentant)
- Labels trilingues (fr/en/es) avec icônes emoji
- L'IA reçoit le contexte des rôles et place automatiquement les bonnes personnes dans les bons champs
- Option « Ignorer les rôles » pour un remplissage sans contexte de parties
Fichiers : fill-project-form-dialog.tsx, app/api/forms/fills/route.ts
WP-3 — Compteurs de dossiers 📊
Problème : Le panneau de complétion affichait le nombre d'éléments dans la checklist au lieu du vrai nombre de fichiers.
Solution : Double affichage distinct :
- Fichiers : nombre réel de fichiers dans le dossier
- Sous-dossiers : nombre réel de sous-dossiers
- Icônes visuelles différenciées (File vs FolderOpen)
Fichiers : folder-completion-panel.tsx, webadrive-client.tsx
WP-4 — Données consolidées repliables 📋
Problème : Le tableau inline des données consolidées occupait tout l'écran, rendant la navigation difficile.
Solution : Tableau repliable avec toggle :
- Bouton « Afficher/Masquer les données » avec compteur de champs
- ChevronDown/ChevronUp animé
- Tableau masqué par défaut pour un affichage plus propre
Fichiers : aggregated-data-export.tsx
WP-5 — Master PDF amélioré 📄
Problème : Le PDF maître affichait « (No consolidated field) » quand un champ n'avait pas de valeur.
Solution : Message utilisateur convivial :
- Texte explicatif en italique indiquant que la valeur sera disponible après la prochaine extraction
- Adapté à la langue du projet (fr/en/es)
Fichiers : pdf-master/route.ts
WP-6 — Kit « Autre / Custom » 🧰
Problème : Aucun kit générique n'était disponible pour les projets qui ne correspondent pas aux kits spécialisés.
Solution : Ajout du kit custom-generic au catalogue :
- Nom trilingue : « Autre / Custom / Otro »
- Catégorie « Universel » avec champs génériques (parties, montant, dates, adresse, description, notes)
- Disponible pour toutes les organisations
Fichiers : webaject-templates.ts
WP-7 — Bouton Re-Analyze unitaire 🔄
Problème : Impossible de relancer l'extraction d'un seul fichier ayant échoué (statut « EXtrc ❌ »).
Solution :
- Bouton « Re-Extract » affiché à côté de chaque fichier en erreur
- Appel POST
/api/storage/projects/aggregated-data/extract-single - Spinner de chargement pendant le traitement
- Toast de confirmation ou d'erreur
Fichiers : extract-single/route.ts, webadrive-client.tsx
WP-8 — Résolution de conflits côte-à-côte ⚖️
Problème : Quand plusieurs documents contenaient des valeurs différentes pour le même champ, aucun mécanisme de résolution n'était proposé.
Solution complète :
- Bannière de synthèse en haut du tableau : nombre de conflits détectés ou confirmation « tous résolus »
- Badge ⚠ N variantes sur chaque champ en conflit — clic pour déplier
- Panneau côte-à-côte (grille responsive 2-3 colonnes) affichant chaque valeur variante avec :
- Le document source (nom + numéro)
- La valeur elle-même
- Un bouton « Choisir » ou « Confirmer » (si c'est la valeur actuelle)
- Sauvegarde immédiate : la valeur choisie remplace la valeur consensus dans
projectData.aggregatedData - Badge ✓ Résolu avec icône verte après résolution
- Responsabilité utilisateur : l'IA extrait et croise, l'humain tranche en cas de doute
Endpoint : POST /api/storage/projects/aggregated-data/resolve-conflict
- Body :
{ folderId, fieldKey, chosenValue } - Valide que la valeur choisie fait partie des variantes connues
- Enregistre
resolvedBy(userId) etresolvedAtpour traçabilité
Fichiers : consolidated-data-viewer.tsx, resolve-conflict/route.ts
Résumé technique
| WP | Description | Statut |
|---|---|---|
| WP-1 | Extraction batch progressive | ✅ |
| WP-2 | Wizard Fill Form + rôles | ✅ |
| WP-3 | Compteurs de dossiers | ✅ |
| WP-4 | Données repliables | ✅ |
| WP-5 | Master PDF amélioré | ✅ |
| WP-6 | Kit Custom générique | ✅ |
| WP-7 | Re-Analyze unitaire | ✅ |
| WP-8 | Résolution de conflits côte-à-côte | ✅ |
Commits : d6b672d (WP-1/3/4/5/6/7), 28a21d0 (WP-2), c70412e (WP-8)