THE UNIFIED PLATFORM BIBLE — ADDENDUM 08
WebaScan · WebaForm · WebaSign · WebaDrive — Nouvelles fonctionnalités Juin–Juillet 2026
Version : 1.0
Date : 4 juillet 2026
Auteur : Alain Bessette, CFO/Product Owner, ABI Conglomerate
Domaine : GoWeBa.com
Statut : Addendum stratégique officiel — Spécification contraignante
Contraintes : ZÉRO perte de données · ZÉRO force-reset · ZÉRO interruption de service
⚠️ AVIS CRITIQUE
Cet addendum a la MÊME autorité que la Partie 1, la Partie 2 et tous les addendums précédents.
Toutes les fonctionnalités décrites sont déployées en production et sauvegardées en checkpoint.
Aucune modification de schéma incompatible n'a été effectuée.
📋 TABLE DES MATIÈRES
- Vue d'ensemble
- WebaScan — Scanner intelligent de documents
- WebaForm — Remplissage intelligent de formulaires
- WebaSign — Améliorations de la signature électronique
- WebaDrive — Nouvelles fonctionnalités de stockage
- Schéma de données — Modifications additives
- Fichiers principaux modifiés
- Chronologie des déploiements
<a id="overview"></a>
SECTION 1 : VUE D'ENSEMBLE
Cet addendum documente un ensemble massif de fonctionnalités livrées entre juin et juillet 2026, couvrant quatre modules clés de la plateforme GoWeBa :
| Module | Phases | Fonctionnalités clés |
|---|---|---|
| WebaScan | A → G | Scanner mobile, OCR, extraction structurée, liaison CRM, Ask WEBA, import fichiers universels |
| WebaForm | E, E-v2 | Bibliothèque de formulaires, auto-remplissage IA, remplissage par lots |
| WebaSign | D, F0 | Signature en personne, rebranding, nouveaux types de champs |
| WebaDrive | F2, F3, H1–H4 | Dossiers par contact, enrichissement automatique, recherche plein texte, multi-contacts |
Principes de conception
- Trilingue : Toutes les interfaces supportent le français, l'anglais et l'espagnol
- Additivité : Aucune modification destructive du schéma de données
- Intégration CRM : Les quatre modules partagent un pipeline contact unifié
- IA omniprésente : LLM (gpt-4.1) utilisé pour OCR, extraction, analyse, remplissage
<a id="webascan"></a>
SECTION 2 : WEBASCAN — SCANNER INTELLIGENT DE DOCUMENTS
WebaScan est un scanner mobile de documents intégré directement dans GoWeBa. Il transforme un téléphone ou un ordinateur en scanner intelligent capable de numériser, analyser et classer automatiquement les documents.
2.1 Phase A — Fondations du scanner
Bibliothèque de types de documents (lib/storage/document-library.ts)
~50 types de documents organisés en familles :
| Famille | Exemples |
|---|---|
| Identification | Passeport, permis de conduire, carte d'identité |
| Finance | Relevé bancaire, facture, reçu, déclaration de revenus |
| Juridique | Contrat, testament, procuration, certificat |
| Immobilier | Bail, acte de vente, inspection, évaluation |
| Santé | Ordonnance, résultat de laboratoire, carte d'assurance |
| Véhicule | Immatriculation, constat amiable, contrat de location |
| Professionnel | CV, lettre de motivation, diplôme, certificat |
| Quotidien | Garantie, reçu, menu, étiquette |
Chaque type définit :
- Noms trilingues (fr/en/es) + alias de recherche
- Icône et ratio de cadrage (portrait/paysage/carré)
- Format papier (Letter, A4, A5) avec option de sélection
- Drapeau sensible (pour les documents confidentiels)
- Recto/verso : nombre de faces, option de fusion
- Classement par défaut : dossier maître + sous-dossier proposé par WEBA
- Champs d'extraction structurés (nom, date, montant, etc.)
- Intentions d'analyse (traduire, résumer, filtrer, etc.)
Flux de numérisation : Type → Capture → Édition → Export
- Sélection du type : Grille de familles → recherche → sélection du type
- Capture : Caméra en temps réel avec cadre guide adapté au type, ou import d'image
- Édition : Recadrage (Cropper), zoom, rotation, multi-pages, recto/verso
- Export : OCR → Analyse WEBA → Extraction → Liaison CRM → Sauvegarde
Fonctionnalités de capture
- Cadre guide dynamique adapté au ratio du document (portrait, paysage, carré, carte)
- Recto/verso : fusion automatique des deux faces sur une seule page
- Sélection du format papier (Letter/A4/A5) avec pré-sélection intelligente
- Multi-pages : ajout de pages supplémentaires avec gestion individuelle
- Drapeau « document sensible » automatique selon le type
Proposition de classement WEBA
Après sélection du type, WEBA propose automatiquement le dossier de destination basé sur le defaultFiling du type de document. L'utilisateur peut accepter ou choisir un autre dossier.
2.2 Phase B — Extraction structurée + CRM + Ask WEBA
B1 — Extraction structurée des données
- Nouveau champ
extractedData Json?sur le modèleFileAsset - API
POST /api/storage/scan/extract: envoie le texte OCR + les champs d'extraction du type au LLM (gpt-4.1, température 0) - Résultat :
{fields: [{key, label, value}]}— affiché dans des champs éditables avant sauvegarde - Exemple pour un passeport : nom, prénom, date de naissance, numéro, pays de délivrance, date d'expiration
B2 — Liaison CRM (rattachement à un contact)
- Le scanner permet de rechercher un contact existant ou d'en créer un nouveau directement à partir des données extraites du document
- Le contact créé est de type LEAD, source « WebaScan », avec pré-remplissage des champs extraits (nom, email, téléphone, entreprise, poste)
- Validation côté serveur : l'ID du contact doit appartenir à l'organisation de l'utilisateur
B3 — Ask WEBA (analyse quotidienne)
- API
POST /api/storage/scan/analyze - Intentions rapides selon le type de document : traduire, allergènes, ingrédients, nutrition, filtrer, résumer, comparer, extraire
- Question libre : l'utilisateur pose une question en texte sur le document
- Réponse affichée dans le scanner avant la sauvegarde
- Utilisation facturée au portefeuille (AI_CHAT)
2.3 Phase C — WebaScan comme module sidebar
- Nouvel accès direct : WebaScan apparaît dans la barre latérale avec l'icône ScanLine
- Page dédiée
/scanavec :- Hero gradient avec sélecteur de dossier de destination + bouton « Démarrer un scan »
- 6 cartes de fonctionnalités explicatives
- Grille des scans récents (dernières 24h) avec badges (type, pages, sensible, contact CRM)
- Accès libre : module gratuit pour tous les plans (tier FREE)
- Raccourci préservé : le bouton Scan dans WebaDrive reste fonctionnel
2.4 Phase G — Import universel de fichiers
Avant : WebaScan n'acceptait que les images (photos de la caméra).
Après : WebaScan accepte tous les types de fichiers courants :
| Format | Extension |
|---|---|
| Word | .doc, .docx |
| Excel | .xls, .xlsx |
| CSV | .csv |
| Texte | .txt |
| Images | .jpg, .png, etc. |
Nouveau flux pour fichiers :
- Bouton « Importer un fichier » à l'étape Capture
- Validation : taille max 20 Mo, types MIME autorisés
- Fichier lu comme dataURL → envoyé au LLM pour analyse (pas d'OCR image)
- API
POST /api/storage/scan/process-file: extraction du texte complet + description + mots-clés - Export : le fichier original est uploadé directement sur le cloud (pas de conversion image→PDF)
- L'étape Édition est automatiquement sautée
Flux original d'images préservé : capture → édition (recadrage) → export PDF
<a id="webaform"></a>
SECTION 3 : WEBAFORM — REMPLISSAGE INTELLIGENT DE FORMULAIRES
WebaForm est un module dédié à la gestion et au remplissage automatique de formulaires professionnels. Il utilise l'intelligence artificielle pour mapper les données extraites par WebaScan sur des formulaires vierges.
3.1 Concept
- Téléverser un formulaire vierge (PDF, image) → WebaForm analyse ses champs
- Sélectionner des sources de données : documents numérisés + profils contacts
- WEBA remplit automatiquement les champs reconnus → les champs inconnus sont marqués « à compléter »
- Générer un PDF rempli, automatiquement classé dans WebaDrive
3.2 Architecture technique
Nouveaux modèles de données (additifs) :
WebaFormTemplate: formulaire vierge uploadé (cloudStoragePath, fileName, mimeType, pageCount, hasAcroForm, fields Json, status)WebaFormFill: instance de remplissage (formTemplateId, sourceFileIds, contactId, values Json, toComplete String[], outputPath, status)
Statuts de remplissage : DRAFT → NEEDS_REVIEW → COMPLETE
3.3 Détection des champs
WebaForm détecte deux types de formulaires :
| Type | Détection | Méthode de remplissage |
|---|---|---|
| AcroForm (PDF interactif) | pdf-lib getForm/getFields | Remplissage natif + aplatissement |
| Formulaire plat (image/scan) | LLM vision (base64 → gpt-4.1) | Génération d'un PDF résumé avec les données |
3.4 Sources de données
Documents numérisés
- Fichiers
FileAssetavecisScanned: trueET (ocrTextouextractedData) - L'utilisateur sélectionne un ou plusieurs documents comme sources
- Leurs données sont agrégées en texte structuré
Profils contacts (Phase F4)
- Contacts avec au moins un champ personnalisé (
ContactFieldValue) - Les champs standards du contact (nom, email, téléphone, entreprise, poste, adresse) sont combinés avec les champs personnalisés
- Labels des champs extraits avec respect de la locale (JSON trilingue
{fr, en, es})
Combinaison : l'utilisateur peut sélectionner des documents ET un profil contact simultanément. Le compteur affiche « X doc(s) + 1 contact ».
3.5 Remplissage par lots (Batch Fill — Phase E v2)
- Sélectionner un template + plusieurs sources → WEBA génère un remplissage pour chaque source
- Chaque remplissage est indépendant et éditable
- Cas d'usage : même formulaire pour 10 clients différents
3.6 API WebaForm
| Route | Méthode | Description |
|---|---|---|
/api/forms/templates | GET | Lister les templates de l'organisation |
/api/forms/templates | POST | Uploader un nouveau template (détection auto des champs) |
/api/forms/templates/[id] | GET/PATCH/DELETE | Gestion individuelle d'un template |
/api/forms/sources | GET | Lister les sources disponibles (fichiers scannés + contacts) |
/api/forms/fills | GET/POST | Lister ou créer un remplissage |
/api/forms/fills/[id] | GET/PATCH/DELETE | Gestion d'un remplissage |
/api/forms/fills/[id]/generate | POST | Générer le PDF rempli (AcroForm ou résumé) |
/api/forms/fills/[id]/download | GET | URL de téléchargement signée |
/api/forms/batches | POST | Créer un remplissage par lots |
3.7 Interface utilisateur
- Module sidebar
/forms(icône FileSpreadsheet, tier PRO) - Onglet Bibliothèque : grille des templates avec upload dialog
- Onglet Remplissages : liste des remplissages avec statut visuel
- Sélecteur de sources : section « Profil contact » (radio) + section « Documents numérisés » (checkboxes)
- Écran de revue : champs éditables, champs « à compléter » surlignés en ambre, bouton Générer PDF
- Auto-classement : le PDF généré est automatiquement sauvegardé dans WebaDrive
3.8 Dialogue de formulaire dans WebaDrive (Phase H-1)
- 4 champs dans le dialogue d'upload de WebaDrive :
- Nom du fichier
- Description
- Mots-clés
- Sélecteur de dossier de destination
- Fondation de la bibliothèque juridique GoWeBa Legal : dossier système « GoWeBa Legal » contenant les templates de formulaires courants
<a id="webasign"></a>
SECTION 4 : WEBASIGN — AMÉLIORATIONS DE LA SIGNATURE ÉLECTRONIQUE
4.1 Rebranding (Phase F0)
- E-Signature → WebaSign : renommage complet dans toute l'application
- Barre latérale : « WebaSign » au lieu de « E-Signature »
- Page de signature : en-tête « WebaSign — Plateforme de signature électronique GoWeBa »
- Certificats de preuve : branding WebaSign
- Emails de notification : branding WebaSign
- Plans & tarification : description WebaSign
- Données initiales (seed) : templates de démonstration WebaSign
- i18n : clés mises à jour en fr/en/es
4.2 Nouveaux types de champs (Phase D)
Deux nouveaux types de champs ajoutés à l'éditeur de signature et à la surface de signature :
| Type | Icône | Couleur | Comportement |
|---|---|---|---|
| Date de signature | CalendarClock | Émeraude | Auto-rempli avec la date du jour, lecture seule |
| Lieu de signature | MapPin | Rose | Champ texte libre (ville, pays) |
Ces champs s'ajoutent aux types existants : SIGNATURE, INITIALS, DATE, TEXT, CHECKBOX.
4.3 Signature en personne (Phase D)
Mode kiosque pour la signature en présentiel (réunion, accueil, événement) :
Flux
- Le créateur lance « Signer en personne » depuis le détail d'une enveloppe
- Mode plein écran : écran de présentation avec liste des signataires
- Rotation séquentielle : chaque signataire est présenté un par un
- Handoff : l'appareil est passé au signataire courant
- Le signataire signe dans un iframe sécurisé (même surface que la signature à distance)
- À la fin de la signature, retour automatique à l'écran de présentation
- Quand tous ont signé → écran de confirmation
Caractéristiques techniques
- Route
/signatures/[id]/presentavecpresent-client.tsx(plein écran) - API
POST /api/signatures/[id]/activate-in-person: active le mode en personne (SANS envoyer d'emails) - API
GET /api/signatures/[id]/in-person-status: polling léger (signataires, tokens, signataire courant, tous signés) - Suppression des emails : en mode kiosque, les emails de rotation et de notification sont supprimés (seul l'email de notification de complétion au propriétaire reste)
- Mêmes preuves légales : IP, fuseau horaire, géolocalisation, hash SHA-256, certificat PDF automatique, liaison CRM
- Schéma :
inPersonMode Boolean @default(false)surSignatureEnvelope - Event type :
IN_PERSON_STARTED
Points d'entrée
- Dropdown du menu d'actions d'une enveloppe : « Signer en personne » (icône MonitorSmartphone, bleu)
- Bouton en pied de page de la vue détaillée (conditions : fileAssetId + ≥1 champ + ≥1 signataire)
<a id="webadrive"></a>
SECTION 5 : WEBADRIVE — NOUVELLES FONCTIONNALITÉS DE STOCKAGE
5.1 Dossier WebaDrive par contact (Phase F2)
Chaque contact CRM peut maintenant avoir son propre dossier dédié dans WebaDrive.
- Création à la demande : bouton dans l'onglet « WebaDrive » du détail contact
- Structure automatique :
- Dossier parent « 📇 Contacts » (SYSTEM_MASTER, créé une seule fois)
- Sous-dossier portant le nom du contact (type CONTACT)
- 3 sous-dossiers par défaut : Documents, Scans, Correspondance (SYSTEM_DEFAULT)
- Schéma :
driveFolderId String? @uniquesur Contact + relation versStorageFolder - API :
GET/POST /api/contacts/[id]/drive-folder - UI : onglet « WebaDrive » dans le détail du contact — grille de sous-dossiers, liste de fichiers, lien « Ouvrir dans WebaDrive »
5.2 Pipeline intelligent Scan→Contact→Enrichissement (Phase F3)
Pipeline automatique déclenché après chaque scan avec liaison CRM + données extraites :
- Auto-création des définitions de champs : les clés d'extraction sont transformées en
ContactFieldDef(nom sanitisé, type deviné, catégorie déduite du type de document) - Upsert des valeurs :
ContactFieldValuecréées/mises à jour (confiance 0.75, source liée au fichier, non vérifié) - Auto-classement : le fichier scanné est déplacé dans le sous-dossier « Scans » du dossier WebaDrive du contact
- Idempotent : gestion des race conditions, upserts uniques
Helpers : sanitizeName, humanize, docTypeToCategory (30+ mappings), guessFieldType (heuristiques clé + patterns valeur → DATE/EMAIL/PHONE/CURRENCY/URL/TEXT)
5.3 Recherche plein texte dans WebaDrive (Phase H-2)
- Recherche transversale : recherche par mots-clés à travers tous les dossiers
- L'utilisateur tape ≥2 caractères → recherche serveur sur les noms de fichiers, descriptions et mots-clés
- Résultats affichés avec compteurs (fichiers + dossiers)
- API
/api/storage/searchavec filtreorganizationId
5.4 Historique enrichi des scans (Phase H-3)
- WebaScan : page d'accueil enrichie avec :
- Prévisualisation du document scanné
- Mode plein écran
- Boutons Imprimer, Télécharger, Déplacer
- Badges : type de document, nombre de pages, indicateur sensible, contact CRM rattaché
5.5 Liaison multi-contacts document↔contacts (Phase H-4)
Avant : un document ne pouvait être lié qu'à UN SEUL contact (linkedContactId String?).
Après : un document peut être lié à PLUSIEURS contacts (linkedContactIds Json? @default("[]")).
Rétrocompatibilité
- Le champ
linkedContactId(singulier) est conservé et automatiquement synchronisé avec le premier contact du tableau - Les 20+ fichiers qui référencent
linkedContactIdcontinuent de fonctionner sans modification - L'API des attachments du contact cherche via
linkedContactIdOU dans le tableaulinkedContactIds(viaarray_contains)
Modifications API
| Route | Changement |
|---|---|
POST /api/storage/files | Accepte linkedContactIds[] + rétrocompatibilité linkedContactId |
PATCH /api/storage/files/[id] | Supporte la mise à jour de linkedContactIds |
POST /api/storage/scan/export | Reçoit et valide les multi-contacts |
GET /api/contacts/[id]/attachments | Requête OR : linkedContactId ou linkedContactIds contenant l'ID |
GET /api/contacts | Nouveau paramètre ?ids=id1,id2,... pour le chargement batch |
WebaScan — Sélecteur multi-contacts
- Le sélecteur de contact unique est remplacé par un sélecteur multi-contacts
- Recherche et ajout de plusieurs contacts avec dédoublonnage
- Affichage de tous les contacts rattachés avec bouton « Retirer » individuel
- Création de contact depuis le scan → ajouté à la liste
WebaDrive — Panneau Info & contexte
- Nouvelle section « Contacts rattachés » dans le dialogue Info du fichier
- Affichage des contacts liés avec suppression individuelle
- Recherche et ajout de nouveaux contacts
- Sauvegarde avec les mots-clés et la description
<a id="schema"></a>
SECTION 6 : SCHÉMA DE DONNÉES — MODIFICATIONS ADDITIVES
Toutes les modifications suivantes sont additives — aucune suppression ou modification incompatible.
6.1 FileAsset
// Phase B — extraction structurée
extractedData Json?
// Phase H-4 — multi-contacts
linkedContactIds Json? @default("[]")
6.2 Nouveaux modèles
WebaFormTemplate {
id, organizationId, cloudStoragePath, fileName, mimeType,
pageCount, hasAcroForm, fields Json, status,
createdAt, updatedAt
}
WebaFormFill {
id, organizationId, formTemplateId, sourceFileIds String[],
contactId?, values Json, toComplete String[],
outputPath?, outputFileName?, status (DRAFT/NEEDS_REVIEW/COMPLETE),
createdAt, updatedAt
}
6.3 Contact
// Phase F1 — champs personnalisés
ContactFieldDef { name, label Json, fieldType, category, optionsJson, orderIndex, isActive, source }
ContactFieldValue { contactId, fieldDefId, value, confidence?, sourceFileAssetId?, verifiedByUser }
// Phase F2 — dossier WebaDrive
driveFolderId String? @unique
6.4 SignatureEnvelope
// Phase D — signature en personne
inPersonMode Boolean @default(false)
6.5 SignatureFieldType (enum)
// Phase D — nouveaux types
DATE_SIGNED
PLACE
<a id="fichiers"></a>
SECTION 7 : FICHIERS PRINCIPAUX MODIFIÉS
WebaScan
| Fichier | Rôle |
|---|---|
lib/storage/document-library.ts | ~50 types de documents, familles, extraction, intentions |
components/storage/weba-scanner-dialog.tsx | Interface principale du scanner (1100+ lignes) |
app/api/storage/scan/ocr/route.ts | OCR par page + contexte |
app/api/storage/scan/extract/route.ts | Extraction structurée LLM |
app/api/storage/scan/analyze/route.ts | Ask WEBA — intentions + question libre |
app/api/storage/scan/export/route.ts | Sauvegarde FileAsset + multi-contacts |
app/api/storage/scan/process-file/route.ts | Analyse de fichiers non-image |
app/(app)/scan/page.tsx | Page serveur WebaScan |
app/(app)/scan/webascan-client.tsx | Client WebaScan (hero, fonctionnalités, scans récents) |
WebaForm
| Fichier | Rôle |
|---|---|
lib/weba/form-fill.ts | Détection AcroForm, analyse LLM, mapping, remplissage, PDF |
app/api/forms/templates/route.ts | CRUD templates |
app/api/forms/fills/route.ts | CRUD remplissages |
app/api/forms/fills/[id]/generate/route.ts | Génération PDF rempli |
app/api/forms/sources/route.ts | Sources (fichiers scannés + contacts) |
app/api/forms/batches/route.ts | Remplissage par lots |
app/(app)/forms/webaform-client.tsx | Interface utilisateur WebaForm |
WebaSign
| Fichier | Rôle |
|---|---|
components/signatures/pdf-field-editor.tsx | Éditeur de champs PDF (DATE_SIGNED, PLACE) |
app/sign/[token]/signing-client.tsx | Surface de signature (nouveaux types) |
app/(app)/signatures/[id]/present/page.tsx | Page serveur présentation |
app/(app)/signatures/[id]/present/present-client.tsx | Client kiosque plein écran |
app/api/signatures/[id]/activate-in-person/route.ts | Activation mode en personne |
app/api/signatures/[id]/in-person-status/route.ts | Polling statut kiosque |
app/(app)/signatures/signatures-client.tsx | Points d'entrée « Signer en personne » |
WebaDrive
| Fichier | Rôle |
|---|---|
lib/storage/contact-folder.ts | Création dossier contact + sous-dossiers |
lib/contacts/contact-enrichment.ts | Pipeline auto-enrichissement |
app/(app)/storage/webadrive-client.tsx | Client WebaDrive (panneau info multi-contacts) |
app/api/storage/files/route.ts | POST : linkedContactIds |
app/api/storage/files/[id]/route.ts | PATCH : mise à jour multi-contacts |
app/api/contacts/[id]/attachments/route.ts | GET : requête OR multi-contacts |
app/api/contacts/[id]/drive-folder/route.ts | Dossier WebaDrive du contact |
<a id="chronologie"></a>
SECTION 8 : CHRONOLOGIE DES DÉPLOIEMENTS
| Date | Phase | Description |
|---|---|---|
| Juin 2026 | Phase A | WebaScan — Fondations, bibliothèque, capture, édition |
| Juin 2026 | Phase B | WebaScan — Extraction + CRM + Ask WEBA |
| Juin 2026 | Phase C | WebaScan — Module sidebar dédié |
| Juin 2026 | Phase D | WebaSign — Signature en personne + nouveaux champs |
| Juin 2026 | Phase E | WebaForm — Module complet (templates, auto-fill, PDF) |
| Juin 2026 | Phase E v2 | WebaForm — Remplissage par lots |
| Juin 2026 | Phase F0 | WebaSign — Rebranding E-Signature → WebaSign |
| Juin 2026 | Phase F1 | Contacts — Champs personnalisés |
| Juin 2026 | Phase F2 | WebaDrive — Dossier par contact |
| Juin 2026 | Phase F3 | Pipeline — Scan → Contact → Auto-enrichissement |
| Juin 2026 | Phase F4 | WebaForm — Profils contacts comme source |
| Juin 2026 | Phase G | WebaScan — Import universel de fichiers |
| Juillet 2026 | Phase H-1 | WebaDrive — WebaForm 4 champs + GoWeBa Legal |
| Juillet 2026 | Phase H-2 | WebaDrive — Recherche plein texte (cross-folder) |
| Juillet 2026 | Phase H-3 | WebaScan — Historique enrichi (preview, plein écran, impression) |
| Juillet 2026 | Phase H-4 | WebaDrive — Liaison multi-contacts document↔contacts |
Prochaines étapes suggérées :
- WebaVision : intégration de la vision IA avancée dans le scanner
- WebaForm : éditeur de position des champs sur formulaires plats
- WebaDrive : versionnement de fichiers
- WebaSign : workflows de signature avec approbation préalable
Document généré dans le cadre du Knowledge Center GoWeBa — goweba.com
© 2026 ABI Conglomerate. Tous droits réservés.