{title}
++ {value} +
+ {trend && trend !== 'neutral' && ( + + {trend === 'up' ? ( +{subtitle}
} ++ Dashboard de seguimiento y KPIs de avance de obra +
++ Desglose de avance por partida presupuestal +
+| + Concepto + | ++ Presupuestado + | ++ Ejecutado + | ++ % Avance + | ++ Estado + | +
|---|---|---|---|---|
|
+
+ {item.conceptoCodigo}
+
+
+ {item.conceptoNombre}
+
+ |
+ + {item.cantidadPresupuestada.toLocaleString()} {item.unidad} + | ++ {item.cantidadEjecutada.toLocaleString()} {item.unidad} + | +
+ |
+ + + {getProgressStatusLabel(status)} + + | +
Pendientes de Revision
+Avances sin revisar
+Pendientes de Aprobacion
+Avances revisados
++ {avance.concepto?.codigo || 'N/A'} - {avance.concepto?.nombre || 'Sin concepto'} +
++ Por: {avance.capturedByName} +
+ )} +Progreso capturado en las ultimas 8 semanas
+Vista de progreso por ubicacion
+Gestion de programas y actividades de construccion
+Total Programas
+{statsData.totalProgramas}
+Programas Activos
+{statsData.programasActivos}
+Avance Real Promedio
++ {statsData.avancePromedioReal.toFixed(1)}% +
+Varianza Promedio
+= 0 ? 'text-green-600' : 'text-red-600' + )} + > + {statsData.varianzaPromedio >= 0 ? '+' : ''} + {statsData.varianzaPromedio.toFixed(1)}% +
++ Codigo: {programa.codigo} | Version: {programa.version} +
+{programa.descripcion}
} + +{formatDate(programa.fechaInicio)}
+{formatDate(programa.fechaFin)}
+{programa.duracionDias} dias
+{programa.actividades?.length || 0}
+Avance Planeado
++ {lastPoint?.avancePlaneadoAcumulado.toFixed(1) || 0}% +
+Avance Real
++ {lastPoint?.avanceRealAcumulado.toFixed(1) || 0}% +
+= 0 ? 'text-green-600' : 'text-red-600')}> + Varianza +
+= 0 ? 'text-green-700' : 'text-red-700' + )} + > + {varianza >= 0 ? '+' : ''} + {varianza.toFixed(1)}% +
+{message}
+