### Principios SOLID aplicados: 1. **Single Responsibility (SRP):** - Cada clase tiene una única responsabilidad clara - Ej: `PDFLoader` solo carga PDFs, `GroqLLMAdapter` maneja comunicación con LLM 2. **Open/Closed (OCP):** - Nuevos tipos de vector stores o LLMs se pueden añadir sin modificar código existente - Ej: Implementar nuevo `VectorStore` solo requiere crear nueva clase 3. **Liskov Substitution (LSP):** - Todas las implementaciones siguen contratos de interfaces (Protocols) - Ej: Cualquier `LLMClient` implementa la misma interfaz 4. **Interface Segregation (ISP):** - Interfaces pequeñas y específicas - Ej: `TextSplitter` solo tiene método `split_text` 5. **Dependency Inversion (DIP):** - Dependencias inyectadas a través de interfaces - Ej: `LegalAnalysisAgent` recibe implementaciones concretas por constructor ### Beneficios de esta arquitectura: 1. **Testabilidad:** Cada componente puede ser mockeado fácilmente 2. **Extensibilidad:** Añadir nuevos proveedores de LLM o almacenes vectoriales requiere cambios mínimos 3. **Mantenibilidad:** Las dependencias están claramente definidas 4. **Escalabilidad:** Componentes pueden ser distribuidos o reutilizados Para extender el sistema (ej: añadir ChromaDB), solo necesitarías: ```python class ChromaVectorStore(VectorStore): def __init__(self, config): # Implementación específica ``` Set-ExecutionPolicy Unrestricted -Scope Process .\venv\Scripts\Activate cd .\military_intelligence_mvp\ uvicorn app.main:app --host 0.0.0.0 --port 9000 --reload