클래스 관리/스케줄링 — 코드레벨 동작 흐름 P2코드레벨

마지막 업데이트 2026-07-22

작성일: 2026-06-14 대상: 개발자 — 수업/그룹/스케줄 관리 파악 핵심 파일: app/main/class-mgmt, api/class-mgmt/*, lib/class-group-utils.ts

개요 · 범위

치료사-아동 배정, 수업(class) 생성/관리, 그룹(시간대별 다중 세션) 편성, 예약 수업(scheduled-lessons) 조회를 다루는 관리자 영역. 대부분 Next API가 BFF로 외부 ppi-api를 프록시하고, 클라이언트는 시간대/그룹 구조로 변환해 표시한다.

페이지 · API 맵

영역경로
클래스 관리/main/class-mgmt
스케줄/main/schedule
커리큘럼(학습플랜)/main/curriculum
수업 CRUDapi/class-mgmt/classes, classes/[childId]/[date](+status/videos), batch-delete, counts
그룹groups, groups/[groupId]/{assign,unassign,members,check-unassign}, auto-assign
아동children/[childId](+class-type, auth/convert·expire), children/search
배정 현황assignment-matrix, assignment-drilldown, members/available
예약 수업api/scheduled-lessons (모니터 대시보드 #13가 소비)

시간대·그룹 변환 class-group-utils.ts: groupClassesByTimeslot L19

평면적인 class 목록을 시간대(timeslot) → 그룹/1:1 2단 구조로 변환해 UI에 표시한다.

TimeslotSection { timeslot, endTime(+20분), groups[], individualClasses[] }
각 class를 time으로 묶고, groupId 있으면 그룹 섹션·없으면 1:1로 분류.
그룹 = 모니터 카드뷰 단위: 여기서 만든 groupId가 SFU room의 groupId(JOIN_ROOM #2), 모니터 그룹 모니터링(#20)과 연결된다.

그룹 운영 · class-type

함정 · 주의

파일 · 라인 레퍼런스

파일역할
app/main/class-mgmt/page.tsx, schedule, curriculum관리 페이지
lib/class-group-utils.ts시간대·그룹 변환
api/class-mgmt/{classes,groups,children,assignment-*}/...BFF 프록시
api/scheduled-lessons/route.ts예약 수업(모니터 소비)

관련 문서