과제 도메인 (Homework)¶
1. 한 줄 정의¶
스터디룸에서 선생님이 출제한 과제와, 학생이 답글(질문/답변) 형식으로 제출하고 피드백받는 흐름. 학습 과정 추적·성취 관리의 기반.
2. 핵심 개념¶
- Homework — 과제 본체.
title,content(MEDIUMTEXT),deadline(LocalDateTime, nullable),reminderOffsets(ReminderOffset집합 —homework_reminderElementCollection). FK는study_room_id1개(룸 직속). 대상 학생은 본체 컬럼이 아니라HomeworkStudent매핑으로 배정 - HomeworkStudent — 학생별 배정·제출·피드백 매핑.
submissionStatusenum(SubmissionStatus):NOT_SUBMIT / SUBMIT / LATE_SUBMIT. 제출 내용은SubmissionInfo, 피드백은FeedbackInfo로 임베디드(별도 엔티티 아님),readAt(학생 읽음 시각) - 제출(답글) — 텍스트 본문 + 첨부. 마감 후 제출은
LATE_SUBMIT - 피드백 — 선생님이
HomeworkStudent.feedback(FeedbackInfo) 작성·수정·삭제 - TeachingNoteHomework — Homework ↔ TeachingNote 연결은 직접 FK가 아니라
teaching_note_homework조인 엔티티(M:N) → teaching-note
3. 관련 코드¶
mvp-back:domain/homework,mvp-back:application/service/homework,mvp-back:presentation/controller/homework- soft delete:
HomeworkEntity/HomeworkStudentEntity/TeachingNoteHomeworkEntity각각@SQLDelete+@SQLRestriction. (HomeworkDeletePolicy같은 공통 클래스는 없음 — 직접 선언) mvp-front:src/app/(private)/studyroom내 과제 섹션
주요 API (HomeworkController, prefix /api)¶
| Method | Path | 설명 |
|---|---|---|
| GET | /teacher\|student/study-rooms/{studyRoomId}/homeworks[/{homeworkId}] |
목록·상세 |
| GET | /parent/student/{studentId}/study-rooms/{studyRoomId}/homeworks/{homeworkId} |
보호자 조회 |
| POST/PATCH/DELETE | /teacher/study-rooms/{studyRoomId}/homeworks[/{homeworkId}] |
생성·수정·삭제 |
| POST/PATCH/DELETE | /student/study-rooms/{studyRoomId}/homework-students[...] |
제출(생성)·수정·취소 |
| POST/PATCH/DELETE | /teacher/study-rooms/{studyRoomId}/homework-students/{homeworkStudentId}/feedback |
피드백 CRUD |
4. 상태/생명주기¶
과제 제출은 마감(deadline) 이후에도 허용하되 LATE_SUBMIT로 표시. 주의: 현재 StudyRoomService.deleteStudyRoomCascade는 과제를 연쇄 삭제하지 않는다(수업노트 계열만). 룸→과제 cascade는 미구현 → studyroom §4.
5. 외부 의존¶
- S3 (제출 첨부 — 에디터 파일 업로드 정책 따름) → 에디터 고도화 개발 명세 (FRD)
- 알림 (과제 생성 시 학생에게 발송, 사전 알림 옵션
ReminderOffset=HOUR_1/HOUR_3/DAY_1) → 알림 개발 명세 (FRD)
6. UI 노출¶
- 과제 생성(선생님): 제목/내용/기한/대상/노트 링크
- 과제 제출(학생): 답글 형식 + 첨부
- 과제 관리(선생님): 제출 현황 요약(제출/미제출/지연), 정렬, 피드백
- 과제 보기(학생/보호자): 학생=제출 후 피드백 확인, 보호자=보기 전용
7. 권한 / 정책 요약¶
| 역할 | 권한 |
|---|---|
| 선생님 | 생성·수정·삭제·피드백 |
| 학생 | 지정(배정) 과제만 제출·수정. 같은 과제 다른 학생의 제출 완료 답안 조회 가능 |
| 보호자 | 연결 자녀 과제 제출 여부·피드백 보기 전용 |
- 과제는 별도 공개정책 없이 배정(HomeworkStudent) 여부로 접근 결정
- 필수 항목 누락 시 생성 불가, 기한이 현재 시각 이전이면 경고
- 첨부 확장자/용량 제한은 에디터 업로드 정책 따름
- 역할별 접근 권한 SSOT는 member §7
8. 결정 이력 / TODO¶
- [MS3] 과제 관리 FDD → 과제 관리 개발 명세 (FRD)
- 통계 보기(제출률·지연 비율·평균 제출 시간) — 확장 고려
- 챌린지식 풀이가 Homework와 별개인지 통합인지 → challenge는 출제 주체·범위 다름으로 별개 유지 (ADR-0006 예정)