Arquitectura
Documentaci贸n t茅cnica de la arquitectura de Duckling.
Visi贸n General
Duckling es una aplicaci贸n web full-stack con una clara separaci贸n entre frontend y backend:
graph LR
A[Navegador] --> B[Frontend React]
B --> C[Backend Flask]
C --> D[Motor Docling]
D --> E[(Almacenamiento)]
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 Secciones
-
Vista General del Sistema
Arquitectura de alto nivel y flujo de datos
-
Componentes
Detalles de componentes frontend y backend
-
Diagramas
Diagramas de arquitectura y diagramas de flujo
Decisiones de Dise帽o Clave
Separaci贸n de Responsabilidades
- Frontend: React con TypeScript para seguridad de tipos e interfaz moderna
- Backend: Flask por simplicidad y acceso al ecosistema Python
- Motor: Docling para conversi贸n de documentos (biblioteca de IBM)
Procesamiento As铆ncrono
La conversi贸n de documentos se maneja de forma as铆ncrona:
- El cliente sube el archivo
- El servidor devuelve un ID de trabajo inmediatamente
- El cliente consulta el estado
- El servidor procesa en un hilo en segundo plano
- Los resultados est谩n disponibles cuando se completa
Cola de Trabajos
Una cola de trabajos basada en hilos previene el agotamiento de memoria:
- M谩ximo 2 conversiones simult谩neas
- Los trabajos se ponen en cola cuando se alcanza la capacidad
- Limpieza autom谩tica de trabajos completados
Persistencia de Configuraci贸n
Los ajustes se almacenan por sesi贸n de usuario y se aplican por conversi贸n:
- Valores predeterminados globales en
config.py - Configuraci贸n de usuario almacenada en la base de datos (por ID de sesi贸n)
- Anulaciones por solicitud a trav茅s de la API
Los ajustes est谩n aislados por sesi贸n de usuario, garantizando que los despliegues multi-usuario no interfieran con las preferencias de otros.
Stack Tecnol贸gico
Frontend
| Tecnolog铆a | Prop贸sito |
|---|---|
| React 18 | Framework de UI |
| TypeScript | Seguridad de tipos |
| Tailwind CSS | Estilos |
| Framer Motion | Animaciones |
| Axios | Cliente HTTP |
| Vite | Herramienta de construcci贸n |
Backend
| Tecnolog铆a | Prop贸sito |
|---|---|
| Flask | Framework web |
| SQLAlchemy | ORM de base de datos |
| SQLite | Almacenamiento de historial |
| Docling | Conversi贸n de documentos |
| Threading | Procesamiento as铆ncrono |