feat: Add simulation analyzer component for comprehensive performance tracking and metric calculation.

This commit is contained in:
2025-12-20 12:53:18 +05:30
parent 4c857e0ba6
commit ddf9f30a41

View File

@@ -1007,7 +1007,7 @@ function Analyzer() {
const materialFlow = calculateMaterialFlowMetricsForAsset(vehicle.modelUuid); const materialFlow = calculateMaterialFlowMetricsForAsset(vehicle.modelUuid);
const tripsCompleted = completedActionsRef.current[vehicle.modelUuid] || 0; const tripsCompleted = completedActionsRef.current[vehicle.modelUuid] || 0;
const totalLoadsDelivered = completedActionsRef.current[`${vehicle.modelUuid}_loads`] || 0; const totalLoadsDelivered = completedActionsRef.current[`${vehicle.modelUuid}_loads`] || 0;
const defects = errorCountsRef.current[`${vehicle.modelUuid}_defects`] || 0; const defects = errorCount; // Use main error count directly
const qualityMetrics = calculateQualityMetrics(vehicle.modelUuid, totalLoadsDelivered, defects); const qualityMetrics = calculateQualityMetrics(vehicle.modelUuid, totalLoadsDelivered, defects);
// Performance calculations // Performance calculations
@@ -1123,7 +1123,7 @@ function Analyzer() {
maintenanceCost: costMetrics.maintenanceCost, maintenanceCost: costMetrics.maintenanceCost,
energyCost: energyMetrics.energyCost, energyCost: energyMetrics.energyCost,
totalCost: costMetrics.totalCost, totalCost: costMetrics.totalCost,
costPerMile: actualDistance > 0 ? costMetrics.totalCost / actualDistance : 0, costPerMile: actualDistance > 0 ? costMetrics.totalCost / (actualDistance / 1609.34) : 0, // Convert meters to miles
costPerTrip: tripsCompleted > 0 ? costMetrics.totalCost / tripsCompleted : 0, costPerTrip: tripsCompleted > 0 ? costMetrics.totalCost / tripsCompleted : 0,
costPerLoad: totalLoadsDelivered > 0 ? costMetrics.totalCost / totalLoadsDelivered : 0, costPerLoad: totalLoadsDelivered > 0 ? costMetrics.totalCost / totalLoadsDelivered : 0,
roi: costMetrics.roi, roi: costMetrics.roi,
@@ -2475,6 +2475,12 @@ function Analyzer() {
completedActionsRef.current[vehicle.modelUuid] = 0; completedActionsRef.current[vehicle.modelUuid] = 0;
} }
completedActionsRef.current[vehicle.modelUuid]++; completedActionsRef.current[vehicle.modelUuid]++;
// Track loads delivered (assuming 1 load per trip for now, or use vehicle.currentLoad if available/reliable at this point)
if (!completedActionsRef.current[`${vehicle.modelUuid}_loads`]) {
completedActionsRef.current[`${vehicle.modelUuid}_loads`] = 0;
}
completedActionsRef.current[`${vehicle.modelUuid}_loads`] += 1;
} }
previousVehiclePhasesRef.current[vehicle.modelUuid] = currentPhase; previousVehiclePhasesRef.current[vehicle.modelUuid] = currentPhase;