// 처리 머신 보드 / 상태 스트립 / 드로어 공용 표시 헬퍼.
// 상태 표현은 dot + 칩 (이모지 금지 원칙) — 토큰 클래스만 사용.

import type { MachineState } from '$lib/types/queue';

/** 머신 상태 한글 라벨 */
export const MACHINE_STATE_LABEL: Record<MachineState, string> = {
  active: '가동',
  deferred: '보류',
  idle: '대기',
};

/** 상태 dot 색 — 가동=success / 보류=warning / 대기=faint */
export function machineDotClass(state: MachineState): string {
  if (state === 'active') return 'bg-success';
  if (state === 'deferred') return 'bg-warning';
  return 'bg-faint';
}

/** 상태 칩 톤 — 가동=accent / 보류=warn / 대기=dim */
export function machineChipClass(state: MachineState): string {
  if (state === 'active') return 'bg-accent/10 text-accent';
  if (state === 'deferred') return 'bg-warning/10 text-warning';
  return 'bg-surface-hover text-faint';
}

/** 처리율 표기 — 정수는 그대로, 소수는 한 자리 */
export function formatRate(n: number): string {
  return Number.isInteger(n) ? n.toLocaleString() : n.toFixed(1);
}

/** ETA 분 → "약 N분/N시간 후 소진 예상" (추정치 — title 로 명시는 호출부 책임) */
export function etaPhrase(minutes: number): string {
  if (minutes < 60) return `약 ${Math.max(1, Math.round(minutes))}분 후 소진 예상`;
  const hours = minutes / 60;
  const text = hours >= 10 ? String(Math.round(hours)) : String(Math.round(hours * 10) / 10);
  return `약 ${text}시간 후 소진 예상`;
}
