/**
 * 활동 로그 상수 및 유틸리티
 */

// 카테고리 한글 라벨 매핑
export const CATEGORY_LABELS = {
  album: '앨범',
  schedule: '일정',
  member: '멤버',
  bot: '봇',
  category: '카테고리',
  dict: '사전',
  concert: '콘서트',
  sync: '동기화',
};

// 액션 뱃지 색상
export const ACTION_STYLES = {
  create: 'bg-emerald-100 text-emerald-700',
  upload: 'bg-emerald-100 text-emerald-700',
  update: 'bg-blue-100 text-blue-700',
  delete: 'bg-red-100 text-red-700',
  sync_complete: 'bg-purple-100 text-purple-700',
  error: 'bg-red-100 text-red-700',
  start: 'bg-amber-100 text-amber-700',
  stop: 'bg-amber-100 text-amber-700',
};

// 액션 한글 라벨
export const ACTION_LABELS = {
  create: '생성',
  upload: '업로드',
  update: '수정',
  delete: '삭제',
  sync_complete: '동기화',
  error: '에러',
  start: '시작',
  stop: '정지',
};

export const ITEMS_PER_PAGE = 15;

// HTML 엔티티 디코딩
export function decodeHtml(str) {
  if (!str) return '';
  const el = document.createElement('textarea');
  el.innerHTML = str;
  return el.value;
}

// summary를 prefix와 detail로 분리
export function parseSummary(summary) {
  const decoded = decodeHtml(summary);
  const idx = decoded.indexOf(': ');
  if (idx === -1) return { prefix: decoded, detail: '' };
  return { prefix: decoded.substring(0, idx), detail: decoded.substring(idx + 2) };
}

// 날짜/시간 포맷 (DB에 KST로 저장되어 있으므로 UTC 기준으로 읽음)
export function formatDateTime(dateStr) {
  const date = new Date(dateStr);
  const y = date.getUTCFullYear();
  const month = String(date.getUTCMonth() + 1).padStart(2, '0');
  const day = String(date.getUTCDate()).padStart(2, '0');
  const hours = String(date.getUTCHours()).padStart(2, '0');
  const minutes = String(date.getUTCMinutes()).padStart(2, '0');
  return `${y}.${month}.${day} ${hours}:${minutes}`;
}

// details가 유효한 데이터인지 확인
export function hasDetails(details) {
  return details && typeof details === 'object' && Object.keys(details).length > 0;
}
