/**
 * ISO-8601 calendar week (Thursday rule), UTC-based.
 * Single source — vorher 3× dupliziert (oee-form-constants, oee-trend-charts,
 * verlustanalyse-client). Redundanz-Audit KAR-704 / O6.
 */
export function isoWeek(date: Date): number {
  const d = new Date(date.getTime())
  const dayNum = d.getUTCDay() || 7
  d.setUTCDate(d.getUTCDate() + 4 - dayNum)
  const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))
  return Math.ceil((((d.getTime() - yearStart.getTime()) / 86400000) + 1) / 7)
}

/** ISO-Kalenderwoche des aktuellen Datums. */
export function currentIsoWeek(): number {
  return isoWeek(new Date())
}

/**
 * Letzte ISO-Woche eines Jahres — 52 oder 53 (KAR-836).
 * Der 28.12. liegt per ISO-8601 immer in der letzten Woche seines Jahres.
 */
export function lastIsoWeekOfYear(year: number): number {
  return isoWeek(new Date(Date.UTC(year, 11, 28)))
}
