Volver al inicio
Performance OptimizationProduction Ready (95%)

Reingeniería SICOSS: El Motor de Nóminas

Migración masiva de un sistema PHP legacy a un backend especializado en Python. Una arquitectura de 47,500+ líneas de código diseñada para procesar liquidaciones de misión crítica con un rendimiento 20x superior.

Métricas de Ingeniería (Post-Auditoría)

Impacto en Performance
20x Fast

0.5s vs 10s (Legacy)

Escala del Sistema
47.5k+ LOC

66+ archivos Python

Rigor Técnico
86% Cov

Suite de Tests Automática

Anatomía del Problema (Legacy)

La auditoría inicial reveló patrones de código que impedían el escalamiento del sistema original:

SQL Correlacionado

Subconsultas redundantes por cada fila procesada.

SELECT payroll.id,
  (SELECT ARRAY( 
    SELECT DISTINCT group_id 
    FROM generic_groups_table 
    WHERE group_id IN (...)
  )) AS category_groups
FROM payroll_registry;

Problema N+1 en PHP

Consultas a base de datos dentro de ciclos masivos.

foreach ($employees as $emp) {
    // Alarma técnica: I/O en bucle
    $details = $db->query(
        "SELECT * FROM details..."
    );
    $this->process($details);
}

Arquitectura del Sistema

El sistema no es solo un script; es una plataforma modular basada en Capas (Layered Architecture) y orquestada por componentes especializados:

💻 Laravel PHP Frontend

FastAPI Gateway

Capa de comunicación REST. Manejo de autenticación, validación de schemas con Pydantic y Swagger UI.

SICOSS Backend Core

Pipeline de procesamiento vectorial con Pandas. Orquestación de lógicas fiscales y aplicación de topes complejos.

Extraction Layer

Batch queries optimizadas que eliminan el problema N+1.

Persistence Layer

Inserción masiva ACID en esquema segregado.

🗄️ PostgreSQL Database

Desafíos Técnicos Superados

1. Reemplazo del Bucle N+1

El sistema PHP legacy consultaba la base de datos por cada legajo. Migré esto a un Extractor Manager que utiliza Common Table Expressions (CTEs) para traer un set de datos enriquecido en una sola pasada de memoria.

2. Validaciones de Dominio Complejas

Implementé Value Objects como PeriodoFiscal para encapsular la lógica de validación inmutable, asegurando que ninguna fecha o periodo inválido entre al pipeline de cálculo.

3. Verificador vs Legacy

Para garantizar la seguridad del despliegue, desarrollé un SicossVerifier. Un componente que corre en paralelo el sistema viejo y el nuevo sobre 1.2M de registros para certificar discrepancia cero antes del pase a producción.

Stack Tecnológico

Python 3.10+ FastAPI Pandas / NumPy PostgreSQL (SQLAlchemy 2.0) Pytest / TDD