+
-
-
+
+
+
+
+
+
私聊数据分析
+
+ WeFlow 可以分析你的好友聊天记录,生成详细的统计报表。
+ 你可以选择加载上次的分析结果,或者重新开始一次新的私聊分析。
+
-
+
+
+
+
+
diff --git a/src/pages/ChatAnalyticsHubPage.scss b/src/pages/ChatAnalyticsHubPage.scss
new file mode 100644
index 0000000..4d970cd
--- /dev/null
+++ b/src/pages/ChatAnalyticsHubPage.scss
@@ -0,0 +1,123 @@
+.chat-analytics-hub-page {
+ min-height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 40px 24px;
+}
+
+.chat-analytics-hub-content {
+ width: min(860px, 100%);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+}
+
+.chat-analytics-hub-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ padding: 8px 14px;
+ border-radius: 999px;
+ background: var(--primary-light);
+ color: var(--primary);
+ font-size: 13px;
+ font-weight: 600;
+}
+
+.chat-analytics-hub-content h1 {
+ margin: 20px 0 12px;
+ font-size: 32px;
+ line-height: 1.2;
+ color: var(--text-primary);
+}
+
+.chat-analytics-hub-desc {
+ max-width: 620px;
+ margin: 0 0 32px;
+ color: var(--text-secondary);
+ font-size: 15px;
+ line-height: 1.7;
+}
+
+.chat-analytics-hub-grid {
+ width: 100%;
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 20px;
+}
+
+.chat-analytics-entry-card {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ text-align: left;
+ gap: 14px;
+ min-height: 260px;
+ padding: 28px;
+ border: 1px solid var(--border-color);
+ border-radius: 20px;
+ background:
+ linear-gradient(180deg, rgba(7, 193, 96, 0.08) 0%, rgba(7, 193, 96, 0.02) 100%),
+ var(--card-bg);
+ color: var(--text-primary);
+ cursor: pointer;
+ transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
+
+ &:hover {
+ transform: translateY(-4px);
+ border-color: rgba(7, 193, 96, 0.35);
+ box-shadow: 0 20px 36px rgba(7, 193, 96, 0.12);
+ }
+
+ .entry-card-icon {
+ width: 52px;
+ height: 52px;
+ border-radius: 16px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: rgba(7, 193, 96, 0.12);
+ color: #07c160;
+
+ &.group {
+ background: rgba(24, 119, 242, 0.12);
+ color: #1877f2;
+ }
+ }
+
+ .entry-card-header {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ }
+
+ h2 {
+ margin: 0;
+ font-size: 24px;
+ line-height: 1.2;
+ }
+
+ p {
+ margin: 0;
+ color: var(--text-secondary);
+ font-size: 14px;
+ line-height: 1.7;
+ }
+
+ .entry-card-cta {
+ margin-top: auto;
+ color: var(--primary);
+ font-size: 13px;
+ font-weight: 600;
+ }
+}
+
+@media (max-width: 900px) {
+ .chat-analytics-hub-grid {
+ grid-template-columns: 1fr;
+ }
+}
diff --git a/src/pages/ChatAnalyticsHubPage.tsx b/src/pages/ChatAnalyticsHubPage.tsx
new file mode 100644
index 0000000..6c4456e
--- /dev/null
+++ b/src/pages/ChatAnalyticsHubPage.tsx
@@ -0,0 +1,59 @@
+import { ArrowRight, BarChart3, MessageSquare, Users } from 'lucide-react'
+import { useNavigate } from 'react-router-dom'
+import './ChatAnalyticsHubPage.scss'
+
+function ChatAnalyticsHubPage() {
+ const navigate = useNavigate()
+
+ return (
+
+
+
+
+ 聊天分析
+
+
+
选择你要进入的分析视角
+
+ 私聊分析更适合看好友聊天统计和趋势,群聊分析则用于查看群成员、发言排行和活跃时段。
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default ChatAnalyticsHubPage
diff --git a/src/pages/ChatPage.tsx b/src/pages/ChatPage.tsx
index 6256d9b..357e1df 100644
--- a/src/pages/ChatPage.tsx
+++ b/src/pages/ChatPage.tsx
@@ -3323,7 +3323,7 @@ function ChatPage(props: ChatPageProps) {
const handleGroupAnalytics = useCallback(() => {
if (!currentSessionId || !isGroupChatSession(currentSessionId)) return
- navigate('/group-analytics', {
+ navigate('/analytics/group', {
state: {
preselectGroupIds: [currentSessionId]
}
diff --git a/src/pages/GroupAnalyticsPage.scss b/src/pages/GroupAnalyticsPage.scss
index b9cd651..867b4c2 100644
--- a/src/pages/GroupAnalyticsPage.scss
+++ b/src/pages/GroupAnalyticsPage.scss
@@ -463,6 +463,10 @@
background: var(--bg-secondary);
border-radius: 16px;
overflow: hidden;
+
+ .chat-analysis-header {
+ margin: 16px 16px 0;
+ }
}
.resize-handle {
diff --git a/src/pages/GroupAnalyticsPage.tsx b/src/pages/GroupAnalyticsPage.tsx
index 4d2c65e..c706822 100644
--- a/src/pages/GroupAnalyticsPage.tsx
+++ b/src/pages/GroupAnalyticsPage.tsx
@@ -4,6 +4,7 @@ import { Users, BarChart3, Clock, Image, Loader2, RefreshCw, Medal, Search, X, C
import { Avatar } from '../components/Avatar'
import ReactECharts from 'echarts-for-react'
import DateRangePicker from '../components/DateRangePicker'
+import ChatAnalysisHeader from '../components/ChatAnalysisHeader'
import * as configService from '../services/config'
import {
finishBackgroundTask,
@@ -1189,6 +1190,7 @@ function GroupAnalyticsPage() {
{renderGroupList()}
setIsResizing(true)} />
+
{renderDetailPanel()}
{renderMemberModal()}