Saltar a contenido

Politica de Retencion de Datos — Sherlock-docs v1.0

Sistema: Sherlock-docs v1.0 Entidad: Centro de Servicios Judiciales de Bello, Antioquia — Rama Judicial Marco normativo: Ley 1581/2012, Ley 594/2000 (Ley General de Archivos), Decreto 1377/2013, CONPES 4144 (2025), Acuerdo PCSJA24-12243 Fecha: 2026-03-19 Ultima actualizacion: 2026-04-02 Version: 2.0 (Actualizada con normativa 2025 — requiere revision juridica) Referencia interna: GOB-14 Elaborado por: Equipo de desarrollo Sherlock-docs Documentos relacionados: DATA_GOVERNANCE.md, POLITICA_TRATAMIENTO_DATOS.md, INCIDENT_RESPONSE_PLAN.md


1. Proposito y Alcance

1.1 Proposito

Esta politica define los periodos de retencion, mecanismos de limpieza automatizada y procedimientos manuales para la gestion del ciclo de vida de los datos almacenados en Sherlock-docs.

1.2 Alcance

Aplica a todos los datos gestionados por el sistema:

  • Archivos temporales de uploads (PDF, imagenes)
  • Base de datos SQLite (registros de documentos, entidades NER, duplicados)
  • Backups de base de datos
  • Logs de aplicacion
  • Cache de modelos OCR/NER

2. Clasificacion de Datos y Periodos de Retencion

2.1 Tabla de retencion

Categoria Ubicacion Retencion Mecanismo de limpieza Justificacion
Archivos de upload (PDF/imagenes) data/uploads/ 24 horas Automatico (cron) + manual (CLI purge-old) Archivos temporales de procesamiento; el texto OCR se almacena en BD
Base de datos (registros) data/database/sherlock.db Indefinida (*) N/A — datos operativos activos Registros judiciales requeridos para consulta y trazabilidad
Eventos de auditoria Tabla audit_events Indefinida (*) N/A — requeridos por normativa Trazabilidad obligatoria (Art. 9-10, PCSJA24-12243)
Estadisticas de procesamiento Tabla processing_stats Indefinida (*) N/A — metricas operativas Monitoreo de rendimiento del pipeline
Backups de BD ~/backups/sherlock/ 7 dias (local) Automatico (backup-sherlock.sh) Rotacion por espacio; backup offsite amplía a 30 dias
Logs de aplicacion data/logs/ 30 dias Rotacion automatica (RotatingFileHandler) Diagnostico tecnico, no contienen datos personales
Cache de modelos ~/.paddleocr/, ~/.cache/ Indefinida Manual (reconstruccion de imagen Docker) Modelos pre-entrenados, no datos personales

() Nota sobre retencion indefinida*: Los registros de documentos judiciales y eventos de auditoria se retienen indefinidamente mientras el sistema este en operacion. La eliminacion de registros individuales es posible via CLI (sherlock delete <id>) o GUI (pagina de administracion), y queda registrada en audit_events. La decision de implementar una politica de purgado masivo se difiere hasta que el volumen de datos lo requiera (ver §4).

2.2 Datos que NO se retienen

Dato Tratamiento Justificacion
Archivos PDF/imagen originales Eliminados tras OCR exitoso (24h max) Solo se conserva el texto extraido en BD
Credenciales en texto plano Nunca almacenadas Hashing bcrypt, sin reversibilidad
Datos de sesion Streamlit En memoria, no persisten Se pierden al reiniciar el servicio

3. Mecanismos de Limpieza

3.1 Limpieza automatizada (cron)

Script: scripts/deploy/cleanup-uploads.sh

Configuracion cron:

# Limpieza de uploads huerfanos — ejecutar despues del backup (2:30 AM)
0 3 * * * /home/sprintadmin/sherlock-deploy/cleanup-uploads.sh >> /var/log/sherlock-cleanup.log 2>&1

Comportamiento: 1. Identifica archivos en data/uploads/ con mas de 24 horas de antiguedad 2. Elimina archivos huerfanos (no procesados o de sesiones abandonadas) 3. Limpia directorios vacios resultantes 4. Registra conteo de archivos eliminados en log

Prerequisitos: - Ejecutar despues del backup diario (backup-sherlock.sh a las 2:30 AM) - Container Docker activo (el script verifica y sale sin error si no esta corriendo)

3.2 Limpieza manual (CLI)

Comando: sherlock purge-old

Uso:

# Ver archivos que se eliminarian (dry-run)
sherlock purge-old --dry-run

# Eliminar archivos de uploads con mas de 24 horas
sherlock purge-old

# Eliminar con umbral personalizado (ej: 48 horas)
sherlock purge-old --hours 48

Estado: El comando purge-old esta documentado como mecanismo manual de limpieza. Su implementacion en la CLI esta planificada como extension del sistema de comandos existente (21 comandos actuales). En el interim, la limpieza manual se puede realizar via:

# Dentro del container Docker:
find /app/data/uploads -type f -mmin +1440 -delete

3.3 Limpieza de backups

Script local: scripts/deploy/backup-sherlock.sh

  • Retencion: 7 dias de backups locales
  • Rotacion automatica: find ... -mtime +7 -delete
  • Ejecutado diariamente via cron a las 2:30 AM
  • Ubicacion: mismo VPS (/home/sprintadmin/backups/sherlock/)

Script offsite: scripts/deploy/backup-offsite.sh

  • Cifrado AES-256-CBC con PBKDF2 (100,000 iteraciones)
  • Retencion offsite: 30 dias
  • Ejecutado diariamente via cron a las 4:00 AM (despues del backup local)
  • Estado: Script preparado; requiere activacion en VPS (ver checklist en el script)
  • Prerequisitos de activacion:
  • Generar clave de cifrado (openssl rand -base64 32 > ~/.backup-key)
  • Configurar destino offsite (rclone o rsync)
  • Prueba manual de cifrado/descifrado
  • Activar cron job

CRITICO: La clave de cifrado (.backup-key) debe almacenarse en minimo 2 ubicaciones seguras fuera del VPS. Sin la clave, los backups cifrados son irrecuperables.


4. Tablas de Retencion Documental (TRD) — Decision de Aplazamiento

4.1 Contexto

Las Tablas de Retencion Documental (TRD), reguladas por la Ley 594 de 2000 (Ley General de Archivos) y el Acuerdo 004 de 2019 del Archivo General de la Nacion, son instrumentos archivisticos que definen los tiempos de retencion de series y subseries documentales en entidades publicas.

4.2 Justificacion de aplazamiento

La elaboracion formal de TRD para Sherlock-docs se aplaza por las siguientes razones:

  1. Naturaleza del sistema: Sherlock-docs es una herramienta de procesamiento y consulta, no un sistema de gestion documental (SGDOC). No reemplaza ni modifica el sistema de archivo del CSJ.

  2. Datos transitorios: Los archivos procesados (PDF/imagenes) son copias temporales. Los originales permanecen en el sistema de gestion documental del despacho judicial.

  3. Registros operativos: Los registros en BD son metadatos de procesamiento (radicados, entidades extraidas, duplicados detectados), no documentos judiciales con valor archivistico autonomo.

  4. Volumen actual: ~100 documentos/dia no justifica la complejidad de un sistema de disposicion final con TRD formales.

  5. Competencia institucional: La elaboracion de TRD corresponde a los Comites de Gestion y Desempeno institucionales con asesoria del Archivo General, no al equipo tecnico de una herramienta auxiliar.

4.3 Mitigaciones implementadas

Mitigacion Implementacion
Eliminacion automatica de temporales cleanup-uploads.sh (cron diario, >24h)
Rotacion de backups backup-sherlock.sh (7 dias local)
Rotacion de logs RotatingFileHandler (30 dias)
Eliminacion manual CLI sherlock delete <id> + GUI
Trazabilidad de eliminaciones Tabla audit_events registra cada eliminacion
Mecanismo manual de purga CLI sherlock purge-old documentado

4.4 Condicion para re-evaluar

Se debera elaborar TRD formal cuando: - El sistema se integre como componente oficial de un SGDOC institucional - Se exija TRD por parte del Archivo General de la Nacion o el CSJ - El volumen de datos supere la capacidad de almacenamiento del VPS (actualmente <80% meta) - Se implemente la API FastAPI/.NET y el sistema pase a ser multi-sede


5. Procedimientos Operativos

5.1 Verificacion de estado de almacenamiento

# Verificar espacio en disco
sherlock health

# Verificar archivos huerfanos
docker exec <container> find /app/data/uploads -type f -mmin +1440 | wc -l

# Verificar tamano de BD
docker exec <container> ls -lh /app/data/database/sherlock.db

5.2 Purgado manual de emergencia

En caso de disco lleno o emergencia de almacenamiento:

  1. Verificar estado: sherlock health
  2. Eliminar uploads huerfanos: ejecutar cleanup-uploads.sh manualmente
  3. Eliminar backups antiguos: find ~/backups/sherlock -name "*.db.gz" -mtime +3 -delete
  4. Si persiste: evaluar eliminacion de documentos obsoletos via sherlock delete-batch
  5. Documentar como incidente si afecto disponibilidad (ver INCIDENT_RESPONSE_PLAN.md)

6. Configuracion Cron Consolidada

# Sherlock-docs — Tareas programadas
# ==================================

# Backup diario de BD (2:30 AM)
30 2 * * * /home/sprintadmin/sherlock-deploy/backup-sherlock.sh >> /var/log/sherlock-backup.log 2>&1

# Limpieza de uploads huerfanos (3:00 AM — despues del backup)
0 3 * * * /home/sprintadmin/sherlock-deploy/cleanup-uploads.sh >> /var/log/sherlock-cleanup.log 2>&1

# Health check cada 5 minutos
*/5 * * * * /home/sprintadmin/sherlock-deploy/health-check-sherlock.sh >> /var/log/sherlock-health.log 2>&1

7. Historial de Versiones

Version Fecha Cambio Autor
1.0 2026-03-19 Documento inicial — operacionaliza GOB-14 Equipo de desarrollo

8. Aprobaciones

Rol Nombre Firma Fecha
Coordinador CSJ Bello _____ _ _
Oficial de Proteccion de Datos _____ _ _
Administrador de TI _____ _ _

Este documento es un borrador tecnico preparado por el equipo de desarrollo. Debe ser revisado, completado y aprobado por el area juridica del Centro de Servicios Judiciales de Bello antes de su aplicacion.

Referencias: Ley 1581 de 2012, Ley 594 de 2000, Decreto 1377 de 2013, Acuerdo PCSJA24-12243 Version: 1.0 (Borrador) — 2026-03-19