- Updated examples in "estructura-web-por-entidades-y-operaciones.md" to reflect correct entity names and directory structures. - Clarified modal usage and component interactions in "impresoras-del-perfil.md". - Adjusted component descriptions in "logotipos-de-companias.md" for consistency. - Revised persistence model details in "normalizacion-de-la-persistencia.md" to remove outdated references and clarify relationships. - Enhanced dialog patterns in "patron-de-dialogos.md" with specific guidelines for field labels and validation. - Specified component reuse in "patron-de-listados-de-entidades.md" to include @repo/rdx-ui components. - Updated implementation status in "personas-y-departamentos.md" to reflect current features and pending tasks. - Clarified project scope and initial setup instructions in "plan-de-desarrollo.md" and "puesta-en-marcha.md". - Improved descriptions of workstation management in "puestos-de-trabajo.md" for better understanding of active/inactive states. - Enhanced resource management details in "recursos-campos-y-plantillas.md" to clarify relationships and pending features. - Revised best practices review in "revision-de-buenas-practicas.md" to reflect current project status and components. - Updated teleworking documentation in "teletrabajo.md" to include references to remote technical assistance. - Clarified user account management in "usuarios-y-acceso.md" to emphasize the importance of account deactivation.
92 lines
5.4 KiB
Markdown
92 lines
5.4 KiB
Markdown
# Auditoría de separación lógica del cliente
|
|
|
|
Informe de una revisión anterior, no un inventario ni una instrucción de implementación
|
|
vigente. Las cifras y resultados corresponden al cierre de aquella revisión. Para trabajar
|
|
sobre el código actual, consultar `AGENTS.md`, las guías normativas y las
|
|
[funcionalidades archivadas](funcionalidades-archivadas.md).
|
|
|
|
|
|
## Alcance y referencia
|
|
|
|
Revisión de `modules/core/src/web`, `modules/identity/src/web`, `modules/assets/src/web`,
|
|
`modules/resources/src/web` y `modules/companies/src/web`, usando `AGENTS.md`, la documentación
|
|
normativa y el código de `customer-invoices.zip` como referencia de separación de responsabilidades.
|
|
Se excluyen los cambios en `apps/web/src`, vendor, backend, schemas HTTP y persistencia.
|
|
|
|
La referencia aporta controllers, adapters y acceso a API por operaciones. No se incorporan
|
|
sus dependencias, factories, tipos genéricos, memoización o servicios ajenos al proyecto.
|
|
|
|
## Áreas revisadas
|
|
|
|
- Core: health y home; la consulta ya tiene API y claves separadas. No se añade un controller
|
|
que únicamente envuelva esa consulta.
|
|
- Identity: sesión, autenticación, logout, contraseñas, gestión de usuarios y workspace.
|
|
- Assets: inventario, detalle, características, relaciones, puestos, marcas, catálogos y soporte.
|
|
- Resources: catálogos, plantillas, editor, valores iniciales e integraciones de recursos.
|
|
- Companies: compañías, logos, personas, departamentos, sedes, asignaciones, accesos,
|
|
dashboard y workspace; correo, usos de buzón, perfiles, carpetas, aplicaciones,
|
|
certificados e impresoras; procesos y sus plantillas, teletrabajo y remotos.
|
|
|
|
La inspección combina inventario y análisis sintáctico del código, revisión de dependencias,
|
|
lectura de las responsabilidades y diffs afectados y comprobaciones por módulos.
|
|
|
|
## Incumplimientos y cambios
|
|
|
|
1. Formularios y páginas coordinaban consultas, mutaciones, invalidación, defaults y grandes
|
|
bloques visuales en el mismo componente. Se extraen 78 controllers con responsabilidades
|
|
concretas, conservando RHF y TanStack Query como fuentes de verdad.
|
|
2. Cálculos reutilizados se exportaban desde `.tsx`, incluso para usarlos desde coordinación.
|
|
Se separan filtros, integración, destino remoto, navegación, fechas y progreso de pasos.
|
|
3. Schemas locales y contratos de formularios se mezclaban con la presentación. Se colocan
|
|
en `schemas` y `types`, sin duplicar DTOs HTTP. Los adapters separan conversiones reales
|
|
de personas, sedes e instrucciones de procesos.
|
|
4. Clientes compartidos agrupaban varias entidades. Se trasladan 31 operaciones de identidad,
|
|
inventario, soporte, compañías y procesos a sus ámbitos. Accesos y buzones distinguen
|
|
consulta y guardado. Los clientes pequeños que ya tienen un ámbito cohesivo se conservan.
|
|
5. Los callbacks de altas anidadas exponían refs de montaje a UI. Su coordinación y protección
|
|
ante desmontaje quedan privadas de los controllers.
|
|
6. Los índices se ajustan a sus consumidores y a la responsabilidad que exportan, evitando
|
|
compatibilidad artificial desde UI y ciclos por composición de API.
|
|
|
|
Los componentes simples, helpers visuales privados y hooks existentes que ya resuelven
|
|
su responsabilidad permanecen próximos a su consumidor. No se fragmenta JSX trivial,
|
|
se duplica estado remoto ni se añaden dependencias o nuevas capas de negocio.
|
|
|
|
Se preservan el comportamiento y las composiciones públicas requeridas por la aplicación
|
|
y los demás módulos, incluidas identidad, inventario y catálogos. No cambian endpoints,
|
|
schemas, datos persistidos, migraciones ni textos de interfaz.
|
|
|
|
## Comprobaciones
|
|
|
|
- Typechecks y pruebas dirigidas de los módulos y de la aplicación, sin modificar esta última.
|
|
- Doce pruebas nuevas incluidas en los scripts de paquete: sesión y autenticación, rutas,
|
|
métodos HTTP, CSRF, errores seguros, respuestas inválidas, accesos, usos de buzón,
|
|
adapters, integración y límites de logos.
|
|
- Comparación sintáctica de los cuerpos y parámetros de las 31 operaciones trasladadas,
|
|
normalizando únicamente el nombre del transporte compartido.
|
|
- Análisis de dependencias relativas de los cinco módulos, sin ciclos detectados.
|
|
- Comparación de elementos JSX y atributos estáticos de los 252 componentes inventariados
|
|
frente a Git, sin cambios accidentales en estructura, clases o atributos estáticos.
|
|
|
|
Resultados globales del cierre de esta revisión:
|
|
|
|
| Comando | Resultado |
|
|
| --- | --- |
|
|
| `pnpm typecheck` | Correcto |
|
|
| `pnpm lint` | Correcto, sin avisos |
|
|
| `pnpm test` | Correcto: 236 pruebas, ningún fallo |
|
|
| `pnpm check` | Correcto; se corrigió el orden de imports detectado en core |
|
|
| `pnpm build` | Correcto, con aviso de bundle web superior a 500 kB |
|
|
|
|
Las pruebas de UI existentes comprueban renderizado, estados, traducciones y contratos
|
|
observables. No sustituyen una prueba manual en navegador de foco, teclado y apertura/cierre
|
|
de todas las combinaciones de modales; esta revisión no incorpora un runner de navegador.
|
|
|
|
## Pendientes y trabajo ajeno
|
|
|
|
No se ha necesitado una decisión arquitectónica para esta separación. Los cambios previos
|
|
del usuario en `TODO.md` y el ZIP de referencia se conservan. Las nuevas funcionalidades
|
|
anotadas allí, como búsqueda de logos SVG y routing, no forman parte de esta auditoría.
|
|
El aviso de tamaño del bundle no impide el build. Su posible división requiere un trabajo
|
|
específico de carga de pantallas y no se introduce como efecto secundario de esta separación.
|