metis-desk/docs/secciones-de-campos-en-plantillas.md
2026-10-10 17:57:05 +02:00

37 lines
4.7 KiB
Markdown

# Secciones de campos en plantillas
## Alcance
Activos y recursos organizan sus características mediante secciones dentro de cada plantilla. No existe un catálogo independiente de grupos. Los dos catálogos siguen separados: ni campos, ni plantillas, ni secciones se comparten entre activos y recursos.
La plantilla global define su presentación para todas las compañías. Una plantilla propia de compañía puede utilizar campos globales y propios de esa compañía, con su propia organización. Personalizar una plantilla global o de serie se realiza mediante una copia en el ámbito correspondiente. Copiar genera UUID v7 nuevos para las secciones y remapea las asociaciones; los campos conservan sus referencias.
## Reglas
- Un único nivel de secciones, sin anidamiento ni bloques repetibles.
- Cada sección tiene UUID, nombre obligatorio, descripción opcional y posición dada por el orden del array. Máximo 30 secciones, nombres únicos dentro de la plantilla ignorando espacios extremos y mayúsculas.
- Cada campo pertenece como máximo a una sección de esa plantilla. Su pertenencia no cambia la definición reutilizable del campo.
- Los campos sin sección son válidos; aparecen bajo «Sin sección» cuando existen otras secciones. Una plantilla sin secciones mantiene la presentación sencilla.
- El editor permite añadir, renombrar, describir, ordenar y eliminar secciones; asignar campos y ordenarlos dentro de su grupo. Todas las operaciones son locales al formulario hasta Guardar; Cancelar no modifica la plantilla.
- Eliminar una sección mueve sus campos a «Sin sección», conservando sus referencias y obligatoriedad. Quitar un campo de una plantilla tampoco elimina su definición ni los valores de registros anteriores.
- Plegar una sección solo modifica su presentación, sin desactivar campos ni omitir validaciones.
- La activación sigue perteneciendo a los campos y plantillas, con la disponibilidad global y las excepciones por compañía existentes. Una sección no incorpora otro estado de disponibilidad.
## Formularios y fichas
El editor se integra en los modales existentes de plantillas, con ayuda inmediatamente antes de Guardar/Cancelar. Los formularios de activos y recursos, sus fichas e historial y el detalle de las plantillas reutilizan FieldSections. Las secciones comienzan abiertas y permiten plegarse con teclado; los campos se distribuyen en dos columnas cuando el espacio permite y en una en pantallas pequeñas. Las secciones sin campos no se muestran en la ficha, pero sí en el editor.
Ante controles inválidos se abre la sección antes de que el navegador enfoque el control; ante errores del formulario o servidor se abren las secciones para facilitar la revisión. La obligación de rellenar un campo continúa siendo independiente de su sección.
## Persistencia
Las secciones se guardan en asset_template_sections y resource_template_sections. Las asociaciones asset_template_fields y resource_template_fields incluyen la sección opcional de cada campo. Las instantáneas utilizan asset_specification_sections y resource_specification_sections, junto con sus tablas de campos. Las claves foráneas garantizan que cada campo se vincule a una sección de su propia plantilla o especificación. TemplateSection es una entidad interna con UniqueID y Name. Una plantilla o especificación puede no tener secciones.
Las especificaciones de activos y recursos capturan el orden, nombre, descripción e identidad de las secciones y la pertenencia de cada campo al crear el registro. Editar una plantilla posteriormente no modifica estas instantáneas, valores ni historial. Los registros anteriores sin secciones permanecen planos incluso al editarlos. No se realiza una migración silenciosa de sus especificaciones.
La inicialización amplía una sola vez la presentación de las plantillas de serie existentes, conservando UUID de plantilla/campos/asociaciones, obligatoriedad, orden previo y estados globales y por compañía. La ampliación se guarda mediante la transacción del catálogo al arrancar. Repetir el arranque no cambia identidades ni configuración. Las plantillas personalizadas permanecen intactas. Los nuevos catálogos reciben la misma agrupación inicial; las plantillas pequeñas de recursos conservan una presentación plana.
## Verificación
Pruebas de contratos, nombres/UUID duplicados, referencias a secciones ajenas, límites/anidamiento, igualdad semántica, ámbito global y local, persistencia relacional, ampliación idempotente, conservación de instantáneas y reglas obligatorias. Pruebas compartidas para eliminar secciones, copiar/remapear identidades y presentación agrupada o plana. Comprobación de interacción en navegador para el editor y el formulario de características.