14 KiB
Auditoría De Layouts De Editores
Fecha de auditoría: 18 de agosto de 2026.
Objetivo
Inventariar los editores reales del frontend del ERP y clasificarlos respecto a la norma visual vigente de edición focalizada.
Esta auditoría:
- inventaría rutas, páginas y dialogs de edición activos;
- clasifica cada caso por tipo;
- evalúa el layout actual frente a la norma;
- detecta desviaciones y excepciones justificadas;
- propone una secuencia pequeña de migración.
Esta auditoría no migra masivamente las pantallas.
Norma visual de referencia
SSOT vigente:
packages/rdx-ui/docs/page-layouts.mdpackages/rdx-ui/docs/contributing-ui.md
Resumen operativo:
- los editores de página completa deben usar por defecto shell
app-fullscreen; - la navegación mínima sale por
PageFormHeadero un header de dominio equivalente; - el contenido del editor se centra mediante
RdxEditorPageLayout; complexity="simple"aplica a formularios focalizados centrados;complexity="complex"aplica a documentos o editores conmain + aside, bloques especializados y footer sticky;- los dialogs e inline editors no deben migrarse automáticamente a fullscreen.
Método de investigación
Búsquedas y fuentes revisadas:
- rutas y layouts en
apps/web/src/routes/app-routes.tsxymodules/*/src/web/*routes.tsx - contratos de layout en
modules/core/src/web/lib/modules/module-client.interface.ts - primitivas Rdx en:
packages/rdx-ui/src/components/editor-page/rdx-editor-page-layout.tsxpackages/rdx-ui/src/components/editor-page/rdx-editor-sticky-footer.tsxmodules/core/src/web/components/form/form-actions/page-form-header.tsxapps/web/src/layout/app-fullscreen-layout.tsxapps/web/src/layout/app-sidebar-layout.tsx
- módulos revisados:
identitycustomerscustomer-invoicescompaniescatalogsdocument-seriessupplier
- búsquedas textuales sobre:
layout: "app-fullscreen"layout: "app-sidebar"RdxEditorPageLayoutPageFormHeaderRdxEditorStickyFootercreateupdateeditDialog
Inventario
| Module | Feature | Route | Type | Current layout | Rdx editor layout | Compliance | Risk | Priority | Recommended action | Evidence |
|---|---|---|---|---|---|---|---|---|---|---|
identity |
Account self-service | /account |
PAGE_SIMPLE |
app-fullscreen |
simple |
COMPLIANT |
LOW |
- |
Ninguna. Mantener como referencia de editor simple focalizado. | modules/identity/src/web/account-routes.tsx, modules/identity/src/web/account/ui/pages/account-page.tsx |
identity |
Change password dialog | Sin ruta propia. Dialog dentro de /account |
DIALOG |
Host app-fullscreen |
No aplica | COMPLIANT |
LOW |
- |
Ninguna. Mantener como dialog de edición contenida. | modules/identity/src/web/account/ui/pages/account-page.tsx |
customers |
Create customer | /customers/create |
PAGE_SIMPLE |
app-fullscreen |
simple |
COMPLIANT |
LOW |
- |
Ninguna. Referencia vigente de editor simple. | modules/customers/src/web/customer-routes.tsx, modules/customers/src/web/create/ui/pages/customer-create-page.tsx |
customers |
Update customer | /customers/:id/edit |
PAGE_SIMPLE |
app-fullscreen |
simple |
COMPLIANT |
LOW |
- |
Ninguna. Referencia vigente de editor simple. | modules/customers/src/web/customer-routes.tsx, modules/customers/src/web/update/ui/pages/customer-update-page.tsx |
customers |
Quick create customer | Sin ruta propia. Dialog reutilizado desde proformas | DIALOG |
Host app-fullscreen |
No aplica | COMPLIANT |
LOW |
- |
Ninguna. Mantenerlo como creación rápida embebida. | modules/customers/src/common/features/quick-create-customer/ui/dialogs/quick-create-customer-dialog.tsx |
companies |
Company details settings | /settings/company/details |
PAGE_SIMPLE |
app-sidebar |
No usa RdxEditorPageLayout |
EXCEPTION_JUSTIFIED |
MEDIUM |
P3 |
Mantener en settings por ahora. Revaluar solo si se define una variante focalizada específica para formularios de settings. | modules/companies/src/web/company-routes.tsx, modules/companies/src/web/settings/company-details/ui/pages/company-details-settings-page.tsx |
customer-invoices |
Verifactu settings | /settings/billing/verifactu |
PAGE_SIMPLE |
app-sidebar |
No usa RdxEditorPageLayout |
EXCEPTION_JUSTIFIED |
MEDIUM |
P3 |
Mantener en settings por ahora. Revaluar junto con una política específica de formularios largos dentro de settings. | modules/customer-invoices/src/web/customer-invoice-routes.tsx, modules/customer-invoices/src/web/settings/verifactu/ui/pages/company-verifactu-settings-page.tsx |
customer-invoices |
Create proforma | /proformas/create |
PAGE_SIMPLE |
app-fullscreen |
simple |
COMPLIANT |
MEDIUM |
- |
Ninguna. Mantener como bootstrap inicial de proforma hacia el editor documental completo. | modules/customer-invoices/src/web/customer-invoice-routes.tsx, modules/customer-invoices/src/web/proformas/create/ui/pages/proforma-create-page.tsx, modules/customer-invoices/src/web/proformas/create/ui/blocks/proforma-create-form.tsx |
customer-invoices |
Update proforma | /proformas/:id/edit |
PAGE_COMPLEX |
app-fullscreen |
complex |
COMPLIANT |
HIGH |
- |
Ninguna. Mantener como referencia vigente de editor complejo. | modules/customer-invoices/src/web/customer-invoice-routes.tsx, modules/customer-invoices/src/web/proformas/update/ui/pages/proforma-update-page.tsx, modules/customer-invoices/src/web/proformas/update/ui/editors/proforma-update-editor-form.tsx |
customer-invoices |
Change proforma status | Sin ruta propia. Dialog usado desde listado y detalle | DIALOG |
Host mixto (app-sidebar o app-fullscreen) |
No aplica | COMPLIANT |
LOW |
- |
Ninguna. Es una edición contenida por dialog, no candidata a fullscreen. | modules/customer-invoices/src/web/proformas/change-status/ui/change-status-dialog.tsx, modules/customer-invoices/src/web/proformas/list/ui/pages/list-proformas-page.tsx, modules/customer-invoices/src/web/proformas/detail/ui/pages/proforma-detail-page.tsx |
catalogs |
Payment methods create/update | Host: /settings/general/payment-methods |
DIALOG |
Host app-sidebar |
No aplica | COMPLIANT |
LOW |
- |
Ninguna. Mantener como edición contenida en dialog dentro de settings. | modules/catalogs/src/web/catalogs-routes.tsx, modules/catalogs/src/web/settings/payment-methods/ui/pages/payment-methods-settings-page.tsx, modules/catalogs/src/web/settings/payment-methods/ui/components/payment-method-form-dialog.tsx |
catalogs |
Payment terms create/update | Host: /settings/general/payment-terms |
DIALOG |
Host app-sidebar |
No aplica | COMPLIANT |
LOW |
- |
Ninguna. Mantener como dialog aunque su contenido interno sea más rico. | modules/catalogs/src/web/catalogs-routes.tsx, modules/catalogs/src/web/settings/payment-terms/ui/pages/payment-terms-settings-page.tsx, modules/catalogs/src/web/settings/payment-terms/ui/components/payment-term-form-dialog.tsx |
catalogs |
Tax regimes create/update | Host: /settings/general/tax-regimes |
DIALOG |
Host app-sidebar |
No aplica | COMPLIANT |
LOW |
- |
Ninguna. Mantener como dialog de edición contenida. | modules/catalogs/src/web/catalogs-routes.tsx, modules/catalogs/src/web/settings/tax-regimes/ui/pages/tax-regimes-settings-page.tsx, modules/catalogs/src/web/settings/tax-regimes/ui/components/tax-regime-form-dialog.tsx |
customer-invoices |
Issued invoices create/edit references | Referencias a /issued-invoices/create y /customer-invoices/:id/edit, sin ruta activa |
UNCLEAR |
Sin ruta activa | No aplica | UNKNOWN |
MEDIUM |
P2 |
Aclarar si esas rutas deben existir o limpiar referencias muertas antes de cualquier trabajo visual. | modules/customer-invoices/src/web/issued-invoices/list/ui/pages/list-issued-invoices-page.tsx, modules/customer-invoices/src/web/issued-invoices/list/ui/blocks/issued-invoices-grid/issued-invoices-grid.tsx, modules/customer-invoices/src/web/customer-invoice-routes.tsx |
document-series |
Frontend editor activo | No detectado | LEGACY_OR_UNUSED |
Sin route frontend | No aplica | UNKNOWN |
LOW |
P3 |
Confirmar si el módulo tendrá UI activa antes de cualquier migración de layout. | Sin src/web/*routes.tsx ni páginas frontend activas en modules/document-series |
supplier |
Frontend editor activo | No detectado | LEGACY_OR_UNUSED |
Sin route frontend | No aplica | UNKNOWN |
LOW |
P3 |
Resolver primero si el módulo se reactiva o se limpia; no priorizar migración visual. | Sin src/web/*routes.tsx; solo modules/supplier/src/web/shared/* |
Editores conformes
Conformes respecto a la norma vigente:
customers/createcustomers/update/accountproformas/:id/edit
Motivos comunes observados:
- ruta bajo
app-fullscreen; - navegación mínima por
PageFormHeadero header de dominio equivalente; - uso explícito de
RdxEditorPageLayout; - geometría coherente con
simpleocomplexsegún caso; - acciones de salida/guardado visibles y no delegadas al sidebar.
Desviaciones
1. proformas/create
HECHO OBSERVADO
- la ruta usa
app-fullscreen; - la página usa header de edición y
RdxEditorPageLayout complexity="simple"; - el flujo de alta actual solo captura cabecera inicial y deriva después al editor documental completo;
- no existe todavía editor de líneas,
aside, totales sticky ni footer persistente equivalentes aproformas/:id/edit.
IMPACTO
- el create queda alineado con el patrón focalizado simple sin fingir que ya es el editor documental completo;
- la diferencia visual restante frente a
updateresponde a una diferencia funcional real y no a drift accidental de layout.
DECISIÓN
PAGE_SIMPLE;COMPLIANT.
2. Referencias a create/edit de issued invoices sin ruta activa
HECHO OBSERVADO
- hay referencias a
/issued-invoices/createy a/customer-invoices/:id/edit; customer-invoice-routes.tsxno declara esas rutas activas.
IMPACTO
- el inventario de editores queda ambiguo en esa área;
- puede existir deuda de navegación muerta o una funcionalidad incompleta;
- no conviene planificar migración visual ahí hasta aclarar si hay editor real.
RECOMENDACIÓN
- confirmar si esas rutas deben implementarse;
- si no, limpiar referencias muertas antes de meterlas en cualquier backlog de layouts.
Excepciones justificadas
Company details settings
HECHO OBSERVADO
- es un formulario de página completa;
- vive bajo
/settings/company/details; - depende del shell de settings con
app-sidebar.
INFERENCIA
- la navegación lateral de settings forma parte funcional de la tarea y hoy actúa como mecanismo primario de cambio de subsección.
DECISIÓN DE AUDITORÍA
EXCEPTION_JUSTIFIEDpor ahora;- no priorizar fullscreen salvo que el sistema de settings evolucione con una variante focalizada explícita.
Verifactu settings
HECHO OBSERVADO
- es un formulario de configuración largo;
- vive bajo
/settings/billing/verifactu; - comparte patrón de settings con shell lateral.
INFERENCIA
- igual que en
company/details, la tarea sigue integrada en navegación de settings y no en un editor aislado.
DECISIÓN DE AUDITORÍA
EXCEPTION_JUSTIFIEDpor ahora;- revisar sólo si se aborda una política transversal de formularios largos dentro de settings.
Dialogs e inline editors
Dialogs correctamente clasificados y no candidatos automáticos a fullscreen:
QuickCreateCustomerDialogPaymentMethodFormDialogPaymentTermFormDialogTaxRegimeFormDialog- dialog de cambio de contraseña de
/account ChangeProformaStatusDialog
No se detectaron rutas independientes que deban reclasificarse desde DIALOG o INLINE a PAGE_*.
No se detectaron inline editors de entidad de primer nivel con route propia. Sí existen bloques especializados internos, como el editor de líneas de proformas, pero forman parte de un PAGE_COMPLEX y no deben inventariarse como pantalla independiente.
Incoherencias create/update
Agregados revisados:
customerscreateyupdatecomparten patrón y están alineados.
proformascreateusaRdxEditorPageLayout complexity="simple"porque hoy es un bootstrap inicial;updateusaRdxEditorPageLayout complexity="complex"porque ya es el editor documental completo conmain, bloques especializados y footer sticky.
Conclusión:
- la diferencia create/update restante es funcional legítima:
createtodavía no edita el documento completo yupdatesí.
Riesgos de migración
Riesgos bajos:
customers/createcustomers/update/account
Riesgos medios:
proformas/createpor convivencia con quick-create/select customer dialogs y porque el flujo actual parece de bootstrap inicial, no de edición documental completa;company/detailsyverifactusi se intentara moverlos fuera del shell settings.
Riesgos altos:
proformas/:id/edit, aunque hoy ya cumple. Cualquier cambio allí impacta:- scroll complejo
- footer sticky
- totales embebidos
aside- dialogs anidados
Plan incremental
Fase A
- completada: migración de
proformas/create
Motivo:
- era el único
PAGE_*activo no plenamente alineado con el patrón Rdx; - ya usaba
app-fullscreen, así que el salto era incremental; - permite distinguir mejor entre bootstrap inicial y editor documental completo del agregado Proforma.
Fase B
- revisar si
company/detailsyverifactudeben seguir como excepción de settings o si merece una variante focalizada específica para formularios largos dentro de settings
Motivo:
- ahora mismo la excepción parece razonable;
- no conviene forzar fullscreen sin una decisión explícita sobre el sistema de settings.
Fase C
- aclarar
issued-invoicescreate/edit
Motivo:
- primero hay que determinar si existe editor real o solo referencias muertas.
Fase D
- hacer una auditoría UX más fina de dialogs ricos, empezando por
payment-terms
Motivo:
- no es un incumplimiento de fullscreen;
- sí es el dialog más complejo de los auditados y puede requerir reglas específicas de consistencia interna.
No cambios
Durante esta auditoría:
- no se modificaron rutas ni layouts runtime de
customers,companies,customer-invoices,catalogs,identity,document-seriesosupplier; - no se tocaron hooks, controllers, formularios, React Query ni backend de los editores auditados;
- el único cambio de código del turno es este documento operativo de auditoría.