feat(stats): weekly review snapshot 1차 구현
This commit is contained in:
@@ -19,15 +19,62 @@ export const app = {
|
||||
],
|
||||
},
|
||||
stats: {
|
||||
title: 'Stats',
|
||||
title: 'Weekly Review',
|
||||
apiLabel: 'API',
|
||||
mockLabel: 'Mock',
|
||||
sourceApi: 'API 통계 사용 중',
|
||||
sourceMock: 'API 실패로 mock 통계 표시 중',
|
||||
loading: '통계를 불러오는 중이에요.',
|
||||
loadFailed: '통계를 불러오지 못했어요.',
|
||||
synced: '화면 진입 시 최신 요약을 동기화합니다.',
|
||||
synced: '최근 7일 review를 최신 요약으로 동기화합니다.',
|
||||
refresh: '새로고침',
|
||||
reviewPeriodLabel: '최근 7일 review',
|
||||
reviewTitle: '이번 주 집중 리듬',
|
||||
reviewSnapshotEmpty: '이번 주에는 아직 집중 기록이 많지 않아요. 다음 세션 하나만 다시 만들면 충분해요.',
|
||||
reviewSnapshotStrong: '이번 주에는 시작한 흐름을 끝까지 가져간 편이에요.',
|
||||
reviewSnapshotSteady: '이번 주에는 시작은 꾸준했고, 마무리 리듬은 조금 더 다듬을 여지가 있어요.',
|
||||
reviewSnapshotRecoveryNeeded: '이번 주에는 시작은 있었지만, 닫힘보다 이월이 더 많았어요.',
|
||||
reviewStarted: '시작한 세션',
|
||||
reviewStartedHint: '최근 7일 space에 들어간 흐름',
|
||||
reviewCompleted: '마무리한 세션',
|
||||
reviewCompletedHint: 'goal 또는 timer를 닫은 세션',
|
||||
reviewFocusMinutes: '집중 시간',
|
||||
reviewFocusMinutesHint: '최근 7일 누적 focus 시간',
|
||||
reviewCarriedOver: '이월된 블록',
|
||||
reviewCarriedOverHint: '다음 날로 이어진 블록',
|
||||
reviewStartTitle: '시작 품질',
|
||||
reviewStartEmpty: '아직 시작 기록이 많지 않아요. 다음 주에는 시작 횟수 하나를 더 만드는 것이 우선이에요.',
|
||||
reviewStartSummary: (startedSessions: number, bestDayLabel: string, averageDepthLabel: string) =>
|
||||
`이번 주엔 ${startedSessions}번 시작했고, ${bestDayLabel}에 가장 길게 이어졌어요. 한 번 시작했을 때 평균 ${averageDepthLabel} 정도 머물렀어요.`,
|
||||
reviewAverageDepth: '평균 세션 깊이',
|
||||
reviewAverageDepthHint: '한 번 시작했을 때 이어진 평균 시간',
|
||||
reviewBestDay: '가장 길게 이어진 날',
|
||||
reviewBestDayHint: (minutes: number) => `${minutes}분 동안 가장 오래 집중했어요.`,
|
||||
reviewRecoveryTitle: '복귀 품질',
|
||||
reviewRecoveryMockSummary: '이번 주에는 pause 뒤에도 다시 올라탄 흐름이 있었어요. 복귀는 적었지만 분명히 존재했어요.',
|
||||
reviewRecoveryLimitedSummary: '복귀 패턴은 아직 이 review에 충분히 합쳐지지 않았어요. 지금은 시작과 마무리 흐름을 먼저 봅니다.',
|
||||
reviewRecoveryMockNote: 'mock 기준으로 pause 뒤 복귀와 away 뒤 복귀를 함께 보여줍니다.',
|
||||
reviewRecoveryLimitedNote: 'pause / away 복귀 집계는 다음 연결 단계에서 이 review에 포함됩니다.',
|
||||
reviewPauseRecovery: 'pause 뒤 복귀',
|
||||
reviewPauseRecoveryHint: '멈춘 뒤 다시 돌아온 비율',
|
||||
reviewAwayRecovery: '자리 비움 뒤 복귀',
|
||||
reviewAwayRecoveryHint: '앱을 떠났다가 다시 돌아온 비율',
|
||||
reviewCompletionTitle: '마무리 품질',
|
||||
reviewCompletionEmpty: '이번 주에는 아직 마무리 흐름을 읽을 만큼 세션이 쌓이지 않았어요.',
|
||||
reviewCompletionStrong: '이번 주에는 시작한 세션을 끝까지 가져가는 힘이 비교적 안정적이었어요.',
|
||||
reviewCompletionSummary: (completionRate: string, carriedOverCount: number) =>
|
||||
`완료율은 ${completionRate}였고, 이월된 블록은 ${carriedOverCount}개였어요. 다음 주에는 닫힘 리듬을 더 분명히 만들 여지가 있어요.`,
|
||||
reviewCompletionRate: '완료율',
|
||||
reviewCompletionRateHint: '시작한 세션 중 마무리까지 간 비율',
|
||||
reviewCarryKeep: (bestDayLabel: string) => `${bestDayLabel}처럼 길게 이어졌던 흐름을 다음 주에도 기본 리듬으로 유지해 보세요.`,
|
||||
reviewCarryKeepGeneric: '이번 주에 가장 오래 이어진 흐름의 길이를 다음 주 기본 리듬으로 유지해 보세요.',
|
||||
reviewCarryTryDefault: '다음 주 첫 세션은 시간을 늘리기보다, 바로 시작할 한 줄을 더 작게 잡아 보세요.',
|
||||
reviewCarryTrySmaller: '이월된 블록이 많았어요. 다음 주에는 목표를 더 작게 잡고 첫 microStep을 더 구체적으로 적어보세요.',
|
||||
reviewCarryTryClosure: '시작은 있었지만 마무리가 약했어요. 다음 주에는 완료 직전에 다른 블록으로 넘어가지 않는 흐름을 한 번 만들어 보세요.',
|
||||
reviewCarryTryStart: '시작 횟수가 적었어요. 다음 주에는 길이를 늘리기보다 첫 세션을 한 번 더 여는 것에 집중해 보세요.',
|
||||
reviewCarryCta: '이 흐름으로 다음 세션 시작',
|
||||
reviewCarryKeepTitle: '다음 주에 유지할 것',
|
||||
reviewCarryTryTitle: '다음 주에 바꿔볼 것',
|
||||
today: '오늘',
|
||||
last7Days: '최근 7일',
|
||||
chartTitle: '집중 흐름 그래프',
|
||||
|
||||
Reference in New Issue
Block a user