Saltar a contenido

ADR 020: Campos de formulario v1

Estado

Aceptado — 2026-07

Contexto

Los formularios SDUI debían alcanzar paridad funcional con paneles admin tipo Filament antes de congelar el contrato v1 del framework.

Decisión

  1. FormFieldType ampliado en core/cortex_core/spi.py con tipos básicos, layouts, archivos y avanzados (repeater, rich text, computed, visible_when).
  2. FormField.config para metadatos por tipo sin romper el SPI en cada campo nuevo.
  3. Emisión única en framework/cortex_framework/forms/emit.py (schema + uischema + reglas).
  4. Renderers en packages/cortex-panel-shadcn/src/widgets/form/ sobre JSON Forms 3.
  5. Upload vía POST /api/v1/uploads con backend S3 (CORTEX_UPLOAD_*).
  6. FormDefinition.uischema opcional para preservar layouts de FormBuilder (secciones, tabs, columnas).

Contratos destacados

  • Select/radio/checkbox_list: enumOptions en UI schema.
  • Computed: cortexComputed en JSON Schema; evaluación en cliente (applyComputedFields).
  • Visible when: reglas JSON Forms SHOW / HIDE.
  • Repeater: type: array + options.detail con layout hijo.

Consecuencias

  • Nuevos campos deben añadir tipo SPI + emisión + renderer + test en test_form_emit.py.
  • Skins alternativas (material, patternfly) no incluidas en v1.
  • Sin máscaras de input avanzadas en v1.