Saltar a contenido

Autor: Adalberto González

Fecha creacion: 2026-06-03
Estado: Desarrollo

ADR-001 — Arquitectura del módulo Guías de Devoluciones

Autor: Adalberto González
Fecha: 2026-06-03
Estado: Desarrollo


Contexto

El módulo de Guías de Devoluciones empezó siendo una pantalla que mostraba información creada en Power BI. Se decidió construirla directamente en la aplicación usando HTML y Angular el cual nos pueda brindar informacion de devoluciones en tiempo real. Por esta razón, se analizaron alternativas para reorganizar la solución de una forma más clara y fácil de mantener.


Arquitectura Por Capas (Dentro de el modulo)

Extraer lógica a servicios Angular simples (FilterService, ChartComputerService) y funciones puras compartidas (worker-utils). El componente mantiene el array datos[] como fuente de verdad y sigue orquestando la carga. Sin signals reactivos, sin persistencia offline.

Pros: - Cambios mínimos sobre el comportamiento ya probado - Sin nuevas dependencias externas - El componente queda en ~280 líneas - Cada servicio tiene una sola responsabilidad clara - Riesgo bajo de regresiones

Contras: - El componente sigue siendo la fuente de verdad del array de datos - Sin reactividad automática — hay que llamar recalcular() manualmente tras cada cambio - No escala bien si en el futuro se necesita compartir datos entre rutas


Decisión

Se eligió: Arquitectura Por Capas (Dentro de el modulo)

Razón: El módulo funciona correctamente. Con lo que hicimos reduce el componente por capas, elimina duplicación entre workers y hace testeable la lógica de filtros y chart sin tocar el flujo de carga.


Consecuencias

Positivas: - Componente reducido de 890 a ~280 líneas — solo orquestación - Lógica de filtros centralizada en FilterService — testeable de forma aislada - Cómputo de chart centralizado en ChartComputerService — testeable de forma aislada - Duplicación entre workers eliminada via worker-utils.ts - Tipos centralizados en devoluciones.models.ts — fuente de verdad única

Negativas: - Se debe llamar recalcular() manualmente tras cada cambio de filtro o datos — sin reactividad automática - Si en el futuro se necesita compartir datos[] entre rutas, habrá que migrar al Signal Store


Impacto en el código

Módulo / Repo Cambio
SitioLogiGho
Componente refactorizado. Nuevos archivos: models/, services/, workers/worker-utils.ts, models/devoluciones.models.ts
services/chart-computer.service.ts, services/filter.service.ts, workers/data-processor.worker.ts, workers/historico.worker.ts

Historial de cambios

Fecha Autor Cambio
2026-06-03 Adalberto González Se implemento la Arquitectura por capas en todo el modulo.