package dev.awesomedev.mirim.web.dto;

import java.util.List;
import java.util.Map;

/**
 * 이 파일이 하는 일:
 * 멘토 페이지의 "주차별 체크리스트 진도" 응답 —
 * 주차별 항목 총수(분모) + 학생별 주차 완료 수(분자)를 한 번에 담는다.
 *
 * 학습 포인트: 총수는 모든 학생에게 같으니 학생마다 반복해서 보내지 않고
 * 한 번만 보낸다(totalByWeek). 응답 크기를 줄이는 흔한 설계다.
 */
public record ChecklistProgressOverviewResponse(
        Map<Integer, Long> totalByWeek,
        List<StudentWeekly> students
) {
    /** 학생 한 명의 주차별 완료 수. 체크가 없는 주차는 키가 없다(프론트에서 0으로 처리). */
    public record StudentWeekly(
            Long userId,
            String username,
            String name,
            String track,
            Map<Integer, Long> doneByWeek
    ) {
    }
}
