Skip to content

feat: #59 대시보드 View 연결 (1단계 최소 버전) - #61

Open
wngjs8114 wants to merge 2 commits into
devfrom
feature/#59-dashboard
Open

feat: #59 대시보드 View 연결 (1단계 최소 버전)#61
wngjs8114 wants to merge 2 commits into
devfrom
feature/#59-dashboard

Conversation

@wngjs8114

Copy link
Copy Markdown
Collaborator

관련 이슈

Closes #59

작업 내용

확정된 View 연결 우선순위의 2단계. planner:dashboard View를 연결한다.

  • 시험기간 없음 → 온보딩 안내
  • 시험기간 있음 + 계획 없음 → 다음 단계 안내 (next_step_label/next_step_url)
  • 계획 있음 → 오늘 할 일 개수·시간, 복구 대기 여부, 오늘의 공부 이동

1단계 범위 (의도적으로 축소)

#51(FE2 대시보드 화면)의 최종 context 스키마에는 Fit Bar, 과목별 요약, 진행률 집계(overall, subject_summary, progress)까지 포함되지만, 이번 PR에서는 그 계산 로직을 만들지 않는다.

Django 템플릿은 없는 context 변수를 참조해도 에러 없이 빈 값으로 렌더링되므로, 화면이 깨지지 않고 숫자/막대/배지만 비어 보이는 상태로 동작한다. overall/subject_summary/progress 계산은 핵심 흐름(하루 마감, 복구안 적용) View까지 연결된 뒤 3단계에서 추가한다.

#51(FE2 대시보드) 머지 이후 반영한 것

이 브랜치는 원래 #51 머지 전에 시작해서, #51이 먼저 dev에 들어간 뒤 rebase하며 dashboard.html을 FE2의 실제 템플릿으로 교체했다. 그 과정에서 FE2가 최종 확정한 context 이름에 맞춰 View도 같이 수정했다.

  • pending_recovery.group_idpending_recovery.recovery_group_id (모델 필드명과 일치)
  • today_minutes 필드 추가 (기존엔 today_count만 있었음)

테스트

  • python manage.py test planner → 118개 통과 (기존 112 + 신규 6)
  • 신규 테스트: 시험기간 없을 때 온보딩, 계획 없을 때 다음 단계 안내(작업 준비 여부별 분기), 계획 있을 때 오늘 할 일 개수 표시, 복구 대기 배너 표시, 다른 사용자 시험기간 미노출

이번 PR 범위 밖

  • Fit Bar, 과목별 요약, 진행률 집계 (3단계에서 추가)
  • planner:today로의 실제 이동 (today View는 다음 단계 작업, 지금은 href="#")

@wngjs8114
wngjs8114 requested a review from 6ye0m August 5, 2026 09:42
@wngjs8114 wngjs8114 self-assigned this Aug 5, 2026
@6ye0m

6ye0m commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

코드 직접 받아서 확인했습니다. 온보딩/다음 단계 안내/작업 준비 여부 분기 로직 잘 동작하고, 118개 테스트 전부 통과 확인했습니다.

다만 pending_recovery 조회 범위에 보완이 필요해 보입니다.

현재 로직:

python
pending_recovery_item = None
if today_plan and today_plan.finalized_at:
pending_recovery_item = (
RecoveryPlan.objects
.filter(source_daily_plan=today_plan, status='pending')
.first()
)

이 로직은 "오늘 계획이 마감됐는지"와 "복구안이 오늘 계획에서 나왔는지" 둘 다 오늘 하루로 한정합니다.

실제로는 어제 하루를 마감했는데(어제 계획에 finalized_at 찍힘) 그 자리에서 복구안을 바로 적용/포기하지 않고 앱을 닫는 경우가 흔할 것 같습니다. 이 경우 RecoveryPlan.status='pending'인 레코드가 DB에 남아있어도, 오늘 대시보드를 열었을 때 today_plan.finalized_at은 아직 비어있으니 조건 자체를 안 타서 배너가 안 뜹니다. finalize_daily_plan()은 미래 날짜만 막을 뿐 오늘 날짜도 마감 가능하니 "오늘 마감 → 오늘 확인" 케이스는 정상 동작하지만, "어제 마감 → 오늘 확인" 케이스가 빠져있습니다.

조회 범위를 특정 날짜(today_plan)가 아니라 시험기간 전체로 넓히는 방향을 제안드립니다.

python
pending_recovery_item = (
RecoveryPlan.objects
.filter(source_daily_plan__exam_period=exam_period, status='pending')
.order_by('-created_at')
.first()
)

참고로 아래 2가지도 같이 봐주시면 좋을 것 같습니다 (급한 건 아닙니다).

status='active', status='pending' 같은 문자열보다 ExamPeriodStatus.ACTIVE, RecoveryPlanStatus.PENDING처럼 enum 상수를 쓰면 오타 방지에 좋을 것 같습니다.
today_count가 오늘 계획된 전체 작업 수라 이미 끝낸 작업도 포함됩니다 (진행률 집계가 3단계 범위라 이해합니다). 다만 화면 문구를 "오늘 계획된 작업" 식으로 명확히 하면 사용자가 "n개 다 남았다"고 오해하지 않을 것 같습니다.

pending_recovery 범위만 반영되면 머지해도 좋을 것 같습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[planner] 대시보드 View 연결 (1단계 최소 버전)

2 participants