/*
 * SCR-16 관리자 대시보드 로컬 확장 타입.
 * 공유 api/types.ts(타 에이전트 소유)를 건드리지 않기 위해 백엔드 AdminDashboardDto 실전환 필드
 * (라이브 행사 M10 체크인·M14 혼잡, 최근 활동 audit_log)를 screens/admin 로컬로만 확장한다.
 * 응답 파싱 시 q.data 를 이 타입으로 좁혀 읽는다(런타임 shape 는 백엔드가 권위).
 */
import type { AdminDashboardData, AdminLiveEvent } from '../../api/types';

/** 라이브 행사 + M10 체크인 실인원(onSiteCount) · M14 혼잡 등급(heat). 구버전 응답 호환 위해 optional. */
export interface AdminLiveEventExt extends AdminLiveEvent {
  onSiteCount?: number;
  heat?: 'smooth' | 'moderate' | 'busy' | string;
}

/** 최근 관리 활동 — audit_log 실 기록. */
export interface AdminActivity {
  action: string;
  actorName: string | null;
  targetType: string | null;
  summary: string | null;
  result: string;
  createdAt: string;
}

/** 대시보드 응답 확장 — liveEvents 확장 + recentActivity. */
export interface AdminDashboardExt extends Omit<AdminDashboardData, 'liveEvents'> {
  liveEvents: AdminLiveEventExt[];
  recentActivity?: AdminActivity[];
}

/** 혼잡 등급 → CSS 상태 클래스(ops 화면과 동일 어휘). 미지정/미지원은 smooth. */
export function heatClass(heat: string | undefined): 'smooth' | 'moderate' | 'busy' {
  if (heat === 'busy' || heat === 'moderate' || heat === 'smooth') return heat;
  return 'smooth';
}
