콘텐츠로 이동
✍️ 수정가능누구나 고쳐도 됩니다. 고치면 하단 frontmatter의 갱신일·작성자·변경요약을 남겨 주세요.작성 Claude · 2026-06-04 · v12 재편·raw 컴파일·인간화

과제 관리 개발 명세 (FRD)

요지

과제 관리를 생성·제출·관리·보기 네 구간으로 나눠 각 구간의 동작 규약을 정리한다. 엔티티·상태머신·권한·soft delete의 단일 기준은 homework 도메인이고, 여기서는 그 위에서 화면별로 어떻게 동작하는지를 다룬다.

상위 PRD

기획(생성→제출→피드백 루프, 지연 제출, 공용 첨부)은 prd이며, 바뀌면 이 문서도 갱신한다.

기술 접근 · 아키텍처

1. 과제 생성 (선생님)

  • 필수 입력: 제목, 내용, 제출 기한, 대상 학생. 선택: 수업노트.
  • 대상 지정: 전체 학생 / 개별 학생.
  • 제출 기한: 날짜 + 시각. 기한 이후에도 작성 허용(지연 제출로 표시).
  • 알림: 생성 시 학생 알림 발송, 발송 시점 옵션(1·3·6시간 전, 1일 전 …).
  • 수업노트 링크: 과제 ↔ 수업노트 양방향 링크 — 상세에서 연결된 항목을 새 창으로 조회.
  • 예외: 필수 누락 시 생성 불가, 기한이 현재보다 이전이면 경고.

2. 과제 제출 (학생)

  • 제출 방식: 답글 형식. 제출 항목: 텍스트 본문 + 이미지/파일 다중 첨부.
  • 상태: 제출 전 / 제출 완료 / 지연 제출.
  • 수정 정책: 재제출 = 기존 제출물 수정으로 대체. 마감 후 제출은 '지연 제출' 자동 표시.
  • 예외: 첨부 확장자·용량은 에디터 파일 업로드 정책(에디터) 준수, 초과 시 경고.

3. 과제 관리 (선생님)

  • 목록: 제출 현황 요약(제출 / 미제출 / 지연 제출), 정렬(제출 순서·시간·이름·상태).
  • 피드백: 학생 과제별 댓글/피드백 작성·수정·삭제.
  • 통계(확장 고려): 전체 제출률·지연 비율·평균 제출 시간.

4. 과제 보기 (학생/보호자)

  • 학생: 제출 전 상세 열람 / 제출 후 제출 내역 + 피드백 확인.
  • 보호자: 학생별 제출 상태·피드백 요약(보기 전용).

공통 정책

  • 권한: 선생님(생성·수정·삭제·피드백) / 학생(제출·수정) / 보호자(조회).
  • 알림: 생성·피드백·마감 임박 시 푸시/알림 센터.
  • 기록: 제출·수정·피드백 타임스탬프. 마감 이후 제출은 별도 색상/태그.

API · 데이터 모델

엔티티(Homework/HomeworkStudent)와 필드·상태머신·권한·soft delete는 homework 도메인이 단일 기준이다. 첨부는 에디터의 공용 미디어 연결(MediaAsset + targetType)을 그대로 쓴다.

의존성 · 영향 범위

과제 도메인(homework)을 중심으로 수업노트(teaching-note), 공용 첨부(에디터), 알림(알림), 그리고 인접한 Q&A(qna)와 맞물린다. 룸이나 수업노트가 soft delete되면 거기 딸린 과제도 함께 화면에서 사라진다.

테스트 계획

공통 전략은 qa-playbook을 따른다. 이 기능에서 꼭 볼 것은 대상을 '개별'로 잡고 학생을 지정하지 않으면 생성이 막히는지, 기한이 과거면 경고가 뜨는지, 마감 후 제출이 '지연 제출'로 자동 표시되고 재제출이 기존 제출물을 수정으로 대체하는지다. 제출 현황 요약(제출/미제출/지연) 집계의 정확성과 역할별(선생님/학생/보호자) 조회·편집 경계, 그리고 룸/수업노트 soft delete 시 과제가 함께 사라지는지도 확인한다.

작업 분해

지금 범위 밖이지만 이어 갈 확장 후보가 여럿 있다 — 채점·점수화, 자동 채점, 제출물을 학생 프로필 포트폴리오로 잇기, 과제 템플릿 저장, AI 피드백·요약 연동. 완료 추적은 GitHub 이슈에서 한다.