reloop
c8d0de3322
fix(phase10F): 학습 기록 PS 호환 — list/getOne psProblem include + detail/history UI
...
- backend study-logs.service.list/getOne 에 psProblem 포함 (bojId,title,
titleKo,level,tags) + getOne 응답에 bojUrl 자동 생성
- lib/api.ts: StudyLog/StudyLogDetail 타입에 psProblem optional 추가
- /study-logs/[id]: PS 변형 카드 — 티어 뱃지/태그/BOJ 외부 링크/안내 문구
- /study/history: 행에 'PS + 티어' 컴팩트 뱃지 (mobile 카드 동일)
검증: backend build/test OK, frontend build/lint OK.
2026-04-14 21:05:52 +09:00
reloop
6af0a2a5fa
fix(phase10E): PS 온보딩/저장/결과 가시화 사후 픽스
...
F1. 온보딩 PS 트랙은 STEP 2(등급) 자체 스킵 — none 처리와 동일하게
effectiveStepCount/visibleStep/goNext/goPrev 분기 확장
F2. 온보딩 저장이 PATCH /me/onboarding 으로 이동 (기존 /auth/me 404)
- OnboardingDto 에 닉네임·옵션 필드 명시, 등급 3종 IsOptional
- me.service.updateOnboarding 가 undefined 필드 가드
- PS 사용자는 currentGrade/targetGrade/targetExamYear 페이로드에서 제거
F3a. POST /api/ps/sync 응답에 importedProblems 요약 포함
- /ps/sync 결과 영역에 카드 리스트(티어/제목/태그/BOJ 링크) 노출
F3b. /ps/solved 신규 페이지 + GET /api/ps/solved?page= 신규 endpoint
- StudyLog where psProblemId 페이지네이션 조회
- PsTabs 에 "풀이" 탭 추가 (검색/북마크/풀이/동기화)
F-extra. ps/sync 페이지의 saveHandle 도 /me/profile 로 교체
- lib/api.ts: PsSyncResult.importedProblems, getBojTierLabel, ps.listSolved
검증: backend build OK, vitest src/ps 7 통과, frontend build OK, lint OK.
2026-04-14 20:36:39 +09:00
reloop
3084f291e1
fix(deploy): reloop-api 3011, reloop-web 3010 — nginx LXC101 upstream 정렬
2026-04-14 19:57:00 +09:00
reloop
1ad1256808
fix(deploy): reloop-web → 3003 (mailu-webui 가 3000 점유, nginx upstream 도 3003 기준)
2026-04-14 19:49:31 +09:00
reloop
9df9625afe
fix(ps): SolvedAcClient DI via useFactory — Nest 가 untyped options 인자 resolve 못해서 부팅 실패
2026-04-14 19:45:30 +09:00
reloop
78371cacf8
feat(phase10C): 온보딩 + 프론트 재구성 — 수학 수능 4단원 + PS 트랙
...
- lib/api.ts: GoalType('math-suneung'|'ps'|...), MathUnit, MATH_UNIT_LABEL,
MeUser{focusUnits,bojHandle}, ps.* helper (search/bookmark/sync/getProblem)
- onboarding/page.tsx: 5개 GoalType 옵션, math-suneung 단원 멀티셀렉트,
ps 인풋 + 즉시 동기화 토글, focusUnits/bojHandle PATCH
- profile/page.tsx: 동일 컨트롤 노출 + 검증
- ps/{page,bookmarks/page,sync/page}.tsx: 검색·필터·북마크·동기화 신규 섹션
- components/ps/PsTabs.tsx, layout/{SideNav,BottomNav}.tsx, ui/Icon.tsx:
PS 진입점 + Phosphor code/bookmark-simple 아이콘
- exam/shared.ts: getExamDurationSeconds → 수학 100분 고정
- 비수학 하드코딩 전면 제거: dashboard/exams/study/subjects/school/assignment
- 카피 갱신: landing/pricing/layout metadata + README + docs(user/admin/pipeline)
- .eslintrc.json: Next core lint 결정성 확보
Phase 10C DoD 통과 — pnpm build + lint 0 에러, /ps /ps/bookmarks /ps/sync 라우트 생성,
grep -rE '국어|영어|한국사|생활과 윤리|사회탐구' frontend/src docs = 0
2026-04-14 19:38:16 +09:00
reloop
6ceeee4f3f
feat(phase10B): Solved.ac PS 모듈 신규 + bojHandle 등록
...
- prisma: PsProblem / PsBookmark / PsSyncState 모델, StudyLog.psProblemId
- migration: phase10_ps_tables
- ps/solved-ac.client: axios 클라이언트(rate-limit 3req/s, 지수 백오프 3회)
searchProblems / getProblem / getUser / getUserProblemStats / getUserTop100
- ps/ps.module + service + controller: search/bookmark/sync 6 endpoint
- JWT guard, throttler, sync 멱등성 (PsSyncState lastSolvedCount)
- sync 시 시스템 Subject "PS" 자동 생성, StudyLog bulk insert (중복 skip)
- me/auth: bojHandle / focusUnits PATCH 지원, MeUser 응답 확장
- vitest: solved-ac.client 7 테스트 통과 (4 메서드 + 429 재시도)
Phase 10B DoD 통과.
2026-04-14 18:47:09 +09:00
reloop
d892d8298b
feat(phase10A): KICE 비수학 제거 + 수학 단원 분리
...
- schema: MathUnit enum (common/prob_stat/calculus/geometry)
- User: focusUnits(Json), bojHandle(VarChar32)
- ProblemSet: mathUnit optional + unique(year,examType,subjectName,mathUnit)
- migration: phase10_math_units_and_ps
- scripts: wipe-non-math (dry/apply), kice-import refactor (math only,
30문항을 공통22 + 확통/미적/기하 8씩으로 분할 → 2년×4 = 8 ProblemSet)
- parsing strategy/ocr-fix/seed/me/study-logs: 비수학 참조 전면 제거
- data/kice, backend/uploads/problems: 비수학 폴더 삭제
- Plans.md: Phase 10 계획 확정
Phase 10A DoD 통과 — prisma validate/format OK, nest build OK,
kice-import dry-run 2년 각 46문항 확인, wipe dry-run 8 set/260 problems 확인.
2026-04-14 18:27:00 +09:00
reloop
1f04283c19
plans: Phase 9 완료 (4/4)
2026-04-12 16:09:31 +09:00
reloop
f9c8b9ab2c
feat(school): student progress + class reports — 9.4
2026-04-12 16:07:32 +09:00
reloop
8ebd419eee
feat(school): assignment CRUD + submissions tracking UI — 9.3
2026-04-12 15:57:34 +09:00
reloop
bed5b802d4
feat(school): teacher dashboard + classes + invite + student view — 9.2
2026-04-12 15:47:01 +09:00
reloop
f4b80d380a
feat(school): organization + class + assignment schema and API — 9.1
2026-04-12 15:33:16 +09:00
reloop
e26fe14898
plans(9): school/academy management phase
2026-04-12 15:23:21 +09:00
reloop
1805af509c
fix(mobile): replace 학습 tab with 문제집 in BottomNav
2026-04-12 15:03:43 +09:00
reloop
c8534d253c
docs: add combined PDF manual (210KB, pandoc+weasyprint)
2026-04-12 15:02:12 +09:00
reloop
ae7d358007
docs: comprehensive manual — algorithm, architecture, user guide, admin guide, PDF pipeline
...
README.md 전면 재작성 + docs/ 5개 문서:
- algorithm.md: 망각 곡선 수식, 페르소나, S₀ 업데이트, FSRS 비교
- architecture.md: 시스템 구조, 모듈 설명, 라우트 맵, ER 다이어그램
- user-guide.md: 기능별 사용법, 페르소나 가이드, FAQ
- admin-guide.md: 배포, KICE 데이터 관리, PM2, 보안 체크리스트
- pdf-pipeline.md: 파싱 흐름, 이미지 크롭 알고리즘, OCR, 전략 패턴
2026-04-12 14:57:36 +09:00
reloop
14ddfc2985
feat(ux): grade carousel + vertical exam + pricing integration + copy broadening — 7I.5
2026-04-12 14:43:01 +09:00
reloop
25d080a0ad
plans: Phase 7I.4 완료 [ d14fde3]
2026-04-12 14:22:14 +09:00
reloop
d14fde3bb4
feat(ux): slow animations + audio player + styled slider + pricing nav — 7I.4b
2026-04-12 14:21:35 +09:00
reloop
e3cdfd9881
feat(exam): image-only display + OMR bubbles + passage images — 7I.4a
2026-04-12 14:14:26 +09:00
reloop
74d7b6b814
plans(7I.4): add 3rd feedback batch
2026-04-12 14:01:30 +09:00
reloop
9344a01e30
plans: Phase 7I 완료 (3/3)
2026-04-12 13:45:27 +09:00
reloop
59f66528ca
style(ui): review toggle + stats layout + exam spacing + sidebar fix — 7I.3
2026-04-12 13:44:48 +09:00
reloop
4c61b87052
feat(data): chosenAnswer + solve route + profile tabs — 7I.2
2026-04-12 13:35:39 +09:00
reloop
e76e14eb1d
feat(parse): per-problem image crop for all subjects — 7I.1
2026-04-12 13:24:30 +09:00
reloop
db9f1ede16
plans(7I): image-first pipeline + UX batch fix
2026-04-12 13:03:27 +09:00
reloop
4dbb587e5e
fix(main): use namespace import for express to avoid default interop
2026-04-12 08:29:33 +09:00
reloop
fd9e03bd9c
fix(deps): add express as direct dep — main.ts uses express.json/urlencoded
2026-04-12 08:28:31 +09:00
reloop
9d6c00b16d
plans: Phase 7G/7H/8 완료 (11/11)
2026-04-12 08:26:50 +09:00
reloop
c36978c363
feat(security): helmet + rate limit + env hardening — 8.3
2026-04-12 08:26:17 +09:00
reloop
eb0e07bab9
feat(legal): privacy/terms/contact + themed 404/500 — 8.2
2026-04-12 08:23:16 +09:00
reloop
7ba7b4afd2
feat(seo): PWA manifest + metadata + sitemap — 8.1
2026-04-12 08:17:20 +09:00
reloop
8a91ab46f7
feat(ui): render problem images in exam/review/detail — 7H.2
2026-04-12 08:12:58 +09:00
reloop
acc35e9284
feat(parse): math + image-based problem pipeline — 7H.1
2026-04-12 08:06:54 +09:00
reloop
a5dab35618
feat(profile): avatar upload + onboarding wizard + mobile dropdown — 7G.6
2026-04-12 07:48:55 +09:00
reloop
e332d270c8
feat(ui): themed Select/DatePicker + compact heatmap + subjects mobile fix — 7G.5
2026-04-12 07:38:17 +09:00
reloop
feb1a624a5
feat(landing): typing effect + D-day sync + scroll animations + copy — 7G.4
2026-04-12 07:29:19 +09:00
reloop
9068fcbd48
feat(detail): study log detail + review wiring + seeded S0 — 7G.3
2026-04-12 07:21:53 +09:00
reloop
7c5cdf4c64
feat(exam): 4-button nav + overflow menu + resizable + tag auto — 7G.2
2026-04-12 07:14:32 +09:00
reloop
47a70f226b
feat(ia): /exams route + focus toggle + mobile logout access — 7G.1
2026-04-12 07:07:37 +09:00
reloop
76c5026cd3
plans(7G/7H/8): expand for user feedback + production readiness
2026-04-12 06:58:09 +09:00
reloop
c748941018
plans: Phase 7F.4 + 7F.5 완료 — parser refactor + OCR fallback
2026-04-12 06:30:36 +09:00
reloop
dcf1eb6021
feat(ocr): vision-based fallback for needsReview problems — 7F.5
2026-04-12 06:29:47 +09:00
reloop
c9935cf303
refactor(parse): extract reusable parser + fix segmentation — 7F.4
2026-04-12 06:15:07 +09:00
reloop
350320fa8d
plans: Phase 7F 완료 (3/3) — 용어 순화 + 모의고사 + 모바일
2026-04-12 05:53:35 +09:00
reloop
80b3e98797
style(mobile): responsive sweep across Phase 7D pages + exam — 7F.3
2026-04-12 05:52:57 +09:00
reloop
31d62fbe33
feat(study): mock exam flow from KICE problem sets — 7F.2
2026-04-12 05:45:50 +09:00
reloop
cbc3af2a6b
style(copy): replace math jargon with plain Korean — 7F.1
2026-04-12 05:32:27 +09:00
reloop
f336916afd
plans(7F): add revision phase — jargon / mock exam / mobile
2026-04-12 05:29:10 +09:00