Files
reloop-v2/.claude/state/contracts/7A.3.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

28 lines
1.6 KiB
JSON

{
"task_id": "7A.3",
"title": "정답표 PDF 파서",
"goal": "평가원 정답표 PDF 를 pdf-parse 로 텍스트 추출 → 정규식 파싱 → Array<{ number, answerNumber }> 생성",
"checks": [
"backend/scripts/kice-parser-answers.ts 또는 kice-import.ts 내 함수 parseAnswerTable(buffer: Buffer): Promise<Array<{number, answerNumber}>>",
"pdf-parse 설치: 기존 backend/package.json 에 pdf-parse 추가 (pnpm add pdf-parse)",
"pdf-parse 가 extractedText 를 반환하면 원문자 ①②③④⑤ 를 1~5 로 normalize",
"정규식: /(\\d{1,2})\\s*번?\\s*([①②③④⑤])/ 또는 /(\\d{1,2})\\s*([①②③④⑤])/ 또는 테이블 raw 기반 다양한 패턴 시도",
"반환: 정렬된 number 순서 배열, 중복 제거",
"실측: 2025 국어 정답표 (45문항), 2026 국어 (45), 2025/2026 한국사 (20), 2025/2026 영어 (45), 2025/2026 생활과 윤리 (20) 에서 각각 number 1부터 끝까지 빠짐없이 추출되는지 검증",
"스폿체크: 2026 국어 1번, 15번, 45번 답을 수동 PDF 확인과 비교",
"로그에 '⚠ 정답표 파싱 실패: N문항' 형식으로 누락 표시"
],
"non_goals": [
"수학/과탐 정답표 (수식 포함, 현재 범위 아님)",
"공식 정답률 데이터 추출",
"ML/LLM 사용"
],
"runtime_validation": [
"cd backend && pnpm cli:kice-import --year=2026 --subject=국어 --only=answer"
],
"risk_flags": [],
"reviewer_profile": "runtime",
"effort_score": 2,
"deliverable": "backend/scripts/kice-parser-answers.ts + pdf-parse 의존 추가"
}