마지막 업데이트 2026-07-22
치료사-아동 배정, 수업(class) 생성/관리, 그룹(시간대별 다중 세션) 편성, 예약 수업(scheduled-lessons) 조회를 다루는 관리자 영역. 대부분 Next API가 BFF로 외부 ppi-api를 프록시하고, 클라이언트는 시간대/그룹 구조로 변환해 표시한다.
| 영역 | 경로 |
|---|---|
| 클래스 관리 | /main/class-mgmt |
| 스케줄 | /main/schedule |
| 커리큘럼(학습플랜) | /main/curriculum |
| 수업 CRUD | api/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 목록을 시간대(timeslot) → 그룹/1:1 2단 구조로 변환해 UI에 표시한다.
TimeslotSection { timeslot, endTime(+20분), groups[], individualClasses[] }time으로 묶고, groupId 있으면 그룹 섹션·없으면 1:1로 분류.
endTime = timeslot + 20분(수업 길이 20분 고정 가정).isGroupClass(groupId 유무), formatGroupId(uuid[:8] 표시).groups/[groupId]/assign|unassign(check-unassign으로 해제 가능 여부 사전 확인), auto-assign(자동 편성).children/[childId]/class-type — 아동의 수업 유형(1:1/그룹 등) 설정, check로 변경 가능 여부 확인.children/[childId]/auth/convert·[orderNo]/expire(+preview) — 계정/주문 관련.assignment-matrix(치료사×시간대 배정표), assignment-drilldown(상세).| 파일 | 역할 |
|---|---|
| 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 | 예약 수업(모니터 소비) |