Posts

Showing posts from May, 2025

Sesion 6

Dia: 31/05/25 Hora de inicio: 14:04 Hora de fin: 16:04 Cantidad de horas trabajadas: 2 horas Problemas encontrados: Al reejecutar el script de inicialización en la base remota (CloudClusters), no se eliminaban algunas tablas porque faltaban sentencias DROP TABLE IF EXISTS previas, lo que provocaba errores de “objeto ya existe”. En el script Python de carga ( CargadorCatalogos ), la ruta relativa a catalogos.xml era incorrecta cuando se lanzaba desde un directorio distinto, generando FileNotFoundError . El método get_local_ip() devolvía siempre 127.0.0.1 , por lo que todos los registros de auditoría tenían la misma IP, dificultando el rastreo real de origen. Cómo fueron resueltos: DROP TABLE previos Añadí IF OBJECT_ID(...,'U') IS NOT NULL DROP TABLE ...; justo antes de cada CREATE TABLE en el script DDL, asegurando un arranque limpio en cada ejecución. Ruta de XML en Python Incorporé al inicio del script: python import os os.chdir(os.path.dirname...

Seccion 5

Dia: 30/05/25 Hora de inicio: 16:20 Hora de fin: 18:45 Cantidad de horas trabajadas: 2 horas y 25 min. Problemas encontrados: En el SP InsertarEmpleado , el mapeo de @inNombrePuesto a IdPuesto devolvía NULL cuando el nombre tenía espacios en blanco al final. El script Python 1 (Cargador de Catálogos) arrojaba UnicodeEncodeError al imprimir nombres con acentos en consola de Windows. En el script Python 2 (Simulador de Operación), el parámetro autocommit=False hacía que la transacción se quedara abierta y se saturara el pool de conexiones tras varios días de simulación. Cómo fueron resueltos: Reordenamiento de índices : Moví la sección CREATE INDEX justo después de la creación de MarcaAsistencia y MovimientoPlanilla para asegurar que existieran las tablas antes de indexarlas. Codificación UTF-8 en Python : En el print de Python 1, forcé sys.stdout.reconfigure(encoding='utf-8') al inicio del script para prevenir errores con caracteres nacionales. Auto...

Sesión 4

  Dia: 28/05/25 Hora de inicio: 10:00 Hora de fin: 13:15 Cantidad de horas trabajadas: 3 horas y 15 min. Problemas encontrados: El SP usp_ListarEmpleados mostraba FechaNacimiento en YYYYMMDD en vez de YYYY-MM-DD , lo cual rompía la capa de datos. El SP de simulación arrojaba error XQuery por “Top-level attribute nodes are not supported” en el nodo U.Usuario.value . Cómo fueron resueltos: Cambié el CAST en el SP: sql CONVERT ( VARCHAR ( 10 ), FechaNacimiento, 23 ) AS FechaNacimiento Revisé el XQuery en el SP CargarDatos , reemplacé U.Usuario.value('(@Tipo)[1]','INT') por U.Usuario.query('data(@Tipo)').value('.', 'INT') . Dudas: Si consolidar ambos SP en uno con parámetro de operación para evitar duplicación de lógica. Forma que se trabajó: Se revisó línea a línea del SP. Problemas de instalación del software: Ninguno. Problemas de aprendizaje del software: Sintaxis avanzada de XQuery en MSSQL. Invest...

Sesion 3

Dia: 26/05/25 Hora de inicio: 14:30 Hora de fin: 17:00 Cantidad de horas trabajadas: 2 horas y 30 min. Problemas encontrados: El SP ProcesarSimulacionDesdeXML fallaba con violación de FK en EmpleadoXTipoDeduccionNoObligatoria por duplicados. La tabla @tempEliminarEmpleados generaba valores nulos cuando no había empleados suficientes para eliminar. Cómo fueron resueltos: En el SP añadí un bloque IF NOT EXISTS antes de cada inserción para evitar duplicados: sql IF NOT EXISTS ( SELECT 1 FROM EmpleadoXTipoDeduccionNoObligatoria WHERE IdEmpleado = @id AND IdTipoDeduccion = @ded ) INSERT INTO EmpleadoXTipoDeduccionNoObligatoria ... En el script Python validé len(empleados) - 45 > 0 antes de crear <EliminarEmpleados> . Dudas: Si vale la pena lanzar la llamada al SP dentro de una transacción explícita en Python. Forma que se trabajó: Trabajo individual con revisiones. Problemas de instalación del software: NONE . Problemas ...

Sesion 2

Dia: 23/05/25 Hora de inicio: 09:15 Hora de fin: 11:45 Cantidad de horas trabajadas: 2 horas y 30 min. Problemas encontrados: Nunca aparecía la sección <JornadasProximaSemana> en operacion.xml , porque es_primer_jueves() devolvía siempre False . Algunas marcas de asistencia tenían HoraSalida al día siguiente y rompían el formato YYYY-MM-DD HH:MM . Cómo fueron resueltos: Corregí el cálculo de “primer jueves” usando bien el desplazamiento desde el día 1 del mes. Extendí random_time() para sumar un día cuando el turno nocturno terminaba pasada la medianoche. Dudas: Cómo ajustar PROB_NUEVOS para simular diferentes picos de contratación. Forma que se trabajó: Pair programming en Discord Problemas de instalación del software: Reinstalé con pip install python-names . Problemas de aprendizaje del software: Manejo de datetime.timedelta y replace() cruzando meses. Investigaciones: Tutorial “First Thursday of Month” en Real Python. Ejemplos en la do...

Sesion 1

Dia: 20/05/25 Hora de inicio: 12:02 Hora de fin: 14:09 Cantidad de horas trabajadas: 2 horas y 7 min. Problemas encontrados: Al generar catalogos.xml , varios elementos <TipoDeJornada> venían con atributos en desorden y el parser de SQL rechazaba el XML. La función prettify comprimía líneas, eliminando espacios necesarios para SQL Server. Cómo fueron resueltos: Reemplacé el uso de diccionarios estándar por collections.OrderedDict al crear elementos para fijar el orden de atributos. Ajusté el indentado manualmente después de minidom.parseString , añadiendo saltos de línea entre nodos. Dudas: Si conviene usar Faker en lugar de la librería names para simular datos más realistas. Forma que se trabajó: Reunión virtual (Zoom), compartiendo pantalla y revisando el script. Problemas de instalación del software: Ninguno. Problemas de aprendizaje del software: Falta de práctica con xml.dom.minidom . Investigaciones: Documentación oficial de xml.etree.Ele...