- 통계 탭 삭제 (프론트 페이지/차트/네비 항목, 백엔드 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>
64 lines
2.2 KiB
JSON
64 lines
2.2 KiB
JSON
{
|
|
"schema_version": "sprint-contract.v1",
|
|
"generated_at": "2026-04-11T19:03:58.016Z",
|
|
"source": {
|
|
"plans_file": "Plans.md",
|
|
"task_id": "7D.1"
|
|
},
|
|
"task": {
|
|
"id": "7D.1",
|
|
"title": "**AppShell (사이드바)** — design-01.html 의 `aside.w-64` 레이아웃 (256px, 다크 bgDeep, indigo radial glow blur-80px, backdrop-blur-xl). 로고 indigo→violet gradient + Phosphor `ph-infinity`, nav 5 항목(대시보드/복습/학습 기록/통계/과목 및 태그) Phosphor icons, 활성 라우트 bg-white/5 + border-white/5, 하단 user card (아바타 + nickname + plan badge + caret 드롭다운). 모바일에서는 BottomNav 로 대체",
|
|
"definition_of_done": "기존 SideNav.tsx 교체, `/dashboard` 진입 시 새 사이드바 렌더, 활성 라우트 강조, 로그아웃 클릭 동작",
|
|
"depends_on": [
|
|
"7C.5"
|
|
],
|
|
"status_at_generation": "cc:WIP"
|
|
},
|
|
"contract": {
|
|
"checks": [
|
|
{
|
|
"id": "dod-primary",
|
|
"source": "Plans.md.DoD",
|
|
"description": "기존 SideNav.tsx 교체, `/dashboard` 진입 시 새 사이드바 렌더, 활성 라우트 강조, 로그아웃 클릭 동작"
|
|
},
|
|
{
|
|
"id": "check-styled",
|
|
"source": "manual",
|
|
"description": "styled-components 만 사용, Tailwind 클래스 금지"
|
|
},
|
|
{
|
|
"id": "check-phosphor",
|
|
"source": "manual",
|
|
"description": "components/ui/Icon.tsx (Phosphor) 사용"
|
|
},
|
|
{
|
|
"id": "check-preserve-auth",
|
|
"source": "manual",
|
|
"description": "useRouter/usePathname/hasToken/api 기존 로직 보존"
|
|
},
|
|
{
|
|
"id": "check-design-parity",
|
|
"source": "manual",
|
|
"description": "design-01.html aside 구조 1:1 반영 (width 256px, radial glow, gradient logo, active nav highlighting)"
|
|
}
|
|
],
|
|
"non_goals": [],
|
|
"runtime_validation": [
|
|
"cd frontend && pnpm exec tsc --noEmit"
|
|
],
|
|
"browser_validation": [],
|
|
"risk_flags": []
|
|
},
|
|
"review": {
|
|
"status": "approved",
|
|
"reviewer_profile": "static",
|
|
"browser_mode": null,
|
|
"route": null,
|
|
"reviewer_notes": [
|
|
"manually approved for codex delegation"
|
|
],
|
|
"approved_at": "2026-04-11T19:04:36.631Z",
|
|
"gaps": [],
|
|
"followups": []
|
|
}
|
|
} |