From 915aa19a2073d61531242113dd7ee48445253dbe Mon Sep 17 00:00:00 2001 From: digua Date: Mon, 20 Jul 2026 23:21:43 +0800 Subject: [PATCH] feat(web): add session insights --- .../components/session/SessionInsights.vue | 121 ++++++++++++++++++ .../insights/GroupRelationshipInsights.vue | 72 +++++++++++ apps/web-wasm/src/pages/SessionDetailPage.vue | 19 ++- .../analysis/message/TimeAnalysisView.vue | 2 +- .../analysis/message/TypeAnalysisView.vue | 2 +- .../quotes/LanguagePreferenceCard.vue | 20 ++- .../analysis/quotes/LanguagePreferenceTab.vue | 27 +++- .../analysis/quotes/SharedTopicsCard.vue | 14 +- .../analysis/quotes/WordcloudTab.vue | 80 +++++++----- .../quotes/sections/CatchphrasePKSection.vue | 22 ++-- .../analysis/relationships/ClusterView.vue | 4 +- .../relationships/InteractionView.vue | 4 +- .../relationships/MentionRankingView.vue} | 2 +- .../PrivateRelationshipView.vue} | 2 +- .../relationships}/RelationshipMetricCard.vue | 0 .../components/view/GroupRelationships.vue | 4 +- src/pages/private-chat/components/ViewTab.vue | 4 +- 17 files changed, 315 insertions(+), 84 deletions(-) create mode 100644 apps/web-wasm/src/components/session/SessionInsights.vue create mode 100644 apps/web-wasm/src/components/session/insights/GroupRelationshipInsights.vue rename src/{pages/group-chat/components/view/Relationships.vue => components/analysis/relationships/MentionRankingView.vue} (98%) rename src/{pages/private-chat/components/view/RelationshipView.vue => components/analysis/relationships/PrivateRelationshipView.vue} (99%) rename src/{pages/private-chat/components/view => components/analysis/relationships}/RelationshipMetricCard.vue (100%) diff --git a/apps/web-wasm/src/components/session/SessionInsights.vue b/apps/web-wasm/src/components/session/SessionInsights.vue new file mode 100644 index 00000000..7ca90d61 --- /dev/null +++ b/apps/web-wasm/src/components/session/SessionInsights.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/apps/web-wasm/src/components/session/insights/GroupRelationshipInsights.vue b/apps/web-wasm/src/components/session/insights/GroupRelationshipInsights.vue new file mode 100644 index 00000000..2f8430b2 --- /dev/null +++ b/apps/web-wasm/src/components/session/insights/GroupRelationshipInsights.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/apps/web-wasm/src/pages/SessionDetailPage.vue b/apps/web-wasm/src/pages/SessionDetailPage.vue index 3c082104..bcc5c2a0 100644 --- a/apps/web-wasm/src/pages/SessionDetailPage.vue +++ b/apps/web-wasm/src/pages/SessionDetailPage.vue @@ -9,6 +9,7 @@ import { useSessionAnalysisPageBase } from '@/composables' import { useSessionStore } from '@/stores/session' import GroupOverview from '../components/session/GroupOverview.vue' import PrivateOverview from '../components/session/PrivateOverview.vue' +import SessionInsights from '../components/session/SessionInsights.vue' const { t } = useI18n() const route = useRoute() @@ -16,8 +17,10 @@ const router = useRouter() const sessionStore = useSessionStore() const { currentSessionId } = storeToRefs(sessionStore) -// 闭环一只开放总览;后续洞察能力接通后再增加可交互 Tab,避免展示不可用入口。 -const tabs = [{ id: 'overview', labelKey: 'analysis.tabs.overview', icon: 'i-heroicons-chart-pie' }] +const tabs = [ + { id: 'overview', labelKey: 'analysis.tabs.overview', icon: 'i-heroicons-chart-pie' }, + { id: 'view', labelKey: 'analysis.tabs.view', icon: 'i-heroicons-presentation-chart-bar' }, +] const { activeTab, @@ -92,7 +95,7 @@ const loadErrorText = computed(() => :time-filter="timeFilter" /> :filtered-member-count="filteredMemberCount" :time-filter="timeFilter" /> + diff --git a/src/components/analysis/message/TimeAnalysisView.vue b/src/components/analysis/message/TimeAnalysisView.vue index e74fd7e3..16e845c1 100644 --- a/src/components/analysis/message/TimeAnalysisView.vue +++ b/src/components/analysis/message/TimeAnalysisView.vue @@ -296,7 +296,7 @@ watch(
-
+
-
+
() +const props = withDefaults( + defineProps<{ + data: LanguagePreferenceResult + enableRecordNavigation?: boolean + }>(), + { enableRecordNavigation: true } +) const emit = defineEmits<{ wordClick: [word: string] @@ -319,9 +323,10 @@ onUnmounted(() => { #{{ cpIdx + 1 }} 「{{ truncate(cp.content, 12) }}」 @@ -413,9 +418,10 @@ onUnmounted(() => {