diff --git a/HANDOFF.md b/HANDOFF.md index a4b649e..48a0152 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -232,6 +232,8 @@ - 이월된 할 일은 `carryoverFrom` 날짜를 가진다. TASK 본문에는 `이월` 배지를 표시하고, 클릭하면 오른쪽 `READ NEXT` 영역에 원래 시작 날짜를 안내한다. - 이월된 할 일을 완료할 때는 이전 날짜의 같은 이월 항목까지 모두 체크할지, 현재 날짜만 체크할지 선택한다. 기본값은 `항상 물어보기`이며, SETTINGS의 `CARRYOVER CHECK`에서 `항상 이전까지 체크` / `항상 오늘만 체크`로 바꿀 수 있다. - 오른쪽 플래너 사이드바의 중복 `STATS` 카드는 제거했다. 미완료 항목 이월 버튼은 `READ NEXT` 카드 아래로 이동했다. +- 통계 화면은 진입 시 END DATE를 오늘로 보정한다. `최근 1주`, `최근 1달` 빠른 선택을 추가했고, 기존 `WEEKLY FLOW`는 선택 범위 안에서 기록이 있는 날짜별 집중 흐름을 보여주는 `RANGE FLOW`로 이름과 라벨을 정리했다. +- `BEST DAY`는 선택 기간 안에서 집중 시간이 가장 긴 날짜를 고르고, `RECENT RECORDS`는 선택 기간 안의 기록을 날짜 내림차순으로 최대 5개 보여준다. ## 갱신 규칙 diff --git a/src/App.vue b/src/App.vue index b844297..d7a7253 100644 --- a/src/App.vue +++ b/src/App.vue @@ -959,7 +959,7 @@ const overviewCards = computed(() => [ }, { label: 'COMPLETED TASKS', - value: `${completedRecordedTasks.value}/${totalRecordedTasks.value || 0}`, + value: `${completedRecordedTasks.value} / ${totalRecordedTasks.value || 0}`, caption: '완료된 할 일과 전체 입력된 할 일 수', }, ]) @@ -985,6 +985,7 @@ const weeklyRecords = computed(() => { return { key, weekday: weekdayShort, + dateLabel: `${`${date.getMonth() + 1}`.padStart(2, '0')}.${`${date.getDate()}`.padStart(2, '0')}`, focusedMinutes, focusedTime: formatMinutesKorean(focusedMinutes), } @@ -1211,6 +1212,14 @@ function closeRightPanel() { rightPanelOpen.value = false } +function applyStatsQuickRange(days) { + const endDate = new Date() + const startDate = new Date(endDate) + startDate.setDate(endDate.getDate() - (days - 1)) + statsRangeStart.value = toKey(startDate) + statsRangeEnd.value = toKey(endDate) +} + function setScreenMode(mode) { if (mode === 'admin' && !isAdmin.value) { return @@ -1218,6 +1227,10 @@ function setScreenMode(mode) { screenMode.value = mode + if (mode === 'stats') { + statsRangeEnd.value = toKey(new Date()) + } + if (mode === 'admin') { void loadAdminDashboard() } @@ -2829,6 +2842,7 @@ onBeforeUnmount(() => { :range-end="normalizedStatsRange.endKey" @update:range-start="statsRangeStart = $event" @update:range-end="statsRangeEnd = $event" + @quick-range="applyStatsQuickRange" />