- 통계 탭 삭제 (프론트 페이지/차트/네비 항목, 백엔드 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>
29 lines
1.6 KiB
JSON
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/"
|
|
}
|