기존 11권(middle/high/ksat/premium) 전면 삭제,
학기별 12권으로 재구성 (m1-1 ~ h3-2, 각 15문제)
중1~고3 × 1학기/2학기, 2022 개정 수학 교육과정 기반
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SVG로 제작, report.md 목적/필요성 탭에 삽입
TAM 51억$ / SAM 2조원 / SOM 52억원
PEST: 정치(AI교과서), 경제(사교육비29.2조), 사회(AI학습340%↑), 기술(SM-2+망각곡선)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 가격 2,900원 통일, 기능 게이트 문서화
- 코드 규모 45,641줄/71 API/15 모델/26 페이지
- 실현가능성/시장성 섹션 전면 재작성
- 2022 교육과정 프리셋, 학교 관리 4대 기능 반영
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
PsProblem, PsBookmark, PsSyncState 모델 3개 삭제.
User.bojHandle, StudyLog.psProblemId FK 삭제.
12곳 psProblemId: null 쿼리 필터 제거.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 문제집 진입 시 시작 화면에서 시험 시간을 설정할 수 있음
- 빠른 선택: 30분/60분/100분/120분 버튼
- 직접 입력: 1~300분 숫자 입력
- 시작 버튼 클릭 후 카운트다운 시작 (집중모드)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- exams 페이지를 3개 섹션으로 재구성:
1. 프리미엄 문제집 (B2B 코드 등록)
2. 내 문제집 (PDF 업로드 + 크롭 + 직접 등록)
3. ReLoop 샘플 문제집
- SideNav에서 'PDF 문제집' 항목 제거, 문제집 탭으로 통합
- 빈 섹션에 안내 메시지 + 아이콘 표시
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 답안 패널 위에 가로 스크롤 번호 칩 바 추가
- 현재 문제는 인디고 글로우, 답안 완료는 보라색, 표시(★)는 주황
- 문제 전환 시 현재 번호로 자동 스크롤 (smooth center)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- backend: tags PATCH 엔드포인트 추가 (태그 이름 수정 가능)
- frontend: 과목 색상 선택을 HSL 기반 2D 그라데이션 피커로 교체
- 프리셋 10색 빠른 선택 + 캔버스 드래그 + HEX 직접 입력
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- PS(Solved.ac) 관련 내용 전부 제거
- SM-2 + 에빙하우스 하이브리드 알고리즘 강조
- PDF 자동 크롭 문제집 기능 추가
- 캔버스 필기모드 작동 원리 반영
- 태그별 숙련도 추적 설명 업데이트
- FAQ: Anki 비교, 학교/학원 활용, 과목 확장 계획
- 요금제: Pro 9,900원, School 학생당 5,500원
- 통계 수치: 324+ 문제, 12 ebook, 75 API
- Hero phrases: PDF 관련 문구 추가, PS 문구 제거
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1. 업로드 문제집 뷰어에 문제 번호 점프 스트립 추가
- 스크롤 가능한 번호 버튼, 풀이/등록 상태별 색상 구분
2. 학교 > 새 과제에 PDF 업로드 기능 추가
- 문제 PDF + 해설지(선택) 업로드 → 이미지 크롭 → ProblemSet 자동 생성
- 생성된 문제집이 드롭다운에 자동 추가되어 바로 과제 배정 가능
3. ALGORITHM.md 알고리즘 변경사항 반영
- easeFactor 필드 분리 설명
- intensity SM-2 배율 (strict×0.7, relaxed×1.4)
- 망각곡선 안전장치 (P<30% 시 간격 축소)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1. TagPrompt 공통 모달: 복습/문제풀이 후 태그 선택/생성 가능
- 복습 페이지: 난이도 선택 후 태그 없는 문제에 자동 프롬프트
- 업로드 문제집: 자기평가 후 태그 프롬프트
- 새 태그 생성 기능 (입력 + 즉시 적용)
2. 백엔드: PATCH /study-logs/:id에 tagId 업데이트 지원
3. 캘린더 day panel: 완료 항목 아래로 정렬 + 취소선 + 투명도
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
이미지 기반 문제 뷰어: 필기모드, 5지선다 답안, 정답확인, 메모,
난이도 자기평가→복습큐 등록. 기존 sample-ebook은 텍스트 기반이라
별도 페이지 필요.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 통계 탭 삭제 (프론트 페이지/차트/네비 항목, 백엔드 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>
- import-pdf: resolveUploadUrl로 이미지 src를 API 서버 도메인으로 변환
- review: currentProblem이 null이어도 StudyLog.imageUrl이 있으면 이미지 표시
- getOne API: correctAnswer, imageUrl 필드 응답에 추가
- api.ts: StudyLogDetail에 imageUrl 필드 추가
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
14. PDF 문제 분리
- OCR 텍스트 파싱 → bbox 기반 이미지 크롭(pdftoppm)으로 전면 교체
- 해설지 PDF 동시 업로드 시 pdftotext로 정답 표 자동 파싱
- StudyLog에 correctAnswer, imageUrl 컬럼 추가 (migration)
- 프론트: 크롭 이미지 미리보기 + 정답 자동/수동 배정 UI
15. 복습 시 정답 표시
- 복습 카드에 "정답 보기" 버튼 추가 (클릭 시 정답 번호 표시)
- ProblemSet answerNumber + StudyLog correctAnswer 양쪽 소스 지원
- 캘린더 일별 보기에도 answerNumber 포함
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 프로필 학습설정에 현재 페르소나/강도 기반 복습 알고리즘 설명 카드 추가
- 시험 목표/집중 단원/BOJ 핸들 섹션 제거
- PDF 문제 분리: codex Vision OCR → pdftotext 텍스트 파싱으로 교체 (운영서버 호환)
- README.md 전면 재작성 (최신 기능 반영)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 복습 큐 조회 시 하루 이상 밀린 pending 항목을 오늘 09:00 KST로 자동 reschedule
- 페르소나/학습강도 변경 시 모든 pending 복습 스케줄을 새 설정 기반으로 재계산
- PDF 모의고사 업로드 → Codex Vision OCR로 문제별 분리 → 태그 배정 → 선택적 복습 큐 등록
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SM-2 Easiness Factor + 페르소나별 망각속도 보정 (senior 1.3x ~ crammer 0.6x)
- 최초 학습(iter=0): hard=1d, medium=3d, easy=7d 차등 간격
- 2회차~: 반복할수록 간격 증가 (6 × EF^(iter-1) × pf)
- hard → EF 하락 + 간격 리셋(1일), easy → EF 상승 + 간격 확대
- EF 는 SkillSnapshot.s0 에 저장 (태그별 개인 학습 용이도)
- 프론트 3버튼에 SM-2 기반 동적 간격 미리보기 표시
- 기존 PersonaForgetService.schedule/updateS0 유지 (selfDifficulty 없는 경우 fallback)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 필기모드 토글: ON=그리기+보이기, OFF=숨기기+아래 요소 클릭 가능
- 마우스/터치 모두 지원, touch-action: none 으로 스크롤 방지
- 펜 색상: 빨강/파랑/검정 전환
- 지우기: 현재 문제 필기 초기화 (confirm)
- 페이지 전환/재방문 시 필기 복원 (localStorage per problem)
- 코드 입력 → 프리미엄 ebook(55문항) 등록, localStorage 영속화
- 직접 문제 등록 → POST /study-logs → 복습 캘린더 자동 배치
- PDF 업로드 → backend uploads/problems/, 카탈로그에 PDF 카드 표시
- 시연용 인쇄 문제집 HTML (A4 10페이지, 표지+정답표)
- 데모 등록코드: RELOOP-2026-MATH, DEMO-B2B-001
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 마운트 시 GET /study-logs 로 이미 등록된 문제 복원 (registeredProblems)
- selectedAnswers/revealed/pageIndex localStorage 영속화
- '처음부터 다시 풀기' 버튼 (복습 등록은 유지, 풀이만 초기화)
- 진행률 표시: 풀이 N/30 · 복습 등록 N/30
- title 형식에 문제 번호 포함 ([grade] #N question)
- backend study-logs: selfDifficulty 필드 추가, 고정 간격 스케줄링 (1/7/30일)
- backend reviews submit: selfDifficulty 전달 → 다음 복습 고정 간격
- frontend sample-ebook: 정답 확인 후 3단계 평가 → POST /study-logs → 복습 캘린더 등록
- frontend review: 정답/부분/오답 4버튼 → 어려웠어/괜찮았어/쉬웠어 3버튼으로 교체
- sample data: 180문항 전부 difficulty 책정 (문항별 easy/medium/hard)
- backend: DELETE /reviews/:id 엔드포인트 + 소유권 확인 후 hard delete
- 캘린더 패널: 각 복습 항목 옆 빨간 "삭제" 버튼, confirm 후 낙관적 제거 + 셀 카운트 갱신
- 복습 풀이 큐: ActionGrid 하단 "이 문제 삭제" ghost 버튼, 삭제 후 다음 문제로 전환
- pending/done/skipped 상태 무관하게 삭제 허용
- backend study-logs: psProblemId input/include/응답매핑/검증 제거
- frontend study-logs/[id]: PS 전용 렌더링(PsTypeBadge, TierBadge, BOJ 링크,
normalizePsTags, getTierColor 등) 전부 제거, problem null 시 fallback 유지
- frontend study/history: PS 뱃지 렌더링/헬퍼 제거
- frontend onboarding: GoalType 'ps' 항목, BOJ 핸들 연결 UI, 관련 state 제거
- frontend api.ts: GoalType 'ps', psProblem 타입, getBojTierLabel 제거
국어 통계는 backend stats.service 의 name='수학' 필터로 이미 차단 확인.
Prisma schema 의 PsProblem/PsBookmark 모델은 유지 (마이그레이션 없음).
기존 exclude 패턴 'prisma' 는 backend/prisma/ 스키마 폴더를 제외하려는 의도였지만,
TypeScript exclude glob 이 경로 어디서든 'prisma' 디렉터리를 매칭해서 src/prisma/ 도
함께 제외됨. 그 결과 nest build 가 PrismaModule 을 dist/prisma.module.js 로 평탄화
emit 하면서 app.module 의 './prisma/prisma.module' require 가 런타임에 깨졌음.
이전 배포는 tsbuildinfo 캐시가 살아있던 덕에 우연히 정상 트리로 emit 되어 가려져
있었고, 오늘 클린 빌드 시 노출. 'prisma' 폴더의 .ts 파일들은 어차피 include
'src/**/*' 에 안 잡히므로 exclude 자체가 불필요. 항목 제거로 해결.
- 백엔드 read-side 필터: subjects/stats/problem-sets findMany 에 name='수학' / subjectName='수학' 고정
- 백엔드 write-side 가드: subjects.controller @IsIn(['수학']) for create/update
- 프론트 subjects: 클라이언트 검증으로 수학 외 입력 차단
- 프론트 exams: 카탈로그 맨 앞에 [샘플] 수능 수학 미리보기 ebook 데모 카드 항상 노출 (4분기 모두)
- 신규 페이지 /exams/sample-ebook: 종이책 펼침 two-page spread, 5문항 (이차함수/등차/극한/확률/정적분), 키보드 ←→ nav, 정답 확인+해설, B2B 비전 안내 박스
- docs/b2b-qr-physical-book.md: 종이책 QR → 앱 ebook + 망각곡선 복습 큐 자동 연동, 출판사 라이선스 모델 미래 스펙
데이터는 DB 보존 (soft filter), '수학' 한 단어 sed 로 풀 수 있음.
백엔드 tsc build / 프론트 tsc + lint 클린.