4NK_IA_front/docs/ARCHITECTURE.md
Nicolas Cantu afb58ef4b1 docs: update complete documentation
- Update README.md with comprehensive project documentation
- Update CHANGELOG.md with detailed version 0.1.0 features
- Add ARCHITECTURE.md with technical architecture details
- Add API.md with complete API documentation
- Add DEPLOYMENT.md with deployment guides and configurations
- Add TESTING.md with testing strategies and examples
- Fix markdownlint issues across all documentation files
- Ensure all documentation follows markdown best practices
2025-09-10 18:47:09 +02:00

8.2 KiB

Architecture de l'application 4NK IA Front Notarial

Vue d'ensemble

L'application 4NK IA Front Notarial est une interface web moderne construite avec React et TypeScript, conçue pour l'analyse intelligente de documents notariaux.

Stack technique

Frontend

  • React 18 : Framework UI avec hooks et composants fonctionnels
  • TypeScript 5.6 : Typage statique pour la robustesse du code
  • Vite 7 : Build tool rapide avec HMR (Hot Module Replacement)
  • Material-UI v6 : Bibliothèque de composants UI professionnels

Gestion d'état

  • Redux Toolkit : Gestion d'état centralisée et prévisible
  • React Redux : Liaison React-Redux avec hooks
  • Async Thunks : Gestion des actions asynchrones

Routing et navigation

  • React Router v6 : Navigation côté client avec code splitting
  • Lazy loading : Chargement à la demande des composants

HTTP et API

  • Axios : Client HTTP avec intercepteurs
  • Intercepteurs : Gestion centralisée des erreurs et authentification

Tests

  • Vitest : Framework de test rapide et moderne
  • Testing Library : Tests d'intégration React
  • JSDOM : Environnement DOM simulé
  • Coverage V8 : Rapport de couverture de code

Qualité de code

  • ESLint : Linting avec règles strictes
  • Prettier : Formatage automatique du code
  • markdownlint : Validation des fichiers Markdown

Structure du projet

src/
├── components/          # Composants réutilisables
│   ├── Layout.tsx      # Layout principal avec AppBar et navigation
│   └── NavigationTabs.tsx # Composant de navigation par onglets
├── views/              # Vues principales de l'application
│   ├── UploadView.tsx  # Upload et gestion des documents
│   ├── ExtractionView.tsx # Affichage des données extraites
│   ├── AnalyseView.tsx # Analyse et score de vraisemblance
│   ├── ContexteView.tsx # Données contextuelles externes
│   └── ConseilView.tsx # Conseil IA et recommandations
├── store/              # Gestion d'état Redux
│   ├── index.ts        # Configuration du store Redux
│   ├── appSlice.ts     # État global de l'application
│   └── documentSlice.ts # État des documents et opérations
├── services/           # Services et API
│   └── api.ts          # Client API et endpoints
├── types/              # Types et interfaces TypeScript
│   └── index.ts        # Définitions de types centralisées
├── main.tsx           # Point d'entrée de l'application
└── App.tsx            # Composant racine avec routing

Architecture des composants

Layout et navigation

  • Layout : Composant wrapper avec AppBar et navigation
  • NavigationTabs : Navigation par onglets avec React Router
  • AppBar : Barre de navigation principale

Vues principales

UploadView

  • Dropzone : Zone de glisser-déposer pour les fichiers
  • FileList : Liste des documents uploadés
  • Status indicators : Indicateurs de statut des documents

ExtractionView

  • DataDisplay : Affichage des données extraites
  • ObjectLists : Listes d'identités, adresses, biens, contrats
  • Confidence scores : Scores de confiance des extractions

AnalyseView

  • CredibilityScore : Score de vraisemblance du document
  • Recommendations : Liste des recommandations
  • Summary : Synthèse de l'analyse

ContexteView

  • ExternalData : Données des APIs externes
  • StatusCards : Cartes de statut pour chaque source
  • LastUpdated : Horodatage des dernières mises à jour

ConseilView

  • LLMAnalysis : Analyse générée par l'IA
  • RiskAssessment : Évaluation des risques
  • NextSteps : Prochaines étapes recommandées

Gestion d'état Redux

Structure du store

interface RootState {
  app: AppState        // État global de l'application
  document: DocumentState // État des documents et opérations
}

AppState

  • status : État global ('idle' | 'loading' | 'succeeded' | 'failed')
  • error : Messages d'erreur globaux

DocumentState

  • documents : Liste des documents uploadés
  • currentDocument : Document actuellement sélectionné
  • extractionResult : Résultats d'extraction
  • analysisResult : Résultats d'analyse
  • contextResult : Données contextuelles
  • conseilResult : Conseil IA
  • loading : État de chargement
  • error : Messages d'erreur

Actions asynchrones

  • uploadDocument : Upload d'un document
  • extractDocument : Extraction des données
  • analyzeDocument : Analyse du document
  • getContextData : Récupération des données contextuelles
  • getConseil : Génération du conseil IA

Services API

Configuration Axios

  • Base URL : Configuration via variables d'environnement
  • Timeout : 60 secondes pour les opérations longues
  • Intercepteurs : Gestion d'erreur et fallback automatique

Endpoints

  • POST /api/documents/upload : Upload de document
  • GET /api/documents/{id}/extract : Extraction de données
  • GET /api/documents/{id}/analyze : Analyse du document
  • GET /api/documents/{id}/context : Données contextuelles
  • GET /api/documents/{id}/conseil : Conseil IA

Gestion d'erreur

  • Intercepteurs : Détection automatique des erreurs
  • Fallback : Données de démonstration en cas d'erreur
  • Codes gérés : 404, 405, ERR_NETWORK, ERR_CONNECTION_REFUSED

Types et interfaces

Document

interface Document {
  id: string
  name: string
  type: string
  size: number
  uploadDate: Date
  status: 'uploading' | 'processing' | 'completed' | 'error'
}

ExtractionResult

interface ExtractionResult {
  documentId: string
  text: string
  language: string
  documentType: string
  identities: Identity[]
  addresses: Address[]
  properties: Property[]
  contracts: Contract[]
  signatures: string[]
  confidence: number
}

AnalysisResult

interface AnalysisResult {
  documentId: string
  documentType: string
  isCNI: boolean
  credibilityScore: number
  summary: string
  recommendations: string[]
}

Mode démonstration

Fonctionnement

  • Détection automatique : Vérification de la disponibilité du backend
  • Fallback gracieux : Basculement vers des données de démonstration
  • Données réalistes : Exemples d'actes notariaux authentiques
  • Fonctionnalités complètes : Toutes les vues opérationnelles

Données de démonstration

  • Documents : Exemples d'actes de vente, CNI, etc.
  • Identités : Personnes avec informations complètes
  • Adresses : Adresses françaises réalistes
  • Biens : Propriétés avec références cadastrales
  • Contrats : Clauses et montants réalistes

Performance et optimisation

Code splitting

  • Lazy loading : Chargement à la demande des vues
  • Suspense : Gestion des états de chargement
  • Bundle optimization : Optimisation de la taille des bundles

Caching

  • Redux state : Mise en cache des données dans le store
  • API responses : Cache des réponses API
  • Component memoization : Optimisation des re-renders

Build optimization

  • Vite : Build rapide avec optimisations automatiques
  • Tree shaking : Élimination du code mort
  • Minification : Compression du code de production

Sécurité

Validation

  • TypeScript : Validation de types à la compilation
  • Runtime validation : Validation des données API
  • Input sanitization : Nettoyage des entrées utilisateur

CORS et CSP

  • CORS : Configuration des en-têtes Cross-Origin
  • CSP : Content Security Policy pour la sécurité
  • HTTPS : Communication sécurisée en production

Déploiement

Environnements

  • Développement : Serveur local avec HMR
  • Staging : Environnement de test
  • Production : Déploiement optimisé

Variables d'environnement

  • VITE_API_URL : URL de l'API backend
  • VITE_*_API_URL : URLs des APIs externes
  • NODE_ENV : Environnement d'exécution

Build de production

  • Optimisation : Minification et compression
  • Assets : Optimisation des images et CSS
  • Bundle analysis : Analyse de la taille des bundles