Web Analytics Made Easy - Statcounter
Skip to content

Architecture

Documentation technique de l'architecture de Duckling.

Aperçu

Duckling est une application web full-stack avec une séparation claire entre frontend et backend :

graph LR
    A[Browser] --> B[React Frontend]
    B --> C[Flask Backend]
    C --> D[Docling Engine]
    D --> E[(Storage)]

    style A fill:#3b82f6,color:#fff
    style B fill:#1e3a5f,color:#fff
    style C fill:#14b8a6,color:#fff
    style D fill:#8b5cf6,color:#fff
    style E fill:#f59e0b,color:#fff

Sections

  • Vue d'ensemble du système


    Architecture de haut niveau et flux de données

    Vue d'ensemble

  • Composants


    Détails des composants frontend et backend

    Composants

  • Diagrammes


    Diagrammes d'architecture et organigrammes

    Diagrammes

Décisions de conception clés

Séparation des préoccupations

  • Frontend : React avec TypeScript pour la sécurité de type et l'UI moderne
  • Backend : Flask pour la simplicité et l'accès à l'écosystème Python
  • Moteur : Docling pour la conversion de documents (bibliothèque d'IBM)

Traitement asynchrone

La conversion de documents est gérée de manière asynchrone :

  1. Le client téléverse un fichier
  2. Le serveur retourne immédiatement un ID de job
  3. Le client interroge le statut
  4. Le serveur traite dans un thread en arrière-plan
  5. Les résultats sont disponibles une fois terminés

File d'attente de jobs

Une file d'attente basée sur les threads empêche l'épuisement de la mémoire :

  • Maximum 2 conversions simultanées
  • Jobs mis en file d'attente lorsque la capacité est atteinte
  • Nettoyage automatique des jobs terminés

Persistance des paramètres

Les paramètres sont stockés par session utilisateur et appliqués par conversion :

  • Valeurs par défaut globales dans config.py
  • Paramètres utilisateur stockés dans la base de données (par ID de session)
  • Remplacements par requête via l'API

Les paramètres sont isolés par session utilisateur, garantissant que les déploiements multi-utilisateurs n'interfèrent pas avec les préférences des autres.

Pile technologique

Frontend

Technologie Objectif
React 18 Framework UI
TypeScript Sécurité de type
Tailwind CSS Styles
Framer Motion Animations
Axios Client HTTP
Vite Outil de build

Backend

Technologie Objectif
Flask Framework web
SQLAlchemy ORM de base de données
SQLite Stockage de l'historique
Docling Conversion de documents
Threading Traitement asynchrone