Skip to content

feat: accounts, exams 모델 작성 - #4

Merged
wngjs8114 merged 3 commits into
devfrom
feature/#3-accounts,exams-model
Jul 28, 2026
Merged

feat: accounts, exams 모델 작성#4
wngjs8114 merged 3 commits into
devfrom
feature/#3-accounts,exams-model

Conversation

@h2ew0n

@h2ew0n h2ew0n commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

관련 이슈

Closes #3

작업 내용

examsusers 앱의 핵심 모델(ExamPeriod, Exam, StudyMaterial, StudyTask 등) 및 Form/View 기본 구조 작성 완료

settings.py에 커스텀 유저 반영하도록 수정
requirement.txt 파일 추가

  • ExamPeriod & Exam: overall 시험 기간 및 개별 과목 모델 세팅 완료
  • StudyMaterial: PDF 파일 업로드 및 텍스트 직접 입력/추출(extracted_text)을 모두 지원하는 멀티모달 학습 자료 모델 구현
  • StudyTask:
    • AI/규칙 엔진용 난이도, 깊이, 중요도, 예상 시간 필드 구성
    • 수정/삭제/확정 요구사항 반영 (is_confirmed 필드 제공)
    • planner 앱 연동을 위한 FK 참조 구조 표준화 및 문자열 참조 지원

주요 반영 및 연동 사항

  • ExamPeriod 구조 반영: 개별 과목(Exam)과 전체 시험 기간(ExamPeriod) 분리 구조 반영

테스트 및 검증

  • python manage.py makemigrations 정상 동작 확인
  • python manage.py migrate 정상 동작 확인
  • Django Shell / Admin을 통한 Exam, StudyTask 객체 생성 및 FK 참조 데이터 저장 정상 확인

참고 및 요청 사항

  • PR 병합 하면 planner 쪽에서 본 PR의 exams 모델 마이그레이션이 깔끔하게 연결될 것으로 보입니다!
  • @wngjs8114 , 모델 반영 확인해주세요
  • user 커스텀하여서 settings.py 파일 마지막 줄 추가했습니다. 확인 부탁합니당

@h2ew0n
h2ew0n requested a review from wngjs8114 July 28, 2026 05:59
@h2ew0n h2ew0n self-assigned this Jul 28, 2026
@wngjs8114

Copy link
Copy Markdown
Collaborator

전체적인 ExamPeriod → Exam 구조와 과목별 speed_factor 방향은 좋아요.
StudyUnit을 별도 모델로 분리하지 않고 unit_name으로 단순화한 것도 MVP에서는 괜찮아 보여요.

다만 실제 기능 연동을 위해 아래 항목은 병합 전에 수정하면 좋을 것 같습니다.

  1. task_type을 nullable한 자유 문자열이 아니라 고정 choices 필드로 변경
  2. 사용자 수정값 보호를 위한 is_user_modified 필드 추가
    • is_confirmed와는 의미가 달라서 두 필드 모두 필요할 것 같아요.
  3. StudyMaterial에 PDF/TEXT 입력 유형, 추출 상태, 실패 원인 필드 추가
  4. StudyTask.exam과 StudyTask.study_material.exam이 다르게 저장되지 않도록 검증 추가
  5. estimated_min_minutes가 estimated_max_minutes보다 크지 않도록 검증 추가

추가로 몇 가지 확인하고 싶습니다.

  • Exam.importance를 과목 우선순위로 사용할 예정이라면 priority처럼 의미가 더 명확한 이름이 좋을 것 같아요. 실제 계획 생성에 사용하지 않는 값이라면 제거해도 될 것 같습니다.
  • ImportanceLevel, TaskDepth, TaskDifficulty는 BE1 복구 로직과 BE3 AI 응답 검증에서도 공통으로 사용할 예정이라 core/choices.py로 옮기면 관리하기 편할 것 같아요. 이 부분은 병합 필수 수정이라기보다 추후 공통화해도 괜찮습니다.
  • requirements.txt에 DRF, JWT, CORS 관련 패키지가 추가됐는데, Django 세션·템플릿 방식이 아니라 별도의 인증 또는 프론트 서버 구조를 사용할 계획인지 궁금합니다. 사용 계획이 없다면 불필요한 패키지는 제거해도 될 것 같아요.

수정 후 이 PR을 먼저 dev에 병합하고, planner 브랜치에서 최신 dev를 반영한 뒤 planner migration을 다시 생성하면 될 것 같습니다.

- StudyTask 검증 및 is_user_modified, task_type choices 적용
- StudyMaterial 파싱 상태/유형 필드 추가
- core/choices.py 공통 Enum 분리
- Exam.importance -> priority 필드명 수정
@wngjs8114

Copy link
Copy Markdown
Collaborator

요청드린 task_type choices, is_user_modified, StudyMaterial 입력 유형·처리 상태 필드, StudyTask의 exam 불일치 검증과 estimated_min/max 검증까지 모두 반영된 것 확인했습니다.
Exam.importance를 priority로 명확히 변경하고, clean()을 save()에서 호출하도록 처리한 것도 확인했습니다. Approve 하겠습니다!

참고로 core/choices.py에는 현재 exams 관련 Enum만 있고, planner에서 사용하는 DailyPlanStatus, ProgressStatus, RecoveryType, RecoveryPlanStatus, RecoveryActionType은 아직 없습니다. 이 부분은 본 PR의 담당 범위와는 별개이므로, 머지 후 제가 별도의 작은 PR로 추가하겠습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

accounts와 user model 작성

2 participants