/** 将设备或文件的秒时长显示为累计小时，保留毫秒；缺失不补零。 */
export function formatTestDuration(value: unknown): string {
  if (value == null || value === '' || value === '-') return '-'
  const seconds = Number(value)
  if (!Number.isFinite(seconds) || seconds < 0) return '-'
  const milliseconds = Math.round(seconds * 1000)
  return `${Math.floor(milliseconds / 3600000)}:${String(Math.floor(milliseconds / 60000) % 60).padStart(2, '0')}:${String(Math.floor(milliseconds / 1000) % 60).padStart(2, '0')}.${String(milliseconds % 1000).padStart(3, '0')}`
}

/** 解析累计时长；仅旧秒值输入允许纯数字，不将其解释为绝对时间。 */
export function parseTestDuration(value: unknown): number | null {
  const text = String(value ?? '').trim()
  if (!text || text === '-') return null
  const duration = /^(\d+):([0-5]\d):([0-5]\d)(?:\.(\d{1,3}))?$/.exec(text)
  const seconds = duration ? Number(duration[1]) * 3600 + Number(duration[2]) * 60 + Number(duration[3]) + Number((duration[4] || '').padEnd(3, '0')) / 1000 : Number(text)
  return Number.isFinite(seconds) && seconds >= 0 && Number.isSafeInteger(Math.round(seconds * 1000)) ? seconds : NaN
}
