workspace-v1/projects/erp-construccion/docs/02-definicion-modulos/MAI-005-control-obra-avances/historias-usuario/US-PROG-004-aprobar-avances.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

16 KiB

US-PROG-004: Aprobar Avances con Flujo de Validación

Épica: MAI-005 - Control de Obra y Avances Sprint: 16 Story Points: 5 Prioridad: Alta Asignado a: Backend + Frontend


Historia de Usuario

Como Jefe de Proyecto Quiero revisar y aprobar los avances reportados por los residentes de obra Para asegurar que los datos reflejen el estado real del proyecto antes de actualizar la Curva S


Criterios de Aceptación

1. Panel de Aprobaciones Pendientes

  • Puedo ver lista de registros de avance pendientes de aprobación
  • Para cada registro veo:
    • Código: AVN-2025-00123
    • Fecha de registro
    • Actividad: ACT-025 - Cimentación
    • Registrado por: Juan Pérez (Residente)
    • % Anterior → % Actual: 45% → 70% (+25%)
    • Cantidad: 225 m³ → 350 m³ (+125 m³)
    • Cuadrilla: Cimiento 1
    • Horas-hombre: 16 hrs
    • Fotos: 3
    • Ubicación: 📍 Dentro del sitio
  • Puedo filtrar por:
    • Proyecto
    • Fecha (rango)
    • Actividad
    • Residente que registró
  • Puedo ordenar por fecha, actividad, % de avance

2. Revisar Detalle del Registro

  • Puedo hacer clic en un registro para ver detalle completo
  • Veo información ampliada:
    • Comparativo visual: antes vs después
    • Gráfica de barras mostrando incremento
    • Mapa con ubicación GPS del registro
    • Galería de fotos con zoom
    • Metadatos EXIF de cada foto
    • Notas y observaciones del residente
  • Puedo ver historial de avances anteriores de la misma actividad

3. Validaciones Automáticas

  • El sistema muestra alertas automáticas si detecta:
    • ⚠️ Incremento > 20% en un día (inusual)
    • ⚠️ Avance reportado fuera del horario laboral
    • ⚠️ Geolocalización fuera del radio del proyecto
    • ⚠️ No hay fotos adjuntas (si son requeridas)
    • ⚠️ Cantidad excede lo presupuestado
  • Las alertas son advertencias, no bloqueos (puedo aprobar de todas formas)

4. Aprobar Registro

  • Puedo hacer clic en botón "Aprobar"
  • Puedo agregar notas de aprobación (opcional)
  • Al aprobar:
    • El registro cambia de estado: submitted → approved
    • Se actualiza el % de la actividad en el programa de obra
    • Se actualiza el avance de la unidad (si aplica)
    • Se recalcula la Curva S automáticamente
    • Se genera snapshot nuevo si es necesario
    • El residente recibe notificación de aprobación
  • Veo confirmación: "Avance aprobado correctamente"

5. Rechazar Registro

  • Puedo hacer clic en botón "Rechazar"
  • DEBO especificar motivo de rechazo (obligatorio)
    Motivos predefinidos:
    - Cantidad inconsistente con fotos
    - Ubicación incorrecta
    - Falta evidencia fotográfica
    - Incremento poco realista
    - Otro (especificar)
    
  • Puedo agregar notas adicionales
  • Al rechazar:
    • El registro cambia de estado: submitted → rejected
    • El residente recibe notificación con el motivo
    • El registro NO actualiza la actividad ni la Curva S
    • El residente puede corregir y reenviar

6. Aprobación Masiva

  • Puedo seleccionar múltiples registros (checkboxes)
  • Puedo hacer clic en "Aprobar Seleccionados"
  • Veo confirmación: "¿Aprobar 5 registros seleccionados?"
  • Al confirmar, todos se aprueban en batch
  • Veo resultado: "5 de 5 registros aprobados exitosamente"
  • Si alguno falla, veo detalle del error

7. Flujo de Aprobación Multi-nivel

  • Si el monto del avance excede umbral ($50,000), requiere 2 aprobaciones:
    • Nivel 1: Residente → Aprueba
    • Nivel 2: Jefe de Proyecto → Aprueba final
  • Puedo ver en qué nivel de aprobación está cada registro
  • Recibo notificaciones cuando me toca aprobar un nivel

Mockup / Wireframe

┌──────────────────────────────────────────────────────────────────────────┐
│ ✓ Aprobación de Avances - Fracc. Los Pinos                              │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│ Pendientes de Aprobación: 8                                              │
│                                                                           │
│ Filtros: [Todos ▼] [Última semana ▼] [Buscar actividad...]              │
│                                                                           │
│ [□] Seleccionar todos   [Aprobar Seleccionados]                          │
│                                                                           │
│ ┌────────────────────────────────────────────────────────────────────┐   │
│ │[□] AVN-2025-00123  │  15/Ene/25 14:30  │  Juan Pérez (Residente)  │   │
│ │    ACT-025: Cimentación Tipo 1                                     │   │
│ │    45% → 70% (+25%)  |  225 m³ → 350 m³  |  📷 3 fotos  |  📍 OK   │   │
│ │    Cuadrilla: Cimiento 1  |  16 hrs-hombre                         │   │
│ │    ⚠️ Incremento alto (+25% en 1 día)                              │   │
│ │                                                                     │   │
│ │    [Ver Detalle]  [✓ Aprobar]  [✗ Rechazar]                        │   │
│ └────────────────────────────────────────────────────────────────────┘   │
│                                                                           │
│ ┌────────────────────────────────────────────────────────────────────┐   │
│ │[□] AVN-2025-00124  │  15/Ene/25 16:45  │  María González          │   │
│ │    ACT-027: Estructura Tipo 2                                      │   │
│ │    30% → 55% (+25%)  |  150 m³ → 275 m³  |  📷 5 fotos  |  📍 OK   │   │
│ │    Cuadrilla: Estructura 2  |  24 hrs-hombre                       │   │
│ │                                                                     │   │
│ │    [Ver Detalle]  [✓ Aprobar]  [✗ Rechazar]                        │   │
│ └────────────────────────────────────────────────────────────────────┘   │
│                                                                           │
│ ...más registros...                                                       │
│                                                                           │
└──────────────────────────────────────────────────────────────────────────┘

Detalle del Registro:
┌──────────────────────────────────────────────────────────────────────────┐
│ ◀ Volver              Detalle de Avance AVN-2025-00123                   │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│ ┌─ Información General ─────────────────────────────────────────────┐    │
│ │ Actividad: ACT-025 - Cimentación Tipo 1                           │    │
│ │ Partida: 02.01.03 - Cimentación con concreto f'c=250              │    │
│ │ Registrado por: Juan Pérez (Residente)                            │    │
│ │ Fecha: 15/Ene/2025 14:30                                           │    │
│ │ Vía: App Móvil (iPhone 14 Pro)                                    │    │
│ └────────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│ ┌─ Avance Reportado ────────────────────────────────────────────────┐    │
│ │                                                                    │    │
│ │ Anterior:  45%  (225 m³)    ░░░░░░░░░░                            │    │
│ │ Actual:    70%  (350 m³)    ████████████████                      │    │
│ │ Incremento: +25% (+125 m³)  ████████                              │    │
│ │                                                                    │    │
│ │ Presupuestado: 500 m³       Ejecutado: 70%                        │    │
│ │                                                                    │    │
│ │ ⚠️ Incremento de 25% en un solo día es inusualmente alto          │    │
│ └────────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│ ┌─ Recursos ────────────────────────────────────────────────────────┐    │
│ │ Cuadrilla: Cimiento 1 (8 trabajadores)                            │    │
│ │ Horas-Hombre: 16 hrs                                               │    │
│ │ Productividad: 7.8 m³/hr (vs 6.5 m³/hr planificado) ✓             │    │
│ └────────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│ ┌─ Evidencias Fotográficas (3) ─────────────────────────────────────┐    │
│ │ [🖼️ Foto 1]  [🖼️ Foto 2]  [🖼️ Foto 3]                             │    │
│ │ 14:30        14:35        14:42                                    │    │
│ │ GPS ✓        GPS ✓        GPS ✓                                    │    │
│ └────────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│ ┌─ Geolocalización ─────────────────────────────────────────────────┐    │
│ │ 📍 19.4326, -99.1332                                               │    │
│ │ Precisión: 5 metros                                                │    │
│ │ Distancia del sitio: 125 metros ✓ Dentro del radio                │    │
│ │                                                                    │    │
│ │ [Ver en Mapa]                                                      │    │
│ └────────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│ ┌─ Notas del Residente ─────────────────────────────────────────────┐    │
│ │ Se completó cimentación de lotes 23-25. Buen rendimiento de la    │    │
│ │ cuadrilla. Clima favorable.                                        │    │
│ └────────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│ Notas de Aprobación (opcional):                                          │
│ ┌────────────────────────────────────────────────────────────────────┐   │
│ │ _____________________________________________________________      │   │
│ │                                                                    │   │
│ └────────────────────────────────────────────────────────────────────┘   │
│                                                                           │
│                                       [✗ Rechazar]  [✓ Aprobar]          │
└──────────────────────────────────────────────────────────────────────────┘

Flujo de Aprobación

1. RESIDENTE REGISTRA AVANCE
   ↓
   Estado: submitted
   ↓
   Notificación al Jefe de Proyecto

2. JEFE DE PROYECTO REVISA
   ↓
   Abre panel de aprobaciones
   ↓
   Ve lista de pendientes

3. ABRE DETALLE
   ↓
   Revisa:
   - % y cantidades
   - Fotos
   - Geolocalización
   - Alertas del sistema

4. DECISIÓN
   ↓
   ┌─────────────┬─────────────┐
   │   APROBAR   │  RECHAZAR   │
   └─────────────┴─────────────┘
        │              │
        ↓              ↓
   Estado:        Estado:
   approved       rejected
        │              │
        ↓              ↓
   Actualiza:     Notifica:
   - Actividad    - Residente
   - Curva S      - Con motivo
   - Unit Progress
        │              │
        ↓              ↓
   Notifica:      Residente puede
   - Residente    corregir y
   - Equipo       reenviar

Endpoints Necesarios

GET    /api/progress/projects/:projectId/pending-approvals
GET    /api/progress/records/:id
POST   /api/progress/records/:id/approve
POST   /api/progress/records/:id/reject
POST   /api/progress/records/batch-approve
GET    /api/progress/records/:id/history

Definición de "Done"

  • Panel de aprobaciones pendientes funcional
  • Vista de detalle con toda la información
  • Validaciones automáticas implementadas
  • Flujo de aprobación y rechazo completo
  • Aprobación masiva funcional
  • Notificaciones enviadas correctamente
  • Actualización de Curva S tras aprobación
  • Tests unitarios >80%
  • Aprobado por Product Owner

Estimación: 5 Story Points Dependencias: US-PROG-003 Fecha: 2025-11-17