Objetivo del Proyecto
Desarrollar un motor de búsqueda avanzado para la Sala Colegiada de Osinergmin, diseñado para agilizar la localización de expedientes y resoluciones legales históricas (2015-2022). La herramienta permite a los analistas cruzar información de manera estructurada a través de múltiples campos clave (Concesionaria, Materia, Sumilla, Antecedentes, Análisis y Resolución), optimizando drásticamente los tiempos de investigación jurisprudencial.
Arquitectura Serverless y WebAssembly
La aplicación fue construida bajo un paradigma Serverless ejecutado íntegramente en el navegador del cliente para asegurar alta disponibilidad y nulos costos de hosting:
- Ejecución Nativa en Navegador: Desarrollado en Python y renderizado con Streamlit, el código fue compilado y empaquetado usando stlite (WebAssembly). Esto permite que el backend de Python corra directamente en el navegador del usuario sin necesidad de servidores intermedios.
- Ingesta Distribuida de Datos: Se integró un sistema de lectura paralela de múltiples bases de datos fragmentadas alojadas en Google Sheets (
pd.read_excel), fusionándolas en caché dinámico (st.cache_data) para respuestas inmediatas tras la carga inicial. - Motor Lógico de Búsqueda: Implementación de algoritmos de procesamiento de texto con Expresiones Regulares (
re.findall). Soporta operadores lógicos implícitos, exclusión de términos (prefijo "-") y búsqueda exacta por campos.
Experiencia de Usuario y Visualización
La plataforma ofrece un entorno seguro, limpio y enfocado en la productividad legal:
Autenticación Segura
Sistema de login con validación de credenciales en sesión (Session State) para proteger la confidencialidad de las resoluciones internas.
Visualizador de Documentos
Integración de iframes directos hacia el repositorio en Google Drive, permitiendo leer expedientes en PDF sin salir del aplicativo.
Feedback en Tiempo Real
Uso intensivo de barras de progreso, alertas flotantes (st.toast) y animaciones de finalización para informar al usuario sobre el estado del escaneo de miles de registros.
Tabla Dinámica de Resultados
Renderizado de DataFrames responsivos ocultando metadatos innecesarios y enfocando la vista en el N° de Expediente, Concesionaria, Materia y Sumilla.