Tasks
Ecosistema completo para organización y gestión de contenido con interfaces espaciales
Tasks - User Management Module
Convenciones y Alcance del Plan
Plan de ejecución para implementar el módulo User Management según especificaciones de requirements.md y design.md. Todas las tareas incluyen DoD verificables con comandos específicos y métricas cuantificables.
Desglose de Trabajo (WBS)
Épica 1: Infraestructura y Servicios Base
T-001: Crear Librería Angular y Estructura Base
Descripción: Configurar librería Angular con Nx, estructura de carpetas y dependencias principales.
Cobertura: Fundación para US-001 a US-008, componentes definidos en design.md
Dependencias: Ninguna
DoD Verificable:
- ✅ Librería
@gograb-space/user-managementcreada:npx nx g @nx/angular:lib user-management --directory=libs/core - ✅ Estructura de carpetas completa:
libs/core/user-management/src/lib/{components,services,models,utils} - ✅ Dependencias configuradas en project.json y package.json
- ✅ Barrel exports configurados:
export * from './lib/user-management'en index.ts - ✅ Build exitoso:
npx nx build user-management
Estimación: 1 punto | Responsable: Angular Developer
T-002: Implementar Modelos de Datos y Tipos + Integración Security
Descripción: Definir interfaces TypeScript para User, UserFilters, API responses según contratos del design.md. Integrar tipos de @libs-core/shared-models y @libs-core/security.
Cobertura: Base para US-001 a US-009, entidades definidas en DEC-001, DEC-006
Dependencias: T-001
DoD Verificable:
- ✅ Interface
UserextendiendoUserProfilede @libs-core/shared-models - ✅ Interface
UserEntityextendiendoTenantEntityde @libs-core/shared-models - ✅ Types
UserRoleusandoSystemRolesde shared-models yUserStatuscon valores específicos del módulo - ✅ Interfaces
UserFiltersextendiendoFilterCriteria,UserListResponseusandoApiResponse<T> - ✅ Request types:
CreateUserRequest,UpdateUserRequestusandoTenantEntitycomo base - ✅ Importación y uso de
Role,Permission,SystemRolesde @libs-core/shared-models (rbac domain base) - ✅ Definición de permisos específicos:
USER_PERMISSIONSconst con users:view, users:create, etc. - ✅ Uso de
UserProfilecon roles y permissions usandoRole[]yPermission[]base (sin tenantId redundante) - ✅ Uso de
SystemRolesenum para roles comunes del sistema en UI - ✅ Validación de tipos:
npx nx lint user-management - ✅ Tests unitarios para validación de tipos 100%:
npx nx test user-management --coverage
Estimación: 3 puntos | Responsable: TypeScript Developer
T-003: Implementar UserApiService
Descripción: Servicio para comunicación HTTP con endpoints de usuarios, construcción de query parameters.
Cobertura: US-001 a US-008, comunicación HTTP definida en design.md
Dependencias: T-002
DoD Verificable:
- ✅ Métodos CRUD implementados:
getUsers(),getUserById(),createUser(),updateUser(),deleteUser() - ✅ Método
updateUserStatus()ybulkOperations()implementados - ✅ Construcción de query parameters para filtros
- ✅ Manejo de errores HTTP con tipos específicos
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserApiService" - ✅ Integration tests: mínimo 8 escenarios (CRUD + errores):
npx nx test user-management --testNamePattern="UserApiService.*integration"
Estimación: 5 puntos | Responsable: Angular Developer
T-004: Implementar NGXS State + Actions + Selectors
Descripción: Implementar UserState con NGXS, Actions tipadas y Selectors para gestión de estado reactiva.
Cobertura: US-001 a US-009, estado centralizado según DEC-001, DEC-008
Dependencias: T-002, T-003
DoD Verificable:
- ✅ UserState implementado con @State decorator:
users: User[], selectedUser, loading, error, filters - ✅ UserActions implementadas: LoadUsers, LoadUsersSuccess, LoadUsersFailure, CreateUser, UpdateUser, DeleteUser, SelectUser
- ✅ UserSelectors implementados: getUsers(), getSelectedUser(), isLoading(), getError(), getFilteredUsers()
- ✅ StateModel tipado con interfaces de shared-models
- ✅ @Action handlers para todas las operaciones CRUD
- ✅ Integración con NgxsModuleBridgeService de @libs-core/module-base
- ✅ Performance: selectors memoizados, estado inmutable
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserState" - ✅ Tests de Actions: verificación de state mutations
Estimación: 8 puntos | Responsable: Angular Developer
T-005: Implementar UserEffects para Side Effects
Descripción: Implementar Effects para manejar operaciones asíncronas, HTTP calls y side effects usando NGXS Effects.
Cobertura: US-001 a US-009, effects según DEC-009
Dependencias: T-004, T-003
DoD Verificable:
- ✅ UserEffects implementado con @Injectable y createEffect
- ✅ Effects para operaciones CRUD: loadUsers$, createUser$, updateUser$, deleteUser$
- ✅ Effects para operaciones especiales: changeUserStatus$, bulkOperations$
- ✅ Error handling centralizado en todos los effects
- ✅ Logging de operaciones con @libs-core/log-system
- ✅ Emisión de eventos del sistema con @libs-core/event-system
- ✅ Integración con PermissionService para validación antes de HTTP calls
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserEffects" - ✅ Tests de effects: verificación de actions despachadas
Estimación: 7 puntos | Responsable: Angular Developer
T-005: Implementar Mock Data y API Simulada + Shared Models
Descripción: Crear datos mock completos usando shared-models y configurar API simulada para desarrollo y testing del módulo.
Cobertura: Todos los US-001 a US-009, datos de prueba realistas, integración con @libs-core/mock-api
Dependencias: T-002, T-003
DoD Verificable:
- ✅ Mock data usando tipos de shared-models:
UserconRole[],Permission[],SystemRoles - ✅ Datos realistas: mínimo 50 usuarios con roles variados (admin, user, viewer)
- ✅ Mock de
UserListResponseusandoApiResponse<T>estándar - ✅ Mock endpoints: GET /api/users, GET /api/users/:id, POST /api/users, PUT /api/users/:id, DELETE /api/users/:id
- ✅ Mock de operaciones especiales: PUT /api/users/:id/status, POST /api/users/bulk
- ✅ Simulación de errores HTTP: 400, 403, 404, 409 con mensajes realistas
- ✅ Mock de filtrado server-side: simulación de query parameters (search, roleIds, status, etc.)
- ✅ Paginación simulada con metadata: page, limit, total, hasNext
- ✅ Context-aware mocking: tenant context simulado sin tenantId redundante en modelos
- ✅ Integración con
@libs-core/mock-api: configuración correcta en module setup - ✅ Mock de permisos: simulación de validación de permisos basada en
Permission.name - ✅ Datos de auditoría: timestamps realistas, correlationIds para testing
- ✅ Tests de mock: verificación de respuestas según shared-models contracts
- ✅ Performance mock: simulación de latencia realista (100-500ms)
Estimación: 4 puntos | Responsable: Angular Developer
Épica 2: Componentes de Visualización
T-006: Implementar UserListComponent (Vista Tabla) + NGXS + Security
Descripción: Componente tabla principal conectado a NGXS store con funcionalidades completas y directivas de seguridad.
Cobertura: US-001 (AC-001), US-005 (AC-021, AC-024), US-007 (AC-032, AC-033), US-009 (AC-047)
Dependencias: T-004, T-005
DoD Verificable:
- ✅ Tabla responsive con columnas: nombre, email, rol, estado, última actividad, acciones
- ✅ Integración con NGXS Store:
store.select(UserSelectors.getUsers),store.dispatch(new UserActions.LoadUsers()) - ✅ OnPush change detection strategy implementada
- ✅ Observables para estado reactivo: users$, loading$, error$
- ✅ Directivas de seguridad implementadas: *hasPermission="'users:view'"
- ✅ Botones con protección: *hasPermission="'users:create'" para "Nuevo Usuario"
- ✅ Acciones inline con validación: *hasPermission="'users:update'" para editar
- ✅ Selección múltiple con checkboxes funcional y *hasPermission="'users:bulk'"
- ✅ Loading skeletons durante carga de datos (loading$ | async)
- ✅ Actions dispatch para todas las operaciones: crear, editar, eliminar, cambiar estado
- ✅ Tests unitarios ≥85% cobertura:
npx nx test user-management --testNamePattern="UserListComponent" - ✅ Tests NGXS: verificar actions despachadas, selectors funcionando
- ✅ E2E tests: renderizado correcto con 50+ usuarios:
npx nx e2e user-management-e2e --testNamePattern="UserListComponent.*render"
Estimación: 12 puntos | Responsable: Angular Developer
T-007: Implementar UserCardComponent (Vista Cards) + NGXS
Descripción: Componente para vista de cards conectado a NGXS con avatares y acciones rápidas.
Cobertura: US-001 (AC-002), responsive design
Dependencias: T-004, T-005, T-006
DoD Verificable:
- ✅ Card layout con avatar, datos clave y acciones implementado
- ✅ Responsive design: 1 columna (móvil), 2-3 columnas (tablet), 4+ columnas (desktop)
- ✅ Integración con NGXS: users$ observable, dispatch de actions
- ✅ Integración con UserAvatarComponent
- ✅ Acciones rápidas: dispatch UserActions.UpdateUser, UserActions.SelectUser
- ✅ Loading states reactivos (loading$ | async) y animaciones suaves
- ✅ Tests unitarios ≥85% cobertura:
npx nx test user-management --testNamePattern="UserCardComponent" - ✅ Visual regression tests: 3 breakpoints principales
Estimación: 6 puntos | Responsable: Angular Developer
T-008: Implementar UserDetailComponent (Vista Detalle) + NGXS
Descripción: Vista completa del perfil de usuario conectada a NGXS con toda la información disponible.
Cobertura: US-001 (AC-003), navegación entre vistas
Dependencias: T-004, T-005
DoD Verificable:
- ✅ Layout completo con todos los campos de User interface extendiendo UserProfile
- ✅ Integración con NGXS: selectedUser$ observable, dispatch de actions
- ✅ Navegación fluida desde lista/cards usando UserActions.SelectUser
- ✅ Botones de acción: dispatch UserActions.UpdateUser, UserActions.DeleteUser
- ✅ Información de auditoría: fechas de creación y última actividad
- ✅ Loading states y manejo de errores
- ✅ Tests unitarios ≥85% cobertura:
npx nx test user-management --testNamePattern="UserDetailComponent" - ✅ E2E test: navegación completa lista → detalle → edición
Estimación: 4 puntos | Responsable: Angular Developer
T-009: Implementar UserAvatarComponent
Descripción: Componente reutilizable para avatares con iniciales o imagen de usuario.
Cobertura: US-001, componente utilitario definido en design.md
Dependencias: T-002
DoD Verificable:
- ✅ Generación automática de iniciales desde firstName y lastName
- ✅ Soporte para imagen de usuario (URL opcional)
- ✅ Tamaños configurables: small (32px), medium (48px), large (64px)
- ✅ Colores de fondo generados por hash del nombre
- ✅ Fallback a iniciales cuando imagen falla
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserAvatarComponent"
Estimación: 3 puntos | Responsable: Angular Developer
Épica 3: Gestión CRUD
T-010: Implementar UserFormService + NGXS Integration
Descripción: Servicio para construcción y validación de formularios reactivos con integración a NGXS.
Cobertura: US-002 (AC-006, AC-007), US-003 (AC-011, AC-012), validaciones según DEC-003
Dependencias: T-002, T-003, T-004
DoD Verificable:
- ✅ FormBuilder service con validaciones: required, email format, email unique
- ✅ Métodos
createUserForm()yupdateUserForm()implementados - ✅ Integración con NGXS: subscribe a selectedUser$ para pre-llenar formularios
- ✅ Validaciones asíncronas para email único usando UserApiService
- ✅ Transformación de datos para API (CreateUserRequest, UpdateUserRequest)
- ✅ Dispatch de actions: UserActions.CreateUser, UserActions.UpdateUser desde formularios
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserFormService" - ✅ Integration tests: validación con 10+ escenarios
- ✅ Tests NGXS: verificar dispatch de actions correctas
Estimación: 6 puntos | Responsable: Angular Developer
T-010: Implementar UserFormComponent
Descripción: Componente de formulario para crear y editar usuarios con validación en tiempo real.
Cobertura: US-002 (AC-006-AC-010), US-003 (AC-011-AC-015)
Dependencias: T-009
DoD Verificable:
- ✅ Formulario reactivo con todos los campos requeridos
- ✅ Validación en tiempo real con mensajes específicos
- ✅ Modo creación y edición en mismo componente
- ✅ Dropdown de roles integrado con datos del sistema
- ✅ Confirmación antes de envío y feedback visual
- ✅ Optimistic updates para modo edición según DEC-004
- ✅ Tests unitarios ≥85% cobertura:
npx nx test user-management --testNamePattern="UserFormComponent" - ✅ E2E tests: flujos completos crear y editar usuario
Estimación: 8 puntos | Responsable: Angular Developer
T-011: Implementar UserDeleteConfirmComponent
Descripción: Modal de confirmación para eliminación segura de usuarios con opciones desactivar/eliminar.
Cobertura: US-004 (AC-016-AC-020)
Dependencias: T-003, T-004
DoD Verificable:
- ✅ Modal con opciones "Desactivar" y "Eliminar" claramente diferenciadas
- ✅ Validación de dependencias antes de mostrar opciones
- ✅ Información sobre consecuencias de cada acción
- ✅ Confirmación explícita con checkbox "Entiendo las consecuencias"
- ✅ Integración con UserStateService para actualización de lista
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserDeleteConfirmComponent" - ✅ E2E tests: flujos de eliminación y desactivación
Estimación: 5 puntos | Responsable: Angular Developer
Épica 4: Búsqueda y Filtrado
T-012: Implementar UserFilterService
Descripción: Servicio para gestión de filtros, construcción de query parameters y persistencia de sesión.
Cobertura: US-006 (AC-026-AC-031), filtrado según DEC-002
Dependencias: T-002
DoD Verificable:
- ✅ Gestión de filtros activos con Signals:
activeFilters(),isFiltered() - ✅ Construcción de query parameters para API
- ✅ Persistencia en sessionStorage con key
user-management-filters - ✅ Métodos:
addFilter(),removeFilter(),clearFilters(),restoreFilters() - ✅ Debounce de 300ms para filtros de texto
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserFilterService" - ✅ Tests de persistencia: filtros se mantienen tras reload
Estimación: 4 puntos | Responsable: Angular Developer
T-013: Implementar UserFiltersComponent
Descripción: Panel de filtros con búsqueda, filtros por rol/estado y chips de filtros activos.
Cobertura: US-006 (AC-026-AC-031)
Dependencias: T-012
DoD Verificable:
- ✅ Barra de búsqueda con debounce implementado
- ✅ Filtros por rol (múltiple selección) y estado (múltiple selección)
- ✅ Date pickers para rango de fechas de creación
- ✅ Chips de filtros activos con opción de remover individual
- ✅ Botón "Limpiar filtros" cuando hay filtros activos
- ✅ Integración con UserFilterService y UserApiService
- ✅ Tests unitarios ≥85% cobertura:
npx nx test user-management --testNamePattern="UserFiltersComponent" - ✅ E2E tests: aplicación y combinación de filtros
Estimación: 6 puntos | Responsable: Angular Developer
Épica 5: Operaciones Masivas
T-014: Implementar UserBulkActionsComponent
Descripción: Barra de acciones masivas con selección múltiple y feedback de progreso.
Cobertura: US-007 (AC-032-AC-037), procesamiento según DEC-005
Dependencias: T-003, T-004
DoD Verificable:
- ✅ Barra que aparece cuando hay usuarios seleccionados
- ✅ Acciones: cambiar rol batch, activar/desactivar múltiple, eliminar múltiple
- ✅ Progreso visual para operaciones largas (progress bar + contador)
- ✅ Procesamiento secuencial con manejo granular de errores
- ✅ Confirmación detallada antes de operaciones destructivas
- ✅ Resumen final con éxitos/errores por operación
- ✅ Tests unitarios ≥85% cobertura:
npx nx test user-management --testNamePattern="UserBulkActionsComponent" - ✅ Performance test: 50+ operaciones simultáneas <30s
Estimación: 8 puntos | Responsable: Angular Developer
T-015: Implementar UserStatusToggleComponent
Descripción: Control inline para cambio rápido de estado de usuario con optimistic updates.
Cobertura: US-005 (AC-021-AC-025), optimistic updates según DEC-004
Dependencias: T-003, T-004
DoD Verificable:
- ✅ Toggle switch para activo/inactivo directamente en lista
- ✅ Confirmación modal solo para suspensión y cambios críticos
- ✅ Indicadores visuales claros del estado actual (colores + iconos)
- ✅ Optimistic updates con rollback automático en error
- ✅ Loading state durante cambio de estado
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="UserStatusToggleComponent" - ✅ Tests de rollback: verificar estado original tras error
Estimación: 4 puntos | Responsable: Angular Developer
Épica 6: Roles y Configuración
T-016: Implementar RoleSelectorComponent
Descripción: Componente dropdown para selección y visualización de roles con permisos asociados.
Cobertura: US-008 (AC-038-AC-042)
Dependencias: T-002
DoD Verificable:
- ✅ Dropdown con roles: Admin, User, Viewer
- ✅ Visualización de permisos asociados a cada rol (tooltip/panel)
- ✅ Indicación visual del rol actual en todas las vistas
- ✅ Validación de permisos del usuario para cambio de roles
- ✅ Integración con UserFormComponent y UserListComponent
- ✅ Tests unitarios ≥90% cobertura:
npx nx test user-management --testNamePattern="RoleSelectorComponent"
Estimación: 3 puntos | Responsable: Angular Developer
T-017: Integrar Sistema de Eventos
Descripción: Emisión de eventos del sistema para todas las operaciones CRUD y cambios de estado.
Cobertura: Observabilidad NFR-003, eventos definidos en design.md
Dependencias: T-003, T-004
DoD Verificable:
- ✅ Eventos emitidos: USER_CREATED, USER_UPDATED, USER_DELETED, USER_STATUS_CHANGED, USER_ROLE_CHANGED, BULK_OPERATION_COMPLETED
- ✅ Payload de eventos con contexto completo: userId, changes, timestamp, correlationId
- ✅ Integración con @libs-core/event-system
- ✅ Logs automáticos de eventos críticos con @libs-core/log-system
- ✅ Tests de eventos: verificación de emisión en 15+ escenarios
Estimación: 3 puntos | Responsable: Angular Developer
Épica 7: Testing y Quality Gates
T-018: Testing Unitario Completo
Descripción: Suite completa de tests unitarios para todos los componentes y servicios.
Cobertura: Todos los US-001 a US-008, calidad del código
Dependencias: T-001 a T-017
DoD Verificable:
- ✅ Cobertura ≥90% en todos los archivos:
npx nx test user-management --coverage - ✅ Tests para todos los servicios: UserApiService, UserStateService, UserFormService, UserFilterService
- ✅ Tests para todos los componentes: UserList, UserCard, UserDetail, UserForm, UserFilters, UserBulkActions
- ✅ Tests de utilidades: UserAvatar, UserStatusToggle, RoleSelector
- ✅ Mocks apropiados para dependencias externas
- ✅ Tests de edge cases y manejo de errores ≥20 escenarios
Estimación: 10 puntos | Responsable: QA Engineer + Angular Developer
T-019: Testing de Integración
Descripción: Tests de integración para flujos completos y comunicación entre componentes.
Cobertura: Flujos de US-001 a US-008, integration testing
Dependencias: T-018
DoD Verificable:
- ✅ Integration tests para flujos CRUD completos: create → read → update → delete
- ✅ Tests de comunicación: componente → servicio → API → estado
- ✅ Tests de filtrado: aplicación, combinación, persistencia
- ✅ Tests de operaciones masivas: selección → acción → resultado
- ✅ Tests con mock-api: respuestas realistas y casos de error
- ✅ Ejecución exitosa:
npx nx test user-management --testNamePattern="integration"
Estimación: 8 puntos | Responsable: QA Engineer
T-020: Testing E2E y Performance
Descripción: Tests end-to-end para flujos críticos de usuario y validación de performance.
Cobertura: User journeys completos, NFR-001 performance
Dependencias: T-019
DoD Verificable:
- ✅ E2E tests para user journeys: gestión completa de usuarios
- ✅ Tests de performance: carga de lista <500ms con 100+ usuarios
- ✅ Tests responsive: 3 breakpoints principales (móvil, tablet, desktop)
- ✅ Tests de accesibilidad: cumplimiento WCAG AA básico
- ✅ Tests cross-browser: Chrome, Firefox, Safari
- ✅ Ejecución exitosa:
npx nx e2e user-management-e2e
Estimación: 12 puntos | Responsable: QA Engineer
Secuenciación y Hitos
Milestone M1: Infraestructura (Semana 1-2)
- Tareas: T-001, T-002, T-003, T-004, T-005
- Criterio Verificable:
npx nx build user-management && npx nx test user-management --coverage - Entregable: Servicios base funcionales con ≥85% cobertura y mock API completamente configurada
Milestone M2: Visualización (Semana 3-4)
- Tareas: T-006, T-007, T-008, T-009, T-010
- Criterio Verificable:
npx nx serve demo-appcon componentes de visualización integrados - Entregable: Vistas de usuarios completas y funcionales
Milestone M3: CRUD Operations (Semana 5-6)
- Tareas: T-011, T-012, T-013
- Criterio Verificable: Flujos crear/editar/eliminar funcionando end-to-end
- Entregable: Gestión CRUD completa
Milestone M4: Filtrado y Operaciones (Semana 7-8)
- Tareas: T-014, T-015, T-016, T-017
- Criterio Verificable: Filtrado y operaciones masivas funcionando con performance adecuada
- Entregable: Funcionalidades avanzadas operativas
Milestone M5: Finalización (Semana 9-10)
- Tareas: T-018, T-019, T-020, T-021, T-022, T-023
- Criterio Verificable:
npx nx run-many -t lint,test,build,e2e --projects=user-management* - Entregable: Módulo completo, testado y documentado
Quality Gates Automatizables
Build Quality Gate
npx nx lint user-management --fix=false
npx nx build user-management --optimization=true
npx nx test user-management --coverage --coverageThreshold=90
Integration Quality Gate
npx nx test user-management --testNamePattern="integration" --coverage
npx nx e2e user-management-e2e --browser=chromium
Performance Quality Gate
npx nx test user-management --testNamePattern="performance"
# Lista de usuarios <500ms con 100+ items
# Filtrado <200ms
# Operaciones CRUD individuales <300ms
Security Quality Gate
npx nx lint user-management --config=security-rules
# Validación de no hardcoded secrets
# Verificación de sanitización de inputs
# Validación de tipos estrictos (no any)
Riesgos Operativos y Plan de Rollback
Riesgo RO-001: Performance degradada con datasets grandes
Plan de Rollback: Implementar paginación más agresiva, virtual scrolling emergency
Trigger: Tiempo de carga >1s con 200+ usuarios
Comando Verificación: npx nx test user-management --testNamePattern="performance.*large-dataset"
Riesgo RO-002: Incompatibilidad con librerías core
Plan de Rollback: Versiones específicas en package.json, polyfills necesarios
Trigger: Build failures o runtime errors en integración
Comando Verificación: npx nx build user-management && npx nx build demo-app
Riesgo RO-003: Memory leaks en operaciones masivas
Plan de Rollback: Procesamiento por lotes más pequeños, cleanup explícito
Trigger: Uso de memoria >100MB durante operaciones batch
Comando Verificación: npx nx test user-management --testNamePattern="memory.*bulk"
Épica 8: Integración de Shared Models y Guards de Seguridad
T-021: Implementar Rutas con Guards de Seguridad + Shared Models
Descripción: Configurar rutas del módulo con guards de seguridad y usar modelos compartidos apropiados.
Cobertura: US-009 (AC-046), protección de rutas según DEC-007, uso de @libs-core/shared-models
Dependencias: T-001, T-002
DoD Verificable:
- ✅ Archivo de rutas
user-management.routes.tscreado - ✅ Importaciones correctas de @libs-core/shared-models:
UserProfile,TenantEntity,ApiResponse,Role,Permission - ✅ Guards aplicados:
authGuarden todas las rutas - ✅
modulePermissionGuard('user-management')en ruta raíz - ✅
permissionGuard(['users:create'])en ruta de creación usando Permission.name format - ✅
permissionGuard(['users:update'])en ruta de edición usando Permission.name format - ✅
permissionGuard(['users:delete'])en ruta de eliminación usando Permission.name format - ✅ Resolvers usando tipos de shared-models para consistencia de datos
- ✅ Tests de guards: verificación de acceso condicional con Role y Permission
- ✅ E2E tests: navegación protegida por permisos basados en shared-models
Estimación: 5 puntos | Responsable: Angular Developer
Checklist de Integración con Shared Models
Verificación de Uso de @libs-core/shared-models
# Verificar que se usen tipos base apropiados
npx nx lint user-management --fix=false
grep -r "UserProfile\\|TenantEntity\\|ApiResponse" libs/core/user-management/src
# Verificar que no se dupliquen tipos ya existentes
npx nx test user-management --testNamePattern="no.*duplicate.*shared-models"
Tipos que DEBEN usarse de shared-models:
UserProfilecomo base para User interface (incluye roles: Role[], permissions: Permission[])TenantEntitypara entidades que pertenecen a tenantBaseEntity,AuditableEntitypara entidades base con auditoríaApiResponse<T>para respuestas de API estandarizadasFilterCriteriacomo base para filtros con field, operator, valueRolede RBAC domain (con id, tenantId, name, permissions[], isSystemRole, etc.)Permissionde RBAC domain (con id, tenantId, name, resource, action, etc.)
Tipos que PUEDEN definirse localmente:
UserStatus(específico del módulo: 'active' | 'inactive' | 'suspended' | 'pending')UserRole(si se necesita un enum simple diferente a Role entity de RBAC)- Interfaces específicas del módulo que extienden pero no duplican shared-models
- Types de request/response específicos del módulo user-management
Arquitectura NGXS Implementada
Estado del Módulo User Management
// UserStateModel
interface UserStateModel {
users: User[];
selectedUser: User | null;
loading: boolean;
error: string | null;
filters: UserFilters;
bulkSelection: string[];
permissions: UserPermissions;
}
Actions Principales
- Load Operations: LoadUsers, LoadUsersSuccess, LoadUsersFailure
- CRUD Operations: CreateUser, UpdateUser, DeleteUser, ChangeUserStatus
- Selection: SelectUser, ClearSelection
- Bulk Operations: SelectMultipleUsers, BulkUpdateUsers, BulkDeleteUsers
- Filters: SetFilters, ClearFilters
- Permissions: RefreshPermissions
Selectors Tipados
UserSelectors.getUsers()- Lista filtrada de usuariosUserSelectors.getSelectedUser()- Usuario seleccionado actualUserSelectors.isLoading()- Estado de cargaUserSelectors.getError()- Errores actualesUserSelectors.getFilters()- Filtros aplicadosUserSelectors.canPerformAction(action)- Validación de permisos
Effects para Side Effects
- HTTP Operations: loadUsers$, createUser$, updateUser$, deleteUser$
- Permission Validation: validatePermissionBeforeAction$
- Logging: logUserOperation$
- Events: emitUserEvent$
Total Estimación: 119 puntos (+4 por Mock API + 12 por NGXS) Duración Estimada: 11 semanas (2 desarrolladores + 1 QA) Dependencia Crítica: @gograb-space core libraries, @libs-core/shared-models, @libs-core/mock-api, @ngxs/store