diff --git a/demo/frontend/src/api/analytics.js b/demo/frontend/src/api/analytics.js
new file mode 100644
index 0000000..86a421c
--- /dev/null
+++ b/demo/frontend/src/api/analytics.js
@@ -0,0 +1,27 @@
+import request from './request'
+
+// 获取日活用户趋势数据
+export const getDailyActiveUsersTrend = (year = '2024', granularity = 'monthly') => {
+ return request({
+ url: '/analytics/daily-active-users',
+ method: 'get',
+ params: { year, granularity }
+ })
+}
+
+// 获取用户活跃度概览
+export const getUserActivityOverview = () => {
+ return request({
+ url: '/analytics/user-activity-overview',
+ method: 'get'
+ })
+}
+
+// 获取用户活跃度热力图数据
+export const getUserActivityHeatmap = (year = '2024') => {
+ return request({
+ url: '/analytics/user-activity-heatmap',
+ method: 'get',
+ params: { year }
+ })
+}
diff --git a/demo/frontend/src/components/DailyActiveUsersChart.vue b/demo/frontend/src/components/DailyActiveUsersChart.vue
new file mode 100644
index 0000000..f00db85
--- /dev/null
+++ b/demo/frontend/src/components/DailyActiveUsersChart.vue
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
diff --git a/demo/frontend/src/views/Home.vue b/demo/frontend/src/views/Home.vue
index c3a61c4..c25b748 100644
--- a/demo/frontend/src/views/Home.vue
+++ b/demo/frontend/src/views/Home.vue
@@ -236,6 +236,7 @@ import { useRouter } from 'vue-router'
import { useUserStore } from '@/stores/user'
import { ElMessage } from 'element-plus'
import * as dashboardAPI from '@/api/dashboard'
+import DailyActiveUsersChart from '@/components/DailyActiveUsersChart.vue'
const router = useRouter()
const userStore = useUserStore()
diff --git a/demo/src/main/java/com/example/demo/controller/AnalyticsApiController.java b/demo/src/main/java/com/example/demo/controller/AnalyticsApiController.java
new file mode 100644
index 0000000..95f7fc7
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/controller/AnalyticsApiController.java
@@ -0,0 +1,174 @@
+package com.example.demo.controller;
+
+import com.example.demo.repository.UserActivityStatsRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/api/analytics")
+@CrossOrigin(origins = "*")
+public class AnalyticsApiController {
+
+ @Autowired
+ private UserActivityStatsRepository userActivityStatsRepository;
+
+ /**
+ * 获取日活用户趋势数据
+ */
+ @GetMapping("/daily-active-users")
+ public ResponseEntity