# Stoppages Analysis Feature

## Overview
Created a comprehensive stoppages analysis page that aggregates and displays all operational stoppages from report sheets. This provides valuable insights into operational efficiency, downtime patterns, and areas for improvement.

## Features

### ✅ **Comprehensive Data Analysis**
1. **All Stoppages**: Shows stoppages from both day and night shifts across all report sheets
2. **Detailed Information**: Displays time, reason, responsible party, and notes for each stoppage
3. **Summary Statistics**: Provides overall metrics and averages
4. **Filtering**: Multiple filter options for focused analysis
5. **Time Calculations**: Automatic time aggregation and formatting

### ✅ **Summary Statistics Dashboard**
- **Total Stoppages**: Count of all stoppage incidents
- **Total Time**: Sum of all stoppage durations
- **Sheets with Stoppages**: Number of sheets that have recorded stoppages
- **Average Stoppages per Sheet**: Mean number of stoppages per sheet
- **Average Time per Sheet**: Mean stoppage duration per sheet

### ✅ **Filter Options**
1. **Date Range**: From/To date filtering
2. **Area**: Filter by operational area
3. **Employee**: Filter by specific employee
4. **Dredger Location**: Filter by dredger location
5. **Real-time Filtering**: Immediate results update

## User Interface

### ✅ **Statistics Dashboard**
```
┌─────────────────────────────────────────────────────────────┐
│ Stoppages Summary - Overall statistics for selected period  │
├─────────────────────────────────────────────────────────────┤
│ [45]      [12:30]    [15]        [3.0]       [00:50]       │
│ Total     Total      Sheets      Avg/Sheet   Avg Time      │
│ Stoppages Time       w/Stops                 /Sheet        │
└─────────────────────────────────────────────────────────────┘
```

### ✅ **Detailed Stoppages Table**
- **Date & Shift**: When the stoppages occurred
- **Location**: Area, dredger, and reclamation locations
- **Employee**: Who reported the stoppages
- **Stoppages**: Detailed breakdown of each stoppage
- **Total Time**: Aggregated time for all stoppages in that shift

### ✅ **Mobile-Responsive Design**
- **Desktop**: Full table with detailed columns
- **Mobile**: Card-based layout with collapsible details
- **Responsive Filters**: Adapts to screen size

## Technical Implementation

### ✅ **Data Processing**
```typescript
// Process stoppages from both day and night shifts
sheets.forEach(sheet => {
  // Day shift stoppages
  if (sheet.dayShift && Array.isArray(sheet.dayShift.stoppages)) {
    const stoppages = sheet.dayShift.stoppages as StoppageEntry[];
    const totalTime = stoppages.reduce((sum, stoppage) => 
      sum + timeToMinutes(stoppage.total), 0);
    // Add to stoppagesData array
  }
  
  // Night shift stoppages (similar processing)
});
```

### ✅ **Time Calculations**
```typescript
// Convert time string to minutes for calculations
const timeToMinutes = (timeStr: string): number => {
  if (!timeStr || timeStr === '00:00') return 0;
  const [hours, minutes] = timeStr.split(':').map(Number);
  return (hours * 60) + minutes;
};

// Format minutes back to HH:MM display
const formatMinutesToTime = (minutes: number): string => {
  const hours = Math.floor(minutes / 60);
  const mins = minutes % 60;
  return `${hours.toString().padStart(2, '0')}:${mins.toString().padStart(2, '0')}`;
};
```

### ✅ **Filtering Logic**
- **Server-side**: Initial filtering by date, area, and location
- **Post-processing**: Employee filtering after data aggregation
- **URL Persistence**: Filters maintained in URL parameters
- **Real-time Updates**: Immediate filter application

## Data Structure

### ✅ **Stoppage Entry**
```typescript
interface StoppageEntry {
  id: string;
  from: string;        // Start time
  to: string;          // End time
  total: string;       // Duration (HH:MM)
  reason: string;      // Reason for stoppage
  responsible: string; // Who/what was responsible
  note: string;        // Additional notes
}
```

### ✅ **Processed Data**
```typescript
interface StoppageData {
  sheetId: number;
  date: string;
  area: string;
  dredgerLocation: string;
  reclamationLocation: string;
  shift: string;           // 'Day' or 'Night'
  employee: string;
  stoppages: StoppageEntry[];
  totalStoppageTime: number; // Total minutes
}
```

## Business Value

### ✅ **Operational Insights**
1. **Downtime Analysis**: Identify patterns in operational stoppages
2. **Efficiency Metrics**: Track overall operational efficiency
3. **Problem Areas**: Identify locations or shifts with frequent stoppages
4. **Responsibility Tracking**: See who/what causes most stoppages
5. **Trend Analysis**: Monitor improvements over time

### ✅ **Management Benefits**
1. **Performance Monitoring**: Track operational performance metrics
2. **Resource Planning**: Identify areas needing attention or resources
3. **Cost Analysis**: Understand the impact of downtime
4. **Process Improvement**: Data-driven decisions for optimization
5. **Reporting**: Comprehensive stoppage reports for stakeholders

## Use Cases

### **Operational Analysis**
1. **Daily Review**: Check yesterday's stoppages and their causes
2. **Weekly Trends**: Analyze patterns over the past week
3. **Area Comparison**: Compare stoppage rates between different areas
4. **Shift Analysis**: Compare day vs night shift performance
5. **Employee Performance**: Track individual performance metrics

### **Management Reporting**
1. **Monthly Reports**: Generate monthly stoppage summaries
2. **Efficiency Metrics**: Calculate operational efficiency percentages
3. **Cost Impact**: Estimate financial impact of stoppages
4. **Improvement Tracking**: Monitor the effectiveness of improvements
5. **Benchmarking**: Compare performance across different periods

### **Process Improvement**
1. **Root Cause Analysis**: Identify most common stoppage reasons
2. **Prevention Planning**: Plan preventive measures based on data
3. **Resource Allocation**: Allocate resources to problem areas
4. **Training Needs**: Identify training needs based on stoppage patterns
5. **Equipment Maintenance**: Schedule maintenance based on stoppage data

## Statistics Calculations

### ✅ **Summary Metrics**
- **Total Stoppages**: Sum of all individual stoppage incidents
- **Total Time**: Sum of all stoppage durations (converted to HH:MM)
- **Sheets with Stoppages**: Count of unique sheets that have stoppages
- **Average Stoppages per Sheet**: Total stoppages ÷ sheets with stoppages
- **Average Time per Sheet**: Total time ÷ sheets with stoppages

### ✅ **Time Aggregation**
- Individual stoppage times are converted to minutes for calculation
- Totals are calculated in minutes for accuracy
- Results are converted back to HH:MM format for display
- Proper handling of time across midnight boundaries

## Performance Considerations

### ✅ **Efficient Data Processing**
- Single database query to fetch all relevant sheets
- In-memory processing of JSON stoppage data
- Efficient filtering and aggregation algorithms
- Minimal data transfer with focused queries

### ✅ **Scalability**
- Indexed date fields for fast date range queries
- Efficient JSON processing for stoppage data
- Pagination could be added for very large datasets
- Caching opportunities for frequently accessed data

## Future Enhancements

### **Advanced Analytics**
1. **Charts and Graphs**: Visual representation of stoppage trends
2. **Comparative Analysis**: Compare periods, areas, or employees
3. **Predictive Analytics**: Predict potential stoppage patterns
4. **Export Functionality**: Export data to Excel or PDF
5. **Automated Alerts**: Notify when stoppages exceed thresholds

### **Enhanced Filtering**
1. **Stoppage Reason**: Filter by specific stoppage reasons
2. **Time Range**: Filter by time of day when stoppages occurred
3. **Duration Range**: Filter by stoppage duration (short vs long)
4. **Responsible Party**: Filter by who was responsible
5. **Multiple Selection**: Select multiple areas, employees, etc.

### **Integration Features**
1. **Dashboard Integration**: Add stoppage widgets to main dashboard
2. **Report Integration**: Link to related reports and sheets
3. **Notification System**: Alert management about critical stoppages
4. **API Endpoints**: Provide data for external systems
5. **Mobile App**: Dedicated mobile interface for field use

## Counted vs Uncounted Stoppages

### ✅ **Classification Logic**
- **Counted Stoppages**: Unplanned operational stoppages that impact productivity
- **Uncounted Stoppages**: Planned operational activities that don't count as downtime
  - Entries containing "Brine" in reason or notes (planned brine operations)
  - Entries containing "Change Shift" in reason or notes (planned shift changes)

### ✅ **Visual Indicators**
- **Red Background**: Counted stoppages (impact productivity)
- **Green Background**: Uncounted stoppages (planned activities)
- **Color-coded Badges**: "Counted" (red) vs "Uncounted" (green)
- **Legend**: Clear explanation of the classification system

### ✅ **Enhanced Statistics**
- **Total vs Counted**: Shows both total and counted stoppage counts
- **Time Breakdown**: Separate time calculations for counted vs uncounted
- **Percentage Analysis**: Shows what percentage of stoppages are counted
- **Averages**: Separate averages for total and counted stoppages per sheet

## Menu Integration

### ✅ **Dashboard Navigation**
- Added "Stoppages" menu item to the main navigation
- Accessible to users with auth level 2+ (management and admin)
- Clock icon for easy identification
- Consistent with other navigation items

The stoppages analysis feature provides comprehensive insights into operational efficiency and helps identify areas for improvement, making it a valuable tool for operational management and continuous improvement initiatives. The counted vs uncounted classification ensures that only genuine operational stoppages are considered in productivity metrics."