Diagrama de Contexto del Sistema - Sherlock-docs¶
Descripción¶
Diagrama de contexto C4 que muestra a Sherlock-docs como sistema principal y sus interacciones con actores externos (usuarios, sistemas externos) y recursos.
Este diagrama proporciona una vista de alto nivel del sistema y su entorno operativo.
Diagrama¶
graph TB
subgraph Usuarios["👥 USUARIOS"]
Usuario["<b>Operador Legal</b><br/>Procesa documentos legales<br/>(tutelas, habeas corpus)"]
Admin["<b>Administrador</b><br/>Configura sistema<br/>Revisa métricas"]
end
subgraph Sistema["🔍 SISTEMA PRINCIPAL"]
Sherlock["<b>Sherlock-docs</b><br/>━━━━━━━━━━━━━━━━<br/>Sistema automático de procesamiento<br/>de documentos legales<br/>Detección de duplicados<br/>Validación de entidades"]
end
subgraph Infraestructura["📦 INFRAESTRUCTURA Y ALMACENAMIENTO"]
FS["<b>Sistema de Archivos</b><br/>━━━━━━━━━━━━━━━━<br/>Almacenamiento local<br/>de PDFs"]
DB["<b>SQLite Database</b><br/>━━━━━━━━━━━━━━━━<br/>Persistencia de documentos<br/>Metadatos procesados<br/>Full Text Search FTS5"]
end
subgraph Despliegue["🚀 DESPLIEGUE"]
Docker["<b>Docker</b><br/>━━━━━━━━━━━━━━━━<br/>ghcr.io/hammerdev99/<br/>sherlock-docs:latest<br/>VPS Hostinger Ubuntu 24.04"]
Umami["<b>Umami Analytics</b><br/>━━━━━━━━━━━━━━━━<br/>Self-hosted<br/>analytics.sprintjudicial.com<br/>inject_analytics() en app.py"]
end
subgraph PostMVP["📅 POST-MVP"]
Redis["<b>Redis Cache</b><br/><i>(No implementado)</i><br/>━━━━━━━━━━━━━━━━<br/>Caché de vectores TF-IDF<br/>Índices LSH MinHash<br/>Búsqueda rápida"]
end
Usuario -->|<b>GUI Streamlit</b><br/>Carga documentos<br/>Valida entidades extraídas| Sherlock
Usuario -->|<b>CLI</b><br/>Procesamiento batch<br/>21 comandos| Sherlock
Admin -->|<b>GUI Streamlit</b><br/>Configura umbrales<br/>Revisa logs| Sherlock
Sherlock -->|<b>File I/O</b><br/>Lee PDFs para<br/>procesamiento| FS
Sherlock -->|<b>SQLite + FTS5</b><br/>Guarda/consulta<br/>documentos procesados| DB
Sherlock -->|<b>Docker Deploy</b><br/>Imagen GHCR<br/>Auto-deploy en push| Docker
Sherlock -.->|<b>Analytics</b><br/>Métricas de uso<br/>Desactivable| Umami
style Usuario fill:#e1f5ff,stroke:#01579b,stroke-width:2px,color:#000
style Admin fill:#e1f5ff,stroke:#01579b,stroke-width:2px,color:#000
style Sherlock fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#000
style FS fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#000
style DB fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#000
style Docker fill:#e3f2fd,stroke:#0d47a1,stroke-width:2px,color:#000
style Umami fill:#e3f2fd,stroke:#0d47a1,stroke-width:2px,color:#000
style Redis fill:#fce4ec,stroke:#b71c1c,stroke-width:1px,color:#666
style Usuarios fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
style Sistema fill:#fff8e1,stroke:#f57f17,stroke-width:2px
style Infraestructura fill:#ede7f6,stroke:#311b92,stroke-width:2px
style Despliegue fill:#e3f2fd,stroke:#0d47a1,stroke-width:2px
style PostMVP fill:#fce4ec,stroke:#b71c1c,stroke-width:1px
Actores Principales¶
Usuarios¶
- Operador Legal: Usuario principal que carga documentos PDF, valida entidades extraídas (demandante, demandado, radicado) y revisa alertas de duplicados.
- Administrador: Configura parámetros del sistema (umbrales de detección, modelos OCR/NER), revisa métricas de rendimiento.
Sistemas Externos¶
- Sistema de Archivos Local: Almacenamiento de documentos PDF cargados (directorio
data/uploads/). - SQLite Database: Base de datos local con soporte FTS5 para búsqueda full-text de documentos procesados.
Despliegue¶
- Docker ✅: Imagen
ghcr.io/hammerdev99/sherlock-docs:latest, desplegada en VPS Hostinger (Ubuntu 24.04, 2 vCPU, 7.8 GB RAM). Auto-deploy en push amain. - Umami Analytics ✅: Analytics self-hosted en
analytics.sprintjudicial.com. Inyectado viainject_analytics()enapp.py. Desactivable conANALYTICS_ENABLED=0.
Post-MVP (No implementado)¶
- Redis Cache 📅: Caché de vectores TF-IDF y estructuras LSH para optimizar detección de duplicados. Actualmente el caché es en memoria (pickle con HMAC).
Restricciones Clave¶
- 100% Local: Sin dependencias cloud ni APIs externas.
- Offline-First: Debe funcionar sin conectividad a internet.
- Performance: Procesamiento <2 minutos para documentos de 20 páginas.
- Volumen: ~100 documentos/día.
Leyenda de Estados¶
| Símbolo | Significado |
|---|---|
| ✅ | Implementado y funcional |
| ⏳ | Planificado para fase futura |
Última actualización: 2026-03-06