feat: 문제집+PDF 탭 통합 + EBSi 기출 링크

- exams 페이지 리라이트: 필터 탭(전체/샘플/내 문제집) + 학년 필터(중1~수능)
- PDF 임포트 2단계 플로우를 접이식 섹션으로 인라인 통합
- EBSi 기출문제 다운로드 링크 추가 (ebsi.co.kr)
- SideNav: "PDF 문제집" 항목 삭제, "문제집" 하나로 통합
- 기존 /study/import-pdf 페이지 유지 (하위호환)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
reloop
2026-04-19 15:48:40 +09:00
parent 4996a26475
commit 8e60c83e76
7 changed files with 1070 additions and 158 deletions

View File

@@ -1 +1 @@
1776387808 1776580899

View File

@@ -1 +1 @@
1 1776387989 2 1776581186

View File

@@ -1 +1 @@
1776388416 1776580382

View File

@@ -1 +1,6 @@
{"event": "task_completed", "teammate": "", "task_id": "14", "subject": "PDF→문제집: 프론트엔드 import-pdf 페이지 리워크", "description": "PDF 업로드 → 크롭 → 문제집으로 저장. 복습큐 직행 대신 문제집 생성. exams 페이지에 '내 문제집' 섹션 추가", "agent_id": "", "agent_type": "", "timestamp": "2026-04-17T01:13:06Z"} {"event": "task_completed", "teammate": "", "task_id": "14", "subject": "PDF→문제집: 프론트엔드 import-pdf 페이지 리워크", "description": "PDF 업로드 → 크롭 → 문제집으로 저장. 복습큐 직행 대신 문제집 생성. exams 페이지에 '내 문제집' 섹션 추가", "agent_id": "", "agent_type": "", "timestamp": "2026-04-17T01:13:06Z"}
{"event": "task_completed", "teammate": "", "task_id": "29", "subject": "캘린더 퀵애드 모달 생성", "description": "캘린더 날짜 클릭 시 \"+\" 버튼으로 문제 즉시 등록 가능한 모달. 제목+난이도만 입력하면 됨.", "agent_id": "", "agent_type": "", "timestamp": "2026-04-19T06:32:52Z"}
{"event": "task_completed", "teammate": "", "task_id": "30", "subject": "캘린더 DayPanel UX 개선", "description": "DayPanel에 퀵애드 버튼 추가, 리뷰 아이템에 과목 색상 뱃지, 완료 항목 스타일 구분", "agent_id": "", "agent_type": "", "timestamp": "2026-04-19T06:32:52Z"}
{"event": "task_completed", "teammate": "", "task_id": "31", "subject": "대시보드 액션 버튼 추가", "description": "대시보드 헤더에 \"문제 등록\" FAB 또는 액션 버튼 추가", "agent_id": "", "agent_type": "", "timestamp": "2026-04-19T06:34:34Z"}
{"event": "task_completed", "teammate": "", "task_id": "32", "subject": "문제집+PDF 탭 합치기", "description": "exams 페이지에 PDF 임포트 기능 통합, 필터 기반 뷰, SideNav 통합", "agent_id": "", "agent_type": "", "timestamp": "2026-04-19T06:48:26Z"}
{"event": "task_completed", "teammate": "", "task_id": "33", "subject": "EBSi 기출 다운로드 링크 추가", "description": "PDF 업로드 영역에 EBSi 기출문제 사이트 바로가기 링크 제공", "agent_id": "", "agent_type": "", "timestamp": "2026-04-19T06:48:27Z"}

View File

@@ -3,5 +3,30 @@
"failure_count": 0, "failure_count": 0,
"last_action": "reset", "last_action": "reset",
"updated_at": "2026-04-17T01:13:06Z" "updated_at": "2026-04-17T01:13:06Z"
},
"29": {
"failure_count": 0,
"last_action": "reset",
"updated_at": "2026-04-19T06:32:52Z"
},
"30": {
"failure_count": 0,
"last_action": "reset",
"updated_at": "2026-04-19T06:32:52Z"
},
"31": {
"failure_count": 0,
"last_action": "reset",
"updated_at": "2026-04-19T06:34:34Z"
},
"32": {
"failure_count": 0,
"last_action": "reset",
"updated_at": "2026-04-19T06:48:26Z"
},
"33": {
"failure_count": 0,
"last_action": "reset",
"updated_at": "2026-04-19T06:48:27Z"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -33,13 +33,9 @@ const BASE_NAV_ITEMS: Array<{
label: '문제집', label: '문제집',
icon: 'books', icon: 'books',
match: (pathname) => match: (pathname) =>
pathname.startsWith('/exams') || pathname.startsWith('/study/exam'), pathname.startsWith('/exams') ||
}, pathname.startsWith('/study/exam') ||
{ pathname.startsWith('/study/import-pdf'),
href: '/study/import-pdf',
label: 'PDF 문제집',
icon: 'file-pdf',
match: (pathname) => pathname.startsWith('/study/import-pdf'),
}, },
{ {
href: '/review', href: '/review',