Files
reloop-v2/.claude/state/contracts/7A.1.sprint-contract.json
reloop 58719e329e feat: 문제풀이 UI 통일 + PDF→문제집 + 통계탭 삭제
- 통계 탭 삭제 (프론트 페이지/차트/네비 항목, 백엔드 stats 모듈은 대시보드용으로 유지)
- PDF 문제 분리 → 문제집 생성으로 변경 (ProblemSet + Problem 레코드)
  - ProblemSet에 sourceType, uploadedByUserId 추가
  - POST /problem-sets/create-from-pdf 엔드포인트
  - GET /problem-sets/my-uploads, DELETE /problem-sets/:id
  - exams 페이지에 '내가 만든 문제집' 섹션
- 문제 풀이 UI 통일
  - DrawingCanvas 공통 컴포넌트 추출 (필기모드)
  - 복습 페이지에 필기모드(캔버스+펜색상) 추가
  - 다시풀기 페이지에 필기모드+메모 추가
  - 처음풀기 페이지 난이도 슬라이더→3버튼(H/M/E)+SM-2 연동

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 10:17:12 +09:00

29 lines
1.6 KiB
JSON

{
"task_id": "7A.1",
"title": "Prisma 스키마 확장 — KICE 텍스트 파싱 필드",
"goal": "ProblemSet/Problem 에 KICE 파싱 결과를 담을 필드 추가 + 공통 지문용 Passage 모델 신규",
"checks": [
"ProblemSet 에 examRound String @default('sat') 추가 (향후 mock-jun/mock-sep 지원)",
"ProblemSet 에 audioUrls Json? 추가 (영어 듣기 mp3 경로 배열용)",
"Problem 에 bodyText String? @db.Text 추가",
"Problem 에 choices Json? 추가 ({\"1\":\"...\",\"2\":\"...\"} 구조)",
"Problem 에 answerNumber Int? 추가 (1~5 또는 주관식 정수)",
"Problem 에 passageId Int? 추가 + passage Passage? relation",
"Problem 에 needsReview Boolean @default(false) 추가",
"신규 model Passage { id Int @id, problemSetId Int, startNumber Int, endNumber Int, bodyText String @db.Text, problemSet ProblemSet @relation, problems Problem[], createdAt DateTime @default(now()), @@index([problemSetId]) }",
"ProblemSet 에 passages Passage[] relation 추가",
"migration 이름: kice_text_fields (prisma migrate dev --name kice_text_fields)",
"prisma generate 재실행으로 @prisma/client 타입 업데이트"
],
"non_goals": [
"기존 difficulty / baseCorrectRate / topic 필드 제거 — 유지",
"UserProblemSet 생성 (7B 범위)",
"seed 수정 (7A.8)"
],
"runtime_validation": ["cd backend && pnpm exec prisma migrate dev --name kice_text_fields"],
"risk_flags": ["migration"],
"reviewer_profile": "runtime",
"effort_score": 2,
"deliverable": "backend/prisma/schema.prisma + backend/prisma/migrations/YYYYMMDDHHMMSS_kice_text_fields/"
}