252 lines
33 KiB
Markdown
252 lines
33 KiB
Markdown
# Inventario funcional del puesto de trabajo
|
||
|
||
Fecha: 22 de octubre de 2026. Auditoría estática del árbol de trabajo, incluidos sus cambios locales previos. Entrada a los entregables: [resumen ejecutivo](08-resumen-ejecutivo.md).
|
||
|
||
## Alcance y evidencia
|
||
|
||
La entidad implementada es **Workstation**, en el módulo Assets; «Workplace» es el nombre de la carpeta solicitado para esta auditoría, no otro agregado. Companies compone su ficha. El objetivo de diseño asumido es ayudar al técnico a identificar el puesto, entender su composición y consultar sus entornos de usuario. Esta hipótesis no sustituye investigación con usuarios.
|
||
|
||
Etiquetas utilizadas en todos los documentos:
|
||
|
||
- **CONFIRMADO**: inspeccionado en implementación; no implica ejecución ni comprobación de la BD instalada.
|
||
- **DERIVABLE**: necesita el recorrido o cálculo descrito sobre fuentes existentes.
|
||
- **DOCUMENTADO**: aparece en documentación, sin implementación confirmada para esa afirmación.
|
||
- **PROPUESTO**: decisión de presentación o desarrollo futuro.
|
||
- **NO DISPONIBLE**: no localizado en el ámbito y búsquedas declarados.
|
||
|
||
La implementación se ha mantenido en solo lectura. No se ha consultado una BD ni iniciado la API: su arranque ejecuta migraciones. No se han creado usuarios ni fixtures persistentes. El JSON entregado es exclusivamente un ejemplo de diseño. La sintaxis y los contratos de ese ejemplo se verifican sin acceso a red ni BD; véase el registro de validaciones en [viabilidad](05-viabilidad-tecnica.md).
|
||
|
||
## Tecnologías verificadas
|
||
|
||
| Fuente | Declaración comprobada |
|
||
| --- | --- |
|
||
| `package.json` raíz | Node >=24 <25; PNPM 11.25.0. Entorno ejecutado: Node 24.20.0, PNPM 11.25.0 |
|
||
| `apps/web/package.json` | React 19.2.5, Vite 8.3.0, TanStack Query 5.98.0, Tailwind 4.2.2, i18next 26.0.4 |
|
||
| `apps/server/package.json` | Express 4.22.1, Sequelize 6.37.8, driver MariaDB 3.5.4, Zod 4.3.6 |
|
||
| `apps/web/components.json` | `base-vega`, RSC desactivado, iconografía Tabler |
|
||
| `packages/shadcn-ui/components.json` | Vendor base-vega, con su iconografía interna Lucide conservada |
|
||
| `modules/assets/package.json`, `modules/companies/package.json` | React Hook Form 7.72.1, TanStack Table 8.21.3; APIs públicas `./client`, `./common`, `./module` |
|
||
|
||
Son versiones declaradas en manifests, no una certificación de ejecución de cada dependencia. TypeScript 6.0.2 está fijado en la raíz.
|
||
|
||
## Atributos completos del puesto
|
||
|
||
Fuentes normativas de datos: `WorkstationInputSchema`, `WorkstationSchema`, `WorkstationValues`, `Workstation` y `WorkstationPersistenceMapper` (referencias E01–E06 al final).
|
||
|
||
| Campo | Tipo / obligatorio | Origen | Uso funcional | Visible actualmente |
|
||
| --- | --- | --- | --- | --- |
|
||
| `id` | UUID; sí | Identidad del agregado, columna `workstations.id` | URL, comandos y referencias | En URL; sin campo de lectura específico |
|
||
| `companyId` | UUID; sí | Columna y contexto de inventario | Ámbito de compañía atendida | Contexto del shell y URL |
|
||
| `values.name` | String 1–100; sí | Columna `name`; VO `Name` | Identidad legible; nombre normalizado por VO | Cabecera editable e historial |
|
||
| `values.active` | Boolean; sí | Columna `active` | Estado del puesto y reserva de miembros | Cabecera, edición e historial |
|
||
| `values.siteId` | UUID o null; clave requerida | FK `company_sites` | Sede del puesto | Cabecera enlazada al listado de sedes |
|
||
| `values.personId` | UUID o null; clave requerida | FK `company_contacts` | Responsable del puesto | Cabecera si existe y panel Personas |
|
||
| `values.computerAssetId` | UUID, null o ausente | FK `assets`; el VO omite la propiedad si no hay ordenador | Ordenador principal; asociación de perfiles y software | Equipamiento e historial |
|
||
| `values.assetIds` | UUID[]; requerido, 0–200 | `workstation_members` | Composición exclusiva actual; sin duplicados | Ordenador y demás activos |
|
||
| `history` | Revisiones, mínimo 1 | `workstation_revisions` y `workstation_revision_members` | Instantáneas completas del puesto | Pestaña Historial |
|
||
| `history[].id` | UUID; sí | Identidad de revisión | Identificar revisión, no entidad relacionada nueva | Clave interna de cronología |
|
||
| `history[].values` | Mismo contrato de valores | Columnas de revisión y sus miembros | Estado en cada revisión | Valores de la cronología |
|
||
| `history[].actorId` | UUID; sí | FK `users` | Operador que registró la revisión | No como campo independiente |
|
||
| `history[].actorName` | String no vacío; sí en DTO | Resuelto desde usuarios al construir respuesta | Mostrar autor | Cronología; no es snapshot histórico del nombre del usuario |
|
||
| `history[].recordedAt` | ISO datetime; sí | Columna de revisión | Momento de registro | Cronología localizada |
|
||
| `position`, `activeKey`, `kind` de miembros | Internos de persistencia | Tablas relacionales / proyección | Orden, reserva exclusiva y coherencia | No son campos de negocio del DTO |
|
||
|
||
**NO DISPONIBLE** en el agregado: descripción, notas propias, tipología propia del puesto, departamento propio, coordenadas, fecha contractual de ocupación, `createdAt` y `updatedAt` como campos raíz, métricas de salud o disponibilidad online. Se inspeccionaron E01–E06 y la persistencia. Las notas y características pertenecen a activos/perfiles/recursos, no al puesto.
|
||
|
||
**DERIVABLE**: fecha de registro inicial = primera revisión; última modificación registrada = última revisión. No equivalen a antigüedad del equipo, alta laboral ni fecha efectiva de asignación. El orden de `assetIds` se conserva al persistir, pero su igualdad de dominio ignora reordenaciones; no prometer una función de ordenación persistente sin revisar ese contrato.
|
||
|
||
## Reglas funcionales
|
||
|
||
| Regla CONFIRMADA | Fuente / consecuencia |
|
||
| --- | --- |
|
||
| El ordenador principal, si se indica, debe estar en `assetIds` | `WorkstationValues.create`; no es un miembro adicional |
|
||
| Miembros únicos y máximo 200 | Schema y VO; vacío válido, incluso en puesto activo |
|
||
| Sede y persona deben existir en contexto de compañía | `mapWorkstationInput`; se puede conservar una referencia inactiva previamente existente |
|
||
| Nuevo miembro de puesto activo debe ser operativo | `memberError`; permite conservar un miembro de un puesto antes activo aunque deje de ser operativo |
|
||
| Un activo no puede estar en dos puestos activos | Validación de aplicación y `workstation_assets.activeKey` único |
|
||
| Puesto inactivo no reserva activos | Mapper; las referencias históricas no equivalen a composición actual |
|
||
| Desmantelar desactiva, vacía miembros, ordenador y responsable; conserva sede y nombre | `Workstation.decommission`; crea revisión solo si hay cambio |
|
||
| Actualización semánticamente idéntica no crea revisión | `Workstation.update`; no es garantía universal de idempotencia de creación |
|
||
| Fechas de revisión válidas y no decrecientes | Agregado y mapper; última instantánea debe coincidir con valores actuales |
|
||
| Borrar elimina el puesto y sus revisiones, no los activos | Repositorio, transacción; referencias externas pueden impedirlo con `WORKSTATION_IN_USE` |
|
||
|
||
No se encontró una exigencia de categoría «ordenador» sobre `computerAssetId` en el mapper del puesto. La aptitud como host se valida al activar perfiles (`isProfileHost` en `profileReferencesAvailable`); no confundir la selección del editor con una invariante backend adicional.
|
||
|
||
## Datos de entidades relacionadas
|
||
|
||
| Entidad | Datos que pueden aportar contexto; fuente |
|
||
| --- | --- |
|
||
| Compañía | `id`, nombre, estado, logo opcional; personas, contactos, sedes, departamentos, asignaciones en `CompanySchema` |
|
||
| Sede | Nombre, estado, dirección, teléfono; `SiteSchema` |
|
||
| Persona | Nombre, cargo textual `position`, email, teléfono, estado, `isContact`, foto opcional; `PersonSchema` |
|
||
| Asignación departamental | Persona, departamento, cargo, fechas, principal y revisiones; `DepartmentAssignmentSchema` |
|
||
| Activo | Nombre, plantilla/especificación, sede, marca opcional, `registeredOn` opcional, estado técnico, notas, características tipadas, `assigned`, `displayStatus`, revisiones; `AssetSchema` |
|
||
| Perfil | Persona, activo host, cuenta opcional, nombre, activo, notas, `needsReview`, revisiones; `WorkProfileSchema` |
|
||
| Software instalado | Activo, recurso aplicación/OS, licencia opcional, versión, estado, notas, revisión y `needsReview`; `SoftwareInstallationSchema` |
|
||
| Configuraciones | Carpetas, correo, impresoras, aplicaciones y certificados referidos por `profileId`; tienen estados y revisiones propios |
|
||
| Recursos/accesos | Catálogo de recursos, recursos SMB, publicaciones, cuentas, necesidades, concesiones y coberturas; detalle en [mapa](02-mapa-relaciones.md) |
|
||
| Conectividad | Soporte de activo; conexiones remotas y autorización de teletrabajo de persona; no hay modalidad presencial/remota propia del puesto |
|
||
| Infraestructura | Roles de activo, interfaces ethernet/wifi/other, MAC, direcciones IPv4/IPv6, notas e historial; `InfrastructureSchema` (E35). Son datos registrados, no telemetría |
|
||
| Buzones y usos | `MailboxSchema`, `MailboxUseSchema`: dirección, tipo, contexto, cuenta opcional y asignaciones temporales de uso por persona (E36) |
|
||
| Procesos | Altas/cambios/bajas de persona con tareas y referencias tipadas; no son tickets ni FK directa al puesto |
|
||
|
||
## Localización de implementación y responsabilidades
|
||
|
||
Las rutas de esta tabla son relativas a la raíz. En los conjuntos con varios ficheros se enumeran las unidades relevantes, sin implicar que exista un modelo ORM por cada agregado.
|
||
|
||
| Elemento | Ruta exacta / responsabilidad |
|
||
| --- | --- |
|
||
| Valores y agregado | `modules/assets/src/api/domain/workstation-values.ts`, `value-objects/workstation-values.vo.ts`, `workstation.aggregate.ts`, `workstation-revision.entity.ts` |
|
||
| Puerto de repositorio | `modules/assets/src/api/application/asset.repository.ts`: `IAssetRepository`, contexto de inventario y comandos de puesto |
|
||
| Casos de uso y mapper | `modules/assets/src/api/application/workstation.use-cases.ts`, `workstation-input.mapper.ts`, `workstation-response.builder.ts` |
|
||
| HTTP | `modules/assets/src/api/infrastructure/http/workstation.routes.ts`: alta, actualización, desmantelamiento y borrado |
|
||
| Persistencia | `modules/assets/src/api/infrastructure/persistence/sequelize-asset.repository.ts`, `workstation-persistence.mapper.ts`, `load-workstations.ts`, `workstation-relational.ts` |
|
||
| Modelo/migración | `modules/assets/src/api/infrastructure/persistence/workstation.model.ts`: `WorkstationAssetModel`, `migrateWorkstations`; raíces leídas/escritas mediante SQL parametrizado, no `WorkstationModel` |
|
||
| Retirada de miembros compartidos | `modules/assets/src/api/infrastructure/persistence/remove-shared-workstation-assets.ts` |
|
||
| Contratos | `modules/assets/src/common/workstations.ts`, `inventory.ts` |
|
||
| Composición servidor | `modules/assets/src/api/module.ts`, `modules/companies/src/api/module.ts`, `apps/server/src/index.ts` |
|
||
| Ficha | `modules/companies/src/web/workstations/detail/ui/workstation-detail-page.tsx`, `workstation-detail-content.tsx`, `workstation-assets.tsx`, `workstation-people.tsx`, `workstation-profiles.tsx` |
|
||
| Coordinación | `modules/companies/src/web/workstations/detail/controllers/use-workstation-detail-controller.ts` |
|
||
| Cálculo de relaciones e inversa | `modules/companies/src/web/workstations/detail/helpers/workstation-relations.ts`, `person-workstations.ts` |
|
||
| Entrada de compañía | `modules/companies/src/web/companies/detail/ui/company-inventory.tsx` |
|
||
| Listado y controlador | `modules/assets/src/web/workstations/list/ui/workstations-page.tsx`, `list/controllers/use-workstations-page-controller.ts` |
|
||
| Editor | `modules/assets/src/web/workstations/shared/ui/workstation-editor-dialog.tsx`, `workstation-form.tsx`, `workstation-identity-fields.tsx`, `workstation-association-fields.tsx`, `workstation-computer-field.tsx`, `workstation-asset-fields.tsx`, `workstation-form-actions.tsx` |
|
||
| Estado y creación | `modules/assets/src/web/workstations/shared/controllers/use-workstation-form-controller.ts`, `shared/helpers/workstation-creation.ts`, `shared/workstation-name.ts` |
|
||
| Acciones | `modules/assets/src/web/workstations/shared/ui/workstation-actions.tsx`, `workstation-lifecycle-dialog.tsx` |
|
||
| Renombrado | `modules/assets/src/web/workstations/rename/ui/workstation-name-editor.tsx`, `rename/api/rename-workstation.api.ts` |
|
||
| Historial | `modules/assets/src/web/workstations/history/ui/workstation-history.tsx`, `workstation-history-dialog.tsx` |
|
||
| Cliente HTTP y claves | `modules/assets/src/web/workstations/shared/api/save-workstation.api.ts`, `modules/assets/src/web/shared/api/inventory-request.ts`, `modules/assets/src/web/shared/queries/index.ts` |
|
||
| Rutas de compañía | `modules/companies/src/web/workspace/shared/helpers/workspace-routes.ts`; selección de ficha por UUID |
|
||
| Traducciones | `modules/assets/src/common/locales/es.json`, `en.json`; claves `workstationDetail`, `workstationLifecycle`, `workstationComputer`, `workstationPerson`. Perfiles/configuraciones usan `modules/companies/src/common/locales/es.json`, `en.json` |
|
||
| Tests de dominio/UI | `modules/assets/src/api/domain/workstation.test.ts`; `modules/companies/src/web/workstations/detail/helpers/workstation-relations.test.ts`; `detail/ui/workstation-detail.test.tsx` |
|
||
| Tests de edición/alta | `modules/assets/src/web/workstations/shared/helpers/workstation-creation.test.ts`, `shared/workstation-name.test.ts`, `rename/api/rename-workstation.test.ts` |
|
||
| Integración | `apps/server/src/workstations.integration.ts`, `workstation-lifecycle.integration.ts`; no se ejecutan aquí porque requieren persistencia |
|
||
|
||
## APIs y acciones existentes
|
||
|
||
| Operación | Contrato | Efecto / exposición actual |
|
||
| --- | --- | --- |
|
||
| Consultar puesto | `GET /api/assets/:companyId` | Devuelve inventario completo con `workstations`, activos y relaciones. El controller selecciona el UUID; no se encontró GET individual del puesto |
|
||
| Crear | `POST /api/assets/:companyId/workstations` con `{values}` | 201, revisión inicial; se inicia en listado |
|
||
| Editar / renombrar / cambiar composición | `POST /api/assets/:companyId/workstations/:id/update` con `{values}` | 200; cabecera y modal; renombrado reutiliza comando de guardado |
|
||
| Desmantelar | `POST /api/assets/:companyId/workstations/:id/decommission`, body `{}` | Menú con confirmación; libera reserva, no desactiva perfiles automáticamente |
|
||
| Borrar | `POST /api/assets/:companyId/workstations/:id/delete`, body `{}` | Confirmación; retorno al listado tras éxito; puede fallar por referencias |
|
||
| Crear perfil | `POST /api/work-profiles/:companyId` | Modal separado; la ficha requiere puesto activo, ordenador presente y no retirado; aplicación valida además host, persona y cuenta |
|
||
| Software | `GET/POST /api/software-installations/:companyId`, `POST /:id/update`, `POST /:id/delete` bajo esa base | Panel filtra por ordenador principal, permite alta, edición, historial, borrado |
|
||
| Navegar | `/companies/:companyId/workstations/:id`, `/people/:id`, `/assets/:id`, `/work-profiles/:id`, `/resources/:id` | Enlaces reales; sede apunta a `/sites`, sin ficha individual de sede |
|
||
|
||
Errores HTTP de comandos de puesto: 400 para `INVALID_REQUEST`, 404 para códigos terminados en `NOT_FOUND`, 409 para otros fallos de negocio; excepciones se propagan al middleware. Autenticación y límites del aislamiento: [viabilidad](05-viabilidad-tecnica.md).
|
||
|
||
## Skills y normativa aplicadas
|
||
|
||
Se inspeccionaron las 15 carpetas de `.agents/skills/` y las 15 entradas de `skills-lock.json`. Los hashes del lock no equivalen a releases ni se verificó upstream.
|
||
|
||
| Skill leída | Criterio aplicado |
|
||
| --- | --- |
|
||
| `ux-dashboard` — principal | Empezar por preguntas operativas; priorizar y justificar cada indicador; evitar gráficos decorativos |
|
||
| `ux-tables` | Elegir tabla para comparación y lista para lectura; formatos, volumen, búsqueda y acciones accesibles; prevalece el patrón Metis de acciones visibles |
|
||
| `ux-design-review` | Unificar hallazgos por prioridad y separar evidencia estática, reproducción y pendientes |
|
||
| `shadcn` y referencias de composición/Base vs Radix | Comprobar APIs instaladas y wrappers antes de proponer componentes; `render` de Base UI, títulos y estructura semántica |
|
||
| `vercel-composition-patterns`, regla `architecture-avoid-boolean-props` | Bloques por responsabilidad y composición explícita; sin componente universal de dashboard |
|
||
| `vercel-react-best-practices`, reglas `async-parallel`, `rerender-derived-state-no-effect` | Consultas independientes, cálculo derivado sin efectos y caché remota única |
|
||
|
||
Las otras nueve skills están inventariadas, no se declara su aplicación. Faltan las skills auditoras `ux-*-audit` que referencia el orquestador y su política `docs/orchestration-policy.md`; la revisión es manual apoyada en las guías disponibles, sin auditor especializado de accesibilidad. No se instaló nada. DESIGN.md gobierna color, tipografía y espaciado; no se diseña otra identidad.
|
||
|
||
Normativa consultada: AGENTS.md, DESIGN.md, `docs/skills-frontend-ui-ux.md`, capas/composición de servidor, estructura web, rutas del cliente, componentes de interfaz, patrones de listados/diálogos, procedimiento Playwright y funcionalidades archivadas. Las referencias enlazadas en los demás documentos distinguen norma e implementación.
|
||
|
||
## Referencias de evidencia
|
||
|
||
El catálogo de fuentes con enlaces a símbolos y líneas figura a continuación. Las referencias E se utilizan en los ocho entregables; las líneas corresponden al árbol auditado y pueden cambiar con ediciones posteriores.
|
||
|
||
| Evidencia | Archivo y símbolo / línea |
|
||
| --- | --- |
|
||
| E01 | [modules/assets/src/api/domain/workstation-values.ts:3](../../../modules/assets/src/api/domain/workstation-values.ts#L3) — `WorkstationInputSchema` |
|
||
| E01 | [modules/assets/src/common/workstations.ts:19](../../../modules/assets/src/common/workstations.ts#L19) — `WorkstationSchema` |
|
||
| E02 | [modules/assets/src/api/domain/value-objects/workstation-values.vo.ts:20](../../../modules/assets/src/api/domain/value-objects/workstation-values.vo.ts#L20) — `static create` |
|
||
| E03 | [modules/assets/src/api/domain/workstation.aggregate.ts:56](../../../modules/assets/src/api/domain/workstation.aggregate.ts#L56) — `decommission(` |
|
||
| E04 | [modules/assets/src/api/application/workstation-input.mapper.ts:11](../../../modules/assets/src/api/application/workstation-input.mapper.ts#L11) — `mapWorkstationInput` |
|
||
| E05 | [modules/assets/src/api/infrastructure/persistence/workstation.model.ts:18](../../../modules/assets/src/api/infrastructure/persistence/workstation.model.ts#L18) — `migrateWorkstations` |
|
||
| E06 | [modules/assets/src/api/infrastructure/persistence/workstation-persistence.mapper.ts:79](../../../modules/assets/src/api/infrastructure/persistence/workstation-persistence.mapper.ts#L79) — `toPersistence(` |
|
||
| E06 | [modules/assets/src/api/application/workstation-response.builder.ts:4](../../../modules/assets/src/api/application/workstation-response.builder.ts#L4) — `export function` |
|
||
| E07 | [modules/assets/src/api/infrastructure/persistence/workstation-relational.ts:66](../../../modules/assets/src/api/infrastructure/persistence/workstation-relational.ts#L66) — `readWorkstations` |
|
||
| E07 | [modules/assets/src/api/infrastructure/persistence/remove-shared-workstation-assets.ts:4](../../../modules/assets/src/api/infrastructure/persistence/remove-shared-workstation-assets.ts#L4) — `removeSharedWorkstationAssets` |
|
||
| E07 | [modules/assets/src/api/infrastructure/persistence/load-workstations.ts:10](../../../modules/assets/src/api/infrastructure/persistence/load-workstations.ts#L10) — `loadWorkstations` |
|
||
| E08 | [modules/companies/src/web/workstations/detail/ui/workstation-detail-page.tsx:19](../../../modules/companies/src/web/workstations/detail/ui/workstation-detail-page.tsx#L19) — `export function` |
|
||
| E08 | [modules/companies/src/web/workstations/detail/controllers/use-workstation-detail-controller.ts:9](../../../modules/companies/src/web/workstations/detail/controllers/use-workstation-detail-controller.ts#L9) — `export function` |
|
||
| E09 | [modules/companies/src/web/workstations/detail/helpers/workstation-relations.ts:6](../../../modules/companies/src/web/workstations/detail/helpers/workstation-relations.ts#L6) — `export function` |
|
||
| E10 | [modules/companies/src/web/workstations/detail/helpers/person-workstations.ts:5](../../../modules/companies/src/web/workstations/detail/helpers/person-workstations.ts#L5) — `export function` |
|
||
| E11 | [modules/companies/src/web/workstations/detail/ui/workstation-assets.tsx:10](../../../modules/companies/src/web/workstations/detail/ui/workstation-assets.tsx#L10) — `export function` |
|
||
| E12 | [modules/companies/src/web/workstations/detail/ui/workstation-profiles.tsx:12](../../../modules/companies/src/web/workstations/detail/ui/workstation-profiles.tsx#L12) — `export function` |
|
||
| E12 | [modules/companies/src/web/workstations/detail/ui/workstation-people.tsx:9](../../../modules/companies/src/web/workstations/detail/ui/workstation-people.tsx#L9) — `export function` |
|
||
| E13 | [modules/companies/src/common/dto/shared/company.dto.ts:47](../../../modules/companies/src/common/dto/shared/company.dto.ts#L47) — `CompanySchema` |
|
||
| E13 | [modules/companies/src/common/dto/shared/people.dto.ts:55](../../../modules/companies/src/common/dto/shared/people.dto.ts#L55) — `DepartmentAssignmentSchema` |
|
||
| E14 | [modules/assets/src/api/domain/asset-values.ts:19](../../../modules/assets/src/api/domain/asset-values.ts#L19) — `AssetInputSchema` |
|
||
| E14 | [modules/assets/src/common/inventory.ts:33](../../../modules/assets/src/common/inventory.ts#L33) — `AssetSchema` |
|
||
| E14 | [modules/assets/src/api/domain/asset-state.ts:7](../../../modules/assets/src/api/domain/asset-state.ts#L7) — `assetDisplayStatus` |
|
||
| E15 | [modules/companies/src/api/domain/work-profile-values.ts:3](../../../modules/companies/src/api/domain/work-profile-values.ts#L3) — `WorkProfileInputSchema` |
|
||
| E15 | [modules/companies/src/api/application/work-profile-input.mapper.ts:10](../../../modules/companies/src/api/application/work-profile-input.mapper.ts#L10) — `profileReferencesAvailable` |
|
||
| E15 | [modules/companies/src/api/application/work-profile-response.builder.ts:7](../../../modules/companies/src/api/application/work-profile-response.builder.ts#L7) — `buildWorkProfileResponse` |
|
||
| E15 | [modules/companies/src/api/infrastructure/persistence/work-profile-migration.ts:6](../../../modules/companies/src/api/infrastructure/persistence/work-profile-migration.ts#L6) — `migrateWorkProfiles` |
|
||
| E15 | [modules/companies/src/api/infrastructure/persistence/sequelize-work-profile.repository.ts:17](../../../modules/companies/src/api/infrastructure/persistence/sequelize-work-profile.repository.ts#L17) — `class SequelizeWorkProfileRepository` |
|
||
| E16 | [modules/companies/src/api/domain/access/access-definition.ts:103](../../../modules/companies/src/api/domain/access/access-definition.ts#L103) — `AccessDefinitionSchema` |
|
||
| E16 | [modules/companies/src/api/domain/access/access-workspace.aggregate.ts:25](../../../modules/companies/src/api/domain/access/access-workspace.aggregate.ts#L25) — `class AccessWorkspace` |
|
||
| E16 | [modules/companies/src/api/infrastructure/persistence/access-persistence.ts:70](../../../modules/companies/src/api/infrastructure/persistence/access-persistence.ts#L70) — `migrateAccess` |
|
||
| E17 | [modules/companies/src/api/domain/folder-mapping-values.ts:5](../../../modules/companies/src/api/domain/folder-mapping-values.ts#L5) — `FolderMappingInputSchema` |
|
||
| E17 | [modules/companies/src/common/folder-mappings.ts:16](../../../modules/companies/src/common/folder-mappings.ts#L16) — `FolderMappingSchema` |
|
||
| E18 | [modules/companies/src/api/application/folder-mapping-policy.ts:39](../../../modules/companies/src/api/application/folder-mapping-policy.ts#L39) — `folderAvailable` |
|
||
| E18 | [modules/companies/src/api/application/folder-mapping-account-policy.ts:50](../../../modules/companies/src/api/application/folder-mapping-account-policy.ts#L50) — `folderAccountCoverage` |
|
||
| E18 | [modules/companies/src/api/domain/access/access-policy.ts:165](../../../modules/companies/src/api/domain/access/access-policy.ts#L165) — `checkCoverage` |
|
||
| E18 | [modules/companies/src/api/domain/access/access-projection.ts:302](../../../modules/companies/src/api/domain/access/access-projection.ts#L302) — `projectAccess` |
|
||
| E19 | [modules/resources/src/api/domain/resource-values.ts:21](../../../modules/resources/src/api/domain/resource-values.ts#L21) — `ResourceIntegrationSchema` |
|
||
| E19 | [modules/resources/src/common/inventory.ts:35](../../../modules/resources/src/common/inventory.ts#L35) — `ResourceSchema` |
|
||
| E19 | [modules/companies/src/api/infrastructure/persistence/resource-access-writer.ts:85](../../../modules/companies/src/api/infrastructure/persistence/resource-access-writer.ts#L85) — `async project` |
|
||
| E20 | [modules/assets/src/common/network-share-publications.ts:10](../../../modules/assets/src/common/network-share-publications.ts#L10) — `NETWORK_SHARE_PUBLICATION_DEFINITION` |
|
||
| E20 | [modules/assets/src/api/infrastructure/persistence/network-share-publication-migration.ts:4](../../../modules/assets/src/api/infrastructure/persistence/network-share-publication-migration.ts#L4) — `CREATE TABLE` |
|
||
| E20 | [modules/assets/src/api/infrastructure/http/network-share-publication.routes.ts:24](../../../modules/assets/src/api/infrastructure/http/network-share-publication.routes.ts#L24) — `registerNetworkSharePublicationRoutes` |
|
||
| E21 | [modules/companies/src/api/infrastructure/persistence/configuration-snapshots.ts:12](../../../modules/companies/src/api/infrastructure/persistence/configuration-snapshots.ts#L12) — `profileSnapshot` |
|
||
| E21 | [modules/companies/src/api/infrastructure/persistence/mail-remote-snapshots.ts:42](../../../modules/companies/src/api/infrastructure/persistence/mail-remote-snapshots.ts#L42) — `mailSnapshot` |
|
||
| E21 | [modules/companies/src/api/domain/application-configuration-values.ts:5](../../../modules/companies/src/api/domain/application-configuration-values.ts#L5) — `ApplicationConfigurationInputSchema` |
|
||
| E21 | [modules/companies/src/api/domain/printer-configuration-values.ts:5](../../../modules/companies/src/api/domain/printer-configuration-values.ts#L5) — `PrinterConfigurationInputSchema` |
|
||
| E21 | [modules/companies/src/api/domain/certificate-configuration-values.ts:5](../../../modules/companies/src/api/domain/certificate-configuration-values.ts#L5) — `CertificateConfigurationInputSchema` |
|
||
| E22 | [modules/companies/src/api/domain/remote-connection-values.ts:5](../../../modules/companies/src/api/domain/remote-connection-values.ts#L5) — `RemoteConnectionInputSchema` |
|
||
| E22 | [modules/companies/src/api/application/remote-connection-policy.ts:31](../../../modules/companies/src/api/application/remote-connection-policy.ts#L31) — `remoteNeedsReview` |
|
||
| E23 | [modules/companies/src/api/domain/telework-authorization-values.ts:3](../../../modules/companies/src/api/domain/telework-authorization-values.ts#L3) — `TeleworkAuthorizationInputSchema` |
|
||
| E23 | [modules/companies/src/api/application/telework-authorization-policy.ts:6](../../../modules/companies/src/api/application/telework-authorization-policy.ts#L6) — `teleworkAuthorizationState` |
|
||
| E24 | [modules/assets/src/common/support.ts:15](../../../modules/assets/src/common/support.ts#L15) — `SupportConnectionSchema` |
|
||
| E24 | [modules/assets/src/api/domain/support-values.ts:3](../../../modules/assets/src/api/domain/support-values.ts#L3) — `SupportValuesSchema` |
|
||
| E24 | [modules/assets/src/api/infrastructure/http/support.routes.ts:18](../../../modules/assets/src/api/infrastructure/http/support.routes.ts#L18) — `registerSupportRoutes` |
|
||
| E25 | [modules/companies/src/common/local-identity-environments.ts:18](../../../modules/companies/src/common/local-identity-environments.ts#L18) — `LocalIdentityEnvironmentSchema` |
|
||
| E25 | [modules/companies/src/api/infrastructure/persistence/local-identity-migration.ts:6](../../../modules/companies/src/api/infrastructure/persistence/local-identity-migration.ts#L6) — `CREATE TABLE` |
|
||
| E26 | [modules/assets/src/common/directory-memberships.ts:54](../../../modules/assets/src/common/directory-memberships.ts#L54) — `DirectoryMembershipSchema` |
|
||
| E26 | [modules/assets/src/api/infrastructure/http/directory-membership.routes.ts:21](../../../modules/assets/src/api/infrastructure/http/directory-membership.routes.ts#L21) — `registerDirectoryMembershipRoutes` |
|
||
| E27 | [modules/companies/src/api/domain/process-values.ts:27](../../../modules/companies/src/api/domain/process-values.ts#L27) — `ProcessReferenceSchema` |
|
||
| E27 | [modules/companies/src/api/infrastructure/http/process.routes.ts:27](../../../modules/companies/src/api/infrastructure/http/process.routes.ts#L27) — `registerProcessRoutes` |
|
||
| E27 | [docs/funcionalidades-archivadas.md:28](../../../docs/funcionalidades-archivadas.md#L28) — `## Aplicación activa` |
|
||
| E27 | [modules/companies/src/api/infrastructure/persistence/remove-archived-support-tables.ts:5](../../../modules/companies/src/api/infrastructure/persistence/remove-archived-support-tables.ts#L5) — `const` |
|
||
| E28 | [modules/companies/src/web/workstations/detail/ui/workstation-detail-content.tsx:17](../../../modules/companies/src/web/workstations/detail/ui/workstation-detail-content.tsx#L17) — `export function` |
|
||
| E28 | [modules/companies/src/web/software-installations/list/ui/software-installations-panel.tsx:26](../../../modules/companies/src/web/software-installations/list/ui/software-installations-panel.tsx#L26) — `export function` |
|
||
| E29 | [modules/assets/src/web/workstations/history/ui/workstation-history.tsx:15](../../../modules/assets/src/web/workstations/history/ui/workstation-history.tsx#L15) — `export function` |
|
||
| E30 | [modules/companies/src/web/work-environments/detail/hooks/use-environment-queries.ts:20](../../../modules/companies/src/web/work-environments/detail/hooks/use-environment-queries.ts#L20) — `export function` |
|
||
| E30 | [modules/companies/src/web/work-environments/shared/helpers/work-environment.model.ts:60](../../../modules/companies/src/web/work-environments/shared/helpers/work-environment.model.ts#L60) — `export function buildEnvironment` |
|
||
| E30 | [modules/companies/src/web/work-environments/detail/ui/environment-content.tsx:19](../../../modules/companies/src/web/work-environments/detail/ui/environment-content.tsx#L19) — `export function` |
|
||
| E31 | [packages/rdx-ui/src/components/detail-panel.tsx:6](../../../packages/rdx-ui/src/components/detail-panel.tsx#L6) — `export function` |
|
||
| E31 | [packages/rdx-ui/src/components/detail-field.tsx:4](../../../packages/rdx-ui/src/components/detail-field.tsx#L4) — `export function` |
|
||
| E31 | [packages/rdx-ui/src/components/statistic-card.tsx:19](../../../packages/rdx-ui/src/components/statistic-card.tsx#L19) — `export function` |
|
||
| E32 | [apps/web/components.json:3](../../../apps/web/components.json#L3) — `base-vega` |
|
||
| E32 | [packages/rdx-ui/src/components/entity-list.tsx:17](../../../packages/rdx-ui/src/components/entity-list.tsx#L17) — `export` |
|
||
| E32 | [packages/shadcn-ui/src/components/tabs.tsx:7](../../../packages/shadcn-ui/src/components/tabs.tsx#L7) — `function Tabs` |
|
||
| E32 | [packages/shadcn-ui/src/components/button.tsx:42](../../../packages/shadcn-ui/src/components/button.tsx#L42) — `function Button` |
|
||
| E33 | [modules/identity/src/api/infrastructure/http/require-authenticated.ts:6](../../../modules/identity/src/api/infrastructure/http/require-authenticated.ts#L6) — `export function` |
|
||
| E33 | [modules/assets/src/api/infrastructure/http/workstation.routes.ts:16](../../../modules/assets/src/api/infrastructure/http/workstation.routes.ts#L16) — `registerWorkstationRoutes` |
|
||
| E33 | [modules/assets/src/api/infrastructure/persistence/sequelize-asset.repository.ts:157](../../../modules/assets/src/api/infrastructure/persistence/sequelize-asset.repository.ts#L157) — `saveWorkstation(` |
|
||
| E34 | [apps/server/src/infrastructure/http/relationship-read-access.ts:7](../../../apps/server/src/infrastructure/http/relationship-read-access.ts#L7) — `class SessionRelationshipReadAccess` |
|
||
| E35 | [modules/assets/src/api/domain/infrastructure-values.ts:33](../../../modules/assets/src/api/domain/infrastructure-values.ts#L33) — `InfrastructureInputSchema` |
|
||
| E35 | [modules/assets/src/api/infrastructure/persistence/infrastructure-migration.ts:4](../../../modules/assets/src/api/infrastructure/persistence/infrastructure-migration.ts#L4) — `migrateInfrastructure` |
|
||
| E35 | [modules/assets/src/api/infrastructure/persistence/sequelize-infrastructure.repository.ts:21](../../../modules/assets/src/api/infrastructure/persistence/sequelize-infrastructure.repository.ts#L21) — `class SequelizeInfrastructureRepository` |
|
||
| E36 | [modules/companies/src/common/mailboxes.ts:34](../../../modules/companies/src/common/mailboxes.ts#L34) — `MailboxesResponseSchema` |
|
||
| E36 | [modules/companies/src/api/application/mail-configuration-policy.ts:5](../../../modules/companies/src/api/application/mail-configuration-policy.ts#L5) — `mailAuthorized` |
|
||
| E36 | [modules/companies/src/api/infrastructure/persistence/mailbox-migration.ts:6](../../../modules/companies/src/api/infrastructure/persistence/mailbox-migration.ts#L6) — `migrateMailboxes` |
|
||
| E37 | [apps/server/src/infrastructure/http/identity-runtime.ts:17](../../../apps/server/src/infrastructure/http/identity-runtime.ts#L17) — `createIdentityRuntime` |
|
||
| E37 | [modules/assets/src/api/module.ts:67](../../../modules/assets/src/api/module.ts#L67) — `createAssetModule` |
|
||
| E37 | [modules/companies/src/api/module.ts:99](../../../modules/companies/src/api/module.ts#L99) — `createCompanyModule` |
|