export interface TimeCompositionDatum {
  step_id: string
  step_number: number
  station_name: string
  machine_time_sec: number | null
  manual_time_sec: number | null
  waiting_time_sec: number | null
}

export interface TimeCompositionRow {
  name: string
  step_id: string
  step_number: number
  machine: number
  manual: number
  waiting: number
}

export function computeTimeComposition(data: TimeCompositionDatum[]): TimeCompositionRow[] {
  const byStep = new Map<string, TimeCompositionRow>()

  for (const d of data) {
    const existing = byStep.get(d.step_id) ?? {
      name: `#${d.step_number} ${d.station_name}`,
      step_id: d.step_id,
      step_number: d.step_number,
      machine: 0,
      manual: 0,
      waiting: 0,
    }
    existing.machine += d.machine_time_sec ?? 0
    existing.manual += d.manual_time_sec ?? 0
    existing.waiting += d.waiting_time_sec ?? 0
    byStep.set(d.step_id, existing)
  }

  return Array.from(byStep.values())
    .filter((r) => r.machine + r.manual + r.waiting > 0)
    .sort((a, b) => a.step_number - b.step_number)
}
