Arquitectura del Sistema
ThesisForge está diseñado bajo principios de software para ingeniería de producción, con separación estricta de responsabilidades, tipado estático riguroso y concurrencia asíncrona no bloqueante.
Patrón Arquitectónico en 4 Capas
flowchart TD
subgraph CapaPresentacion [1. Capa de Presentación & CLI]
GUI[Desktop GUI - PyWebView]
WEB[Web Client - SPA Tailwind]
CLI[CLI - rich & argparse]
end
subgraph CapaAPI [2. Capa API, WebSockets y Routers]
ROUTERS[FastAPI Routers - Pydantic DTOs]
WS[WebSocket Hub - Drafting & Defense]
end
subgraph CapaServicios [3. Servicios y Lógica de Dominio]
ADV[AdvisorService]
RAG[RAGService]
DRAFT[DraftService]
EXP[ExportService]
JURY[JuryService - MultiAgentJuryEngine & DefenseSimulator]
ROUTER[LLMRouter]
end
subgraph CapaPersistencia [4. Persistencia y Seguridad]
DB[(Async SQLite - aiosqlite WAL)]
CHROMA[(ChromaDB Vector Store)]
VAULT[KeyVault - Fernet 256-bit]
SSRF[SSRFGuard]
LOG[StructuredLogger]
end
GUI --> ROUTERS
WEB --> ROUTERS
CLI --> ROUTERS
ROUTERS --> ADV
ROUTERS --> RAG
ROUTERS --> DRAFT
ROUTERS --> EXP
ROUTERS --> JURY
WS --> DRAFT
WS --> JURY
ADV --> ROUTER
DRAFT --> ROUTER
JURY --> ROUTER
ADV --> DB
RAG --> DB
DRAFT --> DB
JURY --> DB
RAG --> CHROMA
ROUTER --> VAULT
RAG --> SSRF
ROUTERS --> LOG
Principios de Diseño
- Cero Bloqueo de Event Loop: Todas las operaciones de red (
httpx.AsyncClient), bases de datos (aiosqlite) y archivos (aiofiles) son estrictamente no bloqueantes. - Tipado Estático Riguroso: Verificación con
mypy --stricten todo el paquetesrc/thesisforge. - Manejo Estructurado de Errores: Jerarquía de excepciones de dominio tipadas (
ThesisForgeError,MethodologyValidationError,JuryEvaluationError,DefenseSessionError,SecurityError, etc.) con códigos de error legibles por máquinas. - Fechas UTC: Manejo exclusivo de fechas y horas conscientes de zona horaria (
datetime.now(timezone.utc)). - Auditoría Científica Híbrida: Combinación de validación determinista de consistencia epistemológica (reglas duras) con deliberación cualitativa distribuida en tribunal multi-agente.