Skip to content

Commit 2ba8838

Browse files
KayWalkerclaude
authored andcommitted
feat(stats): replace heatmap with Emotion Garden design
- Replace GitHub-style activity heatmap with user-friendly Emotion Garden - Emoji-based visualization: 🌱→🌿→🌷→🌸→🌻 based on emotion score - Add storytelling tooltips ("🌸 꽃이 활짝! 평균 8.5점의 하루") - Update legend to "마음의 정원" with intuitive growth progression - Add 11 widget tests for EmotionGarden - Bump version to 1.4.17+25 Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 0cc9d14 commit 2ba8838

File tree

8 files changed

+660
-19
lines changed

8 files changed

+660
-19
lines changed

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ MindLog는 사용자의 일기를 분석하여 감정 상태를 파악하고,
3939

4040
### 📊 감정 통계 대시보드
4141
- **감정 추이 차트**: 시간에 따른 감정 점수 변화를 라인 차트로 시각화
42-
- **활동 히트맵**: 일기 작성 빈도를 캘린더 형태로 표시
42+
- **감정 정원**: 일기 작성 빈도와 감정 점수를 🌱→🌿→🌷→🌸→🌻 식물 성장으로 시각화
4343
- **키워드 태그 클라우드**: 자주 등장하는 감정 키워드 시각화
4444
- 주간/월간 통계 요약
4545

@@ -101,7 +101,15 @@ GROQ_API_KEY=your_key ./scripts/run.sh run
101101

102102
## 🛠 변경 사항 (Changelog)
103103

104-
### v1.4.16 (Current)
104+
### v1.4.17 (Current)
105+
* **감정 정원(Emotion Garden) 디자인 도입:**
106+
* **기존 히트맵 → 감정 정원:** 개발자 스타일 GitHub 잔디심기 → 일반 사용자 친화적 식물 성장 메타포
107+
* **이모지 기반 시각화:** 감정 점수에 따라 🌱씨앗 → 🌿새싹 → 🌷꽃봉오리 → 🌸꽃 → 🌻해바라기로 성장
108+
* **스토리텔링 툴팁:** "🌸 꽃이 활짝! 평균 8.5점의 하루" 등 감성적 메시지
109+
* **범례 개선:** "마음의 정원 🌱→🌿→🌷→🌸→🌻" 직관적 안내
110+
* **테스트 추가:** EmotionGarden 위젯 테스트 11개 추가
111+
112+
### v1.4.16
105113
* **코드 품질 및 안정성 전면 개선 (Code Review P0-P3):**
106114
* **P0 Critical Fixes:**
107115
* Circuit Breaker 레이스 컨디션 해결 (Lock 패턴 적용)

docs/index.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<link rel="preconnect" href="https://fonts.googleapis.com">
99
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
1010
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap" rel="stylesheet">
11-
<link rel="stylesheet" href="style.css?v=20260112-stability">
11+
<link rel="stylesheet" href="style.css?v=20260112-garden">
1212
</head>
1313
<body>
1414
<header class="hero">
@@ -64,7 +64,7 @@ <h3>AI 감정 분석</h3>
6464
<div class="feature-card">
6565
<div class="feature-icon">📊</div>
6666
<h3>감정 통계 대시보드</h3>
67-
<p>감정 추이 차트, GitHub 스타일 활동 히트맵, 키워드 태그 클라우드로 나의 감정 패턴을 시각화합니다.</p>
67+
<p>감정 추이 차트, 감정 정원(🌱→🌻), 키워드 태그 클라우드로 나의 감정 패턴을 시각화합니다.</p>
6868
</div>
6969
<div class="feature-card">
7070
<div class="feature-icon">💬</div>
@@ -88,22 +88,22 @@ <h3>반응형 UI</h3>
8888
<section id="updates" class="updates">
8989
<div class="container">
9090
<h2 class="section-title">최근 개선</h2>
91-
<p class="section-subtitle">v1.4.16에서는 코드 품질 전면 리뷰를 통해 앱 안정성과 테스트 커버리지를 크게 향상시켰습니다.</p>
91+
<p class="section-subtitle">v1.4.17에서는 통계 화면을 '감정 정원'으로 새롭게 디자인하여 더 직관적이고 따뜻한 경험을 제공합니다.</p>
9292
<div class="updates-grid">
9393
<div class="update-card">
94-
<span class="update-tag">Stability</span>
95-
<h3>Race Condition 해결</h3>
96-
<p>Circuit Breaker 패턴에 Lock 기반 동기화를 적용하여 동시성 이슈를 근본적으로 해결했습니다.</p>
94+
<span class="update-tag">Design</span>
95+
<h3>감정 정원 🌱→🌻</h3>
96+
<p>기존 GitHub 스타일 히트맵을 식물 성장 메타포로 대체했습니다. 감정 점수에 따라 씨앗에서 해바라기까지 성장합니다.</p>
9797
</div>
9898
<div class="update-card">
99-
<span class="update-tag">API</span>
100-
<h3>Rate Limit 핸들링</h3>
101-
<p>429 에러 시 Retry-After 헤더를 파싱하여 지능적으로 재시도하는 탄력적 API 통신을 구현했습니다.</p>
99+
<span class="update-tag">UX</span>
100+
<h3>스토리텔링 툴팁</h3>
101+
<p>"🌸 꽃이 활짝! 평균 8.5점의 하루" 같은 감성적인 메시지로 기록을 돌아볼 수 있습니다.</p>
102102
</div>
103103
<div class="update-card">
104-
<span class="update-tag">Testing</span>
105-
<h3>테스트 커버리지 확대</h3>
106-
<p>Clock/Random 주입 패턴을 도입하여 결정론적 테스트를 가능하게 하고, 총 201개 테스트로 품질을 검증합니다.</p>
104+
<span class="update-tag">Intuitive</span>
105+
<h3>직관적 범례</h3>
106+
<p>"마음의 정원 🌱→🌿→🌷→🌸→🌻" 범례로 한눈에 감정 상태를 파악할 수 있습니다.</p>
107107
</div>
108108
</div>
109109
</div>

docs/update.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
{
2-
"latestVersion": "1.4.16",
2+
"latestVersion": "1.4.17",
33
"minSupportedVersion": "1.3.0",
44
"forceUpdate": false,
55
"androidUrl": "https://play.google.com/store/apps/details?id=com.kaywalker.mindlog",
66
"iosUrl": null,
77
"changelog": {
8+
"1.4.17": [
9+
"통계 화면이 '감정 정원'으로 새롭게 바뀌었어요! 🌱",
10+
"감정 점수에 따라 씨앗에서 해바라기까지 성장하는 모습을 확인하세요.",
11+
"툴팁을 누르면 \"🌸 꽃이 활짝!\" 같은 따뜻한 메시지가 표시돼요.",
12+
"마음의 정원 범례로 한눈에 내 감정 상태를 파악할 수 있어요."
13+
],
814
"1.4.16": [
915
"앱 안정성이 크게 향상되었어요!",
1016
"AI 분석 중 발생하던 간헐적 오류가 수정되었어요.",

lib/core/theme/app_colors.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ class AppColors {
6767
static const Color statsAccentCoral = Color(0xFFF5A895); // 스트릭 강조
6868
static const Color statsAccentMint = Color(0xFFA8E6CF); // 성취, 긍정
6969

70+
// Emotion Garden Colors (감정 정원)
71+
static const Color gardenSoil = Color(0xFFF5F0EB); // 빈 날 (흙)
72+
static const Color gardenSoilBorder = Color(0xFFE8E0D8); // 흙 테두리
73+
7074
/// 감정 점수에 따른 색상 반환
7175
static Color getSentimentColor(int score) {
7276
if (score <= 2) return sentimentVeryNegative;

lib/presentation/screens/statistics_screen.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import '../../domain/entities/statistics.dart';
88
import '../providers/providers.dart';
99
import '../widgets/emotion_line_chart.dart';
1010
import '../widgets/keyword_tags.dart';
11-
import '../widgets/activity_heatmap.dart';
11+
import '../widgets/emotion_garden.dart';
1212
import '../widgets/mindlog_app_bar.dart';
1313

1414
/// 감정 통계 화면 (레이아웃 B: 요약+잔디 우선형)
@@ -369,8 +369,8 @@ class _StatisticsScreenState extends ConsumerState<StatisticsScreen> {
369369
),
370370
const SizedBox(height: 16),
371371

372-
// 히트맵
373-
ActivityHeatmap(
372+
// 감정 정원
373+
EmotionGarden(
374374
activityMap: statistics.activityMap,
375375
weeksToShow: _getWeeksForPeriod(statistics, selectedPeriod),
376376
),

0 commit comments

Comments
 (0)