Appearance
Subcategorías de Membresía
Módulo: Membresías / Bases Tipo: Resource Estado: Implementado Fecha: 2026-06-05
Descripción
Las subcategorías permiten organizar niveles o variantes dentro de una categoría de membresía. Son opcionales y se gestionan desde una pantalla administrativa independiente bajo /bases/subcategorias.
Cada subcategoría pertenece a exactamente una categoría padre. La lista de subcategorías solo se muestra una vez que el operador selecciona la categoría.
Frontend
Vista
- Ruta:
/bases/subcategorias - Componente: Selector de categoría (dropdown) + tabla de subcategorías filtrada por la categoría seleccionada.
- Estado vacío: La tabla no se renderiza y no se realiza ningún request hasta que el operador selecciona una categoría.
- Solo se muestran registros activos (sin
deleted_at).
Interacciones
- El operador selecciona una categoría del dropdown.
- El sistema llama
GET /membresias/subcategorias?id_categoria={id}y muestra los resultados. - El operador puede crear, editar y eliminar (soft delete) subcategorías dentro de la categoría seleccionada.
- El filtro de categoría limpia la selección al cambiar.
Permisos
TODO: documentar permisos específicos de subcategorías.
Backend
Endpoint principal
GET /membresias/subcategorias?id_categoria={id}Retorna las subcategorías activas de la categoría indicada. Sin id_categoria, el endpoint no retorna resultados (o rechaza con error 422).
Modelo de datos
| Campo | Tipo | Descripción |
|---|---|---|
id | UUID | Identificador único |
id_categoria | int / UUID | FK a membresia_categoria |
nombre | string | Nombre de la subcategoría |
deleted_at | timestamp | Soft delete (NULL = activo) |
Validaciones
nombre: requerido, máximo 100 caracteres.id_categoria: requerido, debe existir enmembresia_categoria.
Reglas de Negocio
RN-01: Lista vacía antes de seleccionar categoría
La tabla de subcategorías NO se renderiza ni hace fetch hasta que el operador selecciona una categoría. Esto evita requests vacíos y confusión sobre la ausencia de datos.
RN-02: Solo registros activos en el listado
El listado solo muestra subcategorías con deleted_at IS NULL. Las eliminadas persisten en la base de datos (soft delete) pero no son visibles para el usuario.
Referencias
- Spec:
openspec/changes/crud-subcategorias-membresias-frontend/spec.md - Relacionado: Categorías de Membresía