콘텐츠로 이동

Homework

1. 한 줄 정의

스터디룸에서 선생님이 출제한 과제와, 학생이 답글(질문/답변) 형식으로 제출하고 피드백받는 흐름. 학습 과정 추적·성취 관리의 기반.

2. 핵심 개념

  • Homework — 과제 본체. 제목·내용·제출 기한(날짜+시각)·대상 학생(개별/룸 전체). 선택: 수업노트 링크
  • HomeworkStudent — 학생별 제출·피드백 매핑. 상태: 제출 전 / 제출 완료 / 지연 제출
  • 제출(답글) — 텍스트 본문 + 이미지/파일 다중 첨부. 재제출 = 기존 제출물 수정으로 대체(수정 시각 기록). 마감 후 제출은 자동 '지연 제출'
  • 피드백 — 선생님이 학생 제출물별 댓글/피드백 작성·수정·삭제
  • 수업노트 링크 — Homework ↔ TeachingNote 상호 링크(상세 조회 시 새 창)

3. 관련 코드

  • [mvp-back:domain/homework](homework.md)
  • [mvp-back:application/service/homework](homework.md)
  • soft delete: HomeworkDeletePolicy (StudyRoom/TeachingNote cascade의 리프 — teams/engineering/guides/soft-delete)
  • [mvp-front:src/app/(private)/studyroom](studyroom.md) 내 과제 섹션

4. 상태/생명주기

Homework: assigned → due → closed
HomeworkStudent: 제출 전(pending) → 제출 완료(submitted) → 피드백 완료
                                 → 지연 제출(마감 후 제출)

과제 제출은 마감 이후에도 허용하되 '지연 제출'로 표시. 룸/노트 삭제 시 cascade 소프트 딜리트(Homework는 두 경로로 도달 가능 — 노트 연결 + 룸 직속).

5. 외부 의존

  • S3 (제출 첨부 — 에디터 파일 업로드 정책 따름)
  • 알림 (과제 생성 시 학생에게 발송, 사전 알림 옵션 1h/3h/6h/1d 전)

6. UI 노출

  • 과제 생성(선생님): 제목/내용/기한/대상/노트 링크
  • 과제 제출(학생): 답글 형식 + 첨부
  • 과제 관리(선생님): 제출 현황 요약(제출/미제출/지연), 정렬, 피드백
  • 과제 보기(학생/보호자): 학생=제출 후 피드백 확인, 보호자=보기 전용

7. 결정 이력

  • [MS3] 과제 관리 FDD

8. 권한 / 정책 요약

역할 권한
선생님 생성·수정·삭제·피드백
학생 지정 과제 제출·수정
보호자 연결 자녀 과제 제출 여부·피드백 보기 전용
  • 필수 항목 누락 시 생성 불가, 기한이 현재 시각 이전이면 경고
  • 첨부 확장자/용량 제한은 에디터 업로드 정책 따름

9. 열린 질문 / TODO

  • 통계 보기(제출률·지연 비율·평균 제출 시간) — 확장 고려
  • 챌린지식 풀이가 Homework와 별개인지 통합인지 → teams/engineering/domains/challenge는 출제 주체·범위 다름으로 별개 유지 (ADR-0006 예정)