[ADM-001] Cascada de inactividad: medio inactivo debe congelar secciones (y productos) hijas #16
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexto
Durante el smoke test de ADM-001 (PR #15), se detectó una inconsistencia: al desactivar un Medio, el admin puede seguir editando/desactivando/reactivando las Secciones de ese Medio. Tampoco bloquea operaciones sobre entidades futuras más abajo en la jerarquía (Productos, Avisos, Tarifarios, etc.).
La spec REQ-SEC-001 ya valida que un create de Sección sobre un Medio inactivo devuelva 404, pero REQ-SEC-002 (update), REQ-SEC-003 (deactivate/reactivate) y REQ-SEC-004 (list — por default
activo=true) no extienden esa regla al padre. Es una zona gris de la spec.Decisión (usuario, 2026-04-17)
Opción B — Congelamiento total en cascada: si
Medio.Activo = false, TODA mutación sobre entidades de jerarquía menor (Seccion + Producto + lo que venga en ADM-003/PRD-/PRC-/VTA-*) debe rechazarse con409 medio_inactivo. Solo reactivar el Medio libera la cascada.Razonamiento: "Si el medio se desactiva es porque no se debe utilizar ni editar; sus secciones y productos deben tomar la misma lógica por menor jerarquía."
Alcance propuesto
Inmediato (Secciones — esta UDT o próxima)
SeccionRepository/ handlers: validarMedio.Activo = trueantes deupdate,deactivate,reactivate(además delcreateya validado).MedioInactivoException+ mapping enExceptionFilter→409 medio_inactivo.SeccionesListPage/ detail muestra un banner "Medio desactivado — operaciones bloqueadas" cuandomedio.activo = false; botones Edit/Deactivate/Reactivate disabled.specdesecciones-managementen engram para formalizar la regla (convertir la zona gris en requirement explícito).Cascada futura (cuando aparezcan esas entidades)
Decisión adicional requerida en el momento
Referencias
sdd/adm-001-medios-secciones/{spec,design,archive-report}src/api/SIGCM2.Application/Secciones/Update/UpdateSeccionCommandHandler.cssrc/api/SIGCM2.Application/Secciones/{Deactivate,Reactivate}/*Handler.cssrc/api/SIGCM2.Api/Filters/ExceptionFilter.cssrc/web/src/features/secciones/pages/SeccionesListPage.tsxPrioridad
Alta — es regla transversal de dominio (cascada de inactividad) que va a impactar a todas las UDTs de fase 2 en adelante. Mejor resolverla antes de que CAT-/PRD-/VTA-* arranquen para que reusen el patrón.