| | |
| | | long long pairsFail = 0; |
| | | long long pairsNoResult = 0; |
| | | double yield = 0.0; // pairsPass / (pairsPass + pairsFail), 0 if denom==0 |
| | | |
| | | // Average takt time derived from glass_log.t_start/t_end (per pair, seconds) |
| | | double avgTaktSeconds = 0.0; |
| | | long long taktSamplePairs = 0; |
| | | }; |
| | | |
| | | struct ProductionAlarmSummary { |
| | |
| | | static bool GetCurrentShiftWindow(CConfiguration& config, ProductionShiftWindow& outWindow); |
| | | static bool ComputeCurrentShiftSummary(CConfiguration& config, ProductionShiftSummary& outSummary); |
| | | static void LogCurrentShiftSummary(CConfiguration& config); |
| | | }; |
| | | |
| | | // Computes "current shift" and its adjacent other shift, so UI can always show Day+Night numbers. |
| | | // - If current is Day: day=current day shift, night=previous night shift. |
| | | // - If current is Night: night=current night shift, day=previous day shift. |
| | | static bool ComputeDayNightSummaries(CConfiguration& config, ProductionShiftSummary& outDay, ProductionShiftSummary& outNight); |
| | | }; |