package com.zioinfo.kintex.admin.dto;

import java.util.List;

/**
 * 관리자 백오피스 대시보드 (SCR-14/16 / 06_backend_api_gaps §4).
 * 집계원: event(진행/라이브)·hall_assignment·app_user·company.
 * <p>실전환(SCR-16, 2026-07): ①라이브 행사에 M10 실 체크인 인원(onSiteCount)·M14 혼잡 등급(heat, OpsService 재사용) 부가,
 * ②최근 활동(recentActivity)은 audit_log 실 기록. 관람객 시간대 추이는 센서/집계 부재 → 빈배열(정직).
 */
public record AdminDashboardDto(
        List<Kpi> kpis,
        List<VisitorPoint> visitorTrend,
        List<LiveEvent> liveEvents,
        List<String> tenants,
        List<Activity> recentActivity
) {
    public record Kpi(String label, String value, String sub) {
    }

    /** 시간대별 관람객(원천 부재 시 미집계). */
    public record VisitorPoint(String hour, long count) {
    }

    /**
     * 라이브(진행 중) 행사 — 점유율=부스수/홀 수용(occupancy),
     * onSiteCount=M10 현장 체크인 실집계, heat=M14 혼잡 등급(smooth/moderate/busy, OpsService 파생).
     */
    public record LiveEvent(String eventId, String name, String hall, int occupancy, String status,
                            long onSiteCount, String heat) {
    }

    /** 최근 관리 활동 — audit_log append-only 실 기록(민감정보·스택트레이스 미포함). */
    public record Activity(String action, String actorName, String targetType, String summary,
                           String result, String createdAt) {
    }
}
