Saltar a contenido

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 a main.
  • Umami Analytics ✅: Analytics self-hosted en analytics.sprintjudicial.com. Inyectado via inject_analytics() en app.py. Desactivable con ANALYTICS_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