erp-construccion/docs/02-definicion-modulos/MAI-002-proyectos-estructura/historias-usuario/US-PROJ-007-asignacion-equipo.md

6.1 KiB

US-PROJ-007: Asignación de Equipo al Proyecto

Épica: MAI-002 - Proyectos y Estructura de Obra Sprint: Sprint 6 Story Points: 4 SP Prioridad: P1 (Alta) Estimación: 2 días


Historia de Usuario

Como Director de Proyectos Quiero asignar miembros del equipo al proyecto con sus roles y porcentaje de dedicación Para organizar las responsabilidades y controlar la carga de trabajo de cada persona


Criterios de Aceptación

AC1: Dashboard de Equipo

Dado que accedo a tab "Equipo" del proyecto Entonces veo:

┌────────────────────────────────────────────────┐
│ Equipo del Proyecto  (7 miembros)  [+ Agregar]│
├────────────────────────────────────────────────┤
│                                                │
│ 👑 Director (1)                                │
│   • Juan Pérez ⭐ Principal                     │
│     100% dedicación                            │
│     Desde: 01/09/2025                          │
│                                                │
│ 🏗️ Residentes (2)                              │
│   • María López ⭐ Principal                    │
│     100% dedicación                            │
│   • Carlos Ruiz (Suplente)                     │
│     50% dedicación                             │
│                                                │
│ 🔧 Ingenieros (3)                               │
│   • Ana Torres - Estructural                   │
│     25% dedicación                             │
│   • Luis Gómez - Instalaciones                 │
│     25% dedicación                             │
│   • Pedro Sánchez - Costos                     │
│     50% dedicación                             │
│                                                │
│ 📦 Gerente de Compras (1)                      │
│   • Sofia Ramírez                              │
│     25% dedicación (atiende 8 proyectos)       │
│                                                │
└────────────────────────────────────────────────┘

AC2: Agregar Miembro al Equipo

Formulario:

  • Usuario: [Buscar usuario ▼]
  • Rol: Director / Residente / Ingeniero / Supervisor / Gerente Compras
  • Especialidad (si es Ingeniero): Estructural / Instalaciones / Eléctrico / Costos
  • Es principal: ☑ (solo 1 por rol Director/Residente)
  • Dedicación: [100] % (rango: 1-100)
  • Fecha inicio: [15/11/2025]
  • Fecha fin: [//____] (opcional, dejar vacío si es indefinida)
  • Responsabilidades: [Textarea con lista]

Validaciones:

  1. Workload límites:

    • Director: max 500% (5 proyectos a 100%)
    • Residente: max 200% (2 proyectos a 100%)
    • Ingeniero: max 800% (8 proyectos)
    • Supervisor: max 100% (1 proyecto)
  2. Solo un principal:

    • Si intento marcar Director como principal y ya existe otro principal
    • Error: "Ya existe un Director principal (Juan Pérez)"
  3. Validar workload disponible:

    • Si usuario tiene 450% ya asignado (Director)
    • Intento asignar 100% más
    • Error: "Usuario ya tiene 450% de carga. Límite: 500%. Solo puede asignar 50% adicional"

AC3: Visualización de Carga de Trabajo

Dado que selecciono un usuario Entonces veo resumen:

Usuario: Juan Pérez (Director)

Carga total: 450% / 500% ───────────▓▓▓▓▓▓▓▓▓░─ 90%
                                    ⚠️ Cerca del límite

Proyectos asignados:
  • Fraccionamiento Los Pinos - 100% (Principal)
  • Conjunto Jardines - 100%
  • Torre Central - 100%
  • Residencial Vista - 100%
  • Plaza Comercial - 50%

Disponible para asignar: 50%

Indicadores:

  • 🟢 Verde: 0-70% de límite
  • 🟡 Amarillo: 70-90%
  • 🔴 Rojo: 90-100%

AC4: Editar/Desactivar Asignación

Editar:

  • Cambiar porcentaje de dedicación
  • Actualizar especialidad
  • Modificar responsabilidades
  • NO se puede cambiar de rol (eliminar y crear nueva)

Desactivar:

  • Botón "Terminar Asignación"
  • Pedir fecha de fin
  • Marca isActive = false
  • Usuario sale del dashboard de equipo activo

AC5: Permisos

Solo Director y Admin pueden:

  • Agregar miembros
  • Editar asignaciones
  • Desactivar asignaciones

Todos pueden:

  • Ver equipo del proyecto

Escenarios de Prueba

Escenario 1: Asignar Director principal Given proyecto sin Director When asigno Juan Pérez como Director principal al 100% Then asignación se crea exitosamente And aparece en dashboard con badge "Principal"

Escenario 2: Validación de límite de workload Given Juan Pérez (Director) tiene 480% asignado When intento asignar 50% adicional Then sistema permite (total: 530% está dentro de límite) When intento asignar 100% Then sistema bloquea: "Excede límite de 500%"

Escenario 3: Cambio de residente principal Given María es Residente principal When marco a Carlos como principal Then sistema desmarca a María automáticamente And Carlos queda como nuevo principal


Definición de Done

  • Dashboard de equipo funcional
  • Formulario de asignación con validaciones
  • Cálculo de workload en tiempo real
  • Validación de límites por rol
  • Solo un principal por Director/Residente
  • Indicadores visuales de carga
  • Desactivación de asignaciones
  • Tests de validación de workload
  • Permisos por rol implementados

Notas Técnicas

Endpoints:

POST   /api/projects/:projectId/team
GET    /api/projects/:projectId/team
GET    /api/projects/:projectId/team/dashboard
PUT    /api/team-assignments/:id
PUT    /api/team-assignments/:id/deactivate
GET    /api/users/:userId/workload

Función SQL:

SELECT get_user_total_workload('userId', 'constructoraId');
-- Retorna: INTEGER (% total)

Estado: Ready for Development