From 0012f9e784fa1222c8d429b6d1406abbb9b4b37d Mon Sep 17 00:00:00 2001 From: kevin Date: Tue, 25 Aug 2026 20:43:02 +0800 Subject: [PATCH] feat: add public activity panel --- .env.example | 2 + README.md | 5 +++ app-config.ts | 2 + components/app/activity-panel.tsx | 63 +++++++++++++++++++++++++++++++ components/app/app.tsx | 2 + lib/utils.ts | 3 ++ tests/project-config.test.mjs | 25 ++++++++++++ 7 files changed, 102 insertions(+) create mode 100644 components/app/activity-panel.tsx diff --git a/.env.example b/.env.example index 445933a67..70c34f752 100644 --- a/.env.example +++ b/.env.example @@ -16,3 +16,5 @@ # `OBSERVABILITY_ENABLED=1` uses the same unified switch as the backend. When # enabled by the LexVoice runtime, browser-side probes publish LiveKit data # packets for the local observability report. +# `ACTIVITY_INTELLIGENCE_PUBLIC_URL` enables the Team Pulse button and points +# its embedded panel at the aggregate-only public activity page. diff --git a/README.md b/README.md index 54ebe2f90..c95bb5d09 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,11 @@ input source as `lexvoice-${INPUT_SOURCE}-agent`; an explicit `AGENT_NAME` always wins. Standalone deployments that do not run a matching agent worker should set `AGENT_NAME` to the worker name they expect to dispatch. +Set `ACTIVITY_INTELLIGENCE_PUBLIC_URL` in the LexVoice repository `.env` to +show the “团队动态” entry in the voice UI. The URL must point to Activity +Intelligence's aggregate `/public` page; the embedded surface intentionally +excludes names, personal arrival times, and unobserved-member details. + Vision-related frontend variables use the `*_VISION_*` names. The older `*_VIDEO_*` names are still accepted as migration fallbacks, but new configuration should use the current names: diff --git a/app-config.ts b/app-config.ts index 79d6b54c8..58212b7fc 100644 --- a/app-config.ts +++ b/app-config.ts @@ -58,6 +58,7 @@ export interface AppConfig { debugAudio?: boolean; debugVideo?: boolean; observabilityEnabled?: boolean; + activityIntelligencePublicUrl?: string; // 全局调试配置 enableGlobalDebug?: boolean; // 全局调试开关,控制所有调试信息的显示 @@ -243,6 +244,7 @@ export const APP_CONFIG_DEFAULTS: AppConfig = { debugAudio: false, debugVideo: false, observabilityEnabled: false, + activityIntelligencePublicUrl: undefined, // 全局调试配置 enableGlobalDebug: process.env.NEXT_PUBLIC_ENABLE_GLOBAL_DEBUG === 'true' || false, // 全局调试开关 diff --git a/components/app/activity-panel.tsx b/components/app/activity-panel.tsx new file mode 100644 index 000000000..294fa24f0 --- /dev/null +++ b/components/app/activity-panel.tsx @@ -0,0 +1,63 @@ +'use client'; + +import { useState } from 'react'; +import { ChartLineUp, X } from '@phosphor-icons/react'; + +interface ActivityPanelProps { + publicUrl?: string; +} + +export function ActivityPanel({ publicUrl }: ActivityPanelProps) { + const [open, setOpen] = useState(false); + + if (!publicUrl) return null; + + return ( + <> + + + {open && ( +
+
+
+
+ +
+