Skip to content

feat: Add public activity panel - #24

Closed
lanyue-llk wants to merge 1 commit into
lex-mainfrom
codex/activity-public-panel
Closed

feat: Add public activity panel#24
lanyue-llk wants to merge 1 commit into
lex-mainfrom
codex/activity-public-panel

Conversation

@lanyue-llk

Copy link
Copy Markdown

变更概述

在 Lex Voice 前端增加可配置的“团队动态”入口,用全屏面板嵌入 Activity Intelligence 公共聚合页。未配置 URL 时不显示入口。

主要改动

1. 公共活动面板

  • 新增带可访问名称的入口、全屏 dialog、关闭按钮和 iframe。
  • 面板说明公共视图不展示个人明细,保留现有通话欢迎页与会话界面。

2. 配置与文档

  • AppConfig 支持 activityIntelligencePublicUrl
  • 服务端环境变量优先于 NEXT_PUBLIC_ 回退值。
  • README 与 .env.example 说明集成方式和隐私边界。

影响说明

  • 默认配置没有 UI 变化。
  • 配置公共 URL 后,用户可在欢迎页或通话页打开团队聚合趋势。
  • 本地验证确认 iframe 正常加载,趋势图渲染成功,关闭路径可用。

验证

  • pnpm test

    ✅ passed: 246 passed

  • pnpm lint

    ✅ passed: no issues found

  • pnpm build

    ✅ passed: Next.js production build completed

  • pnpm format:check

    ✅ passed: all matched files use Prettier style

@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

Claude finished @lanyue-llk's task in 1m 36s —— View job


Review 结论

有条件通过

问题及建议

  • [P1] components/app/activity-panel.tsx:28-32:面板用 role="dialog" aria-modal="true" 声明为模态框,但未实现 Esc 键关闭、打开时焦点转移到面板内、关闭后焦点归还触发按钮。键盘/屏幕阅读器用户无法用标准方式关闭全屏面板,不符合 WAI-ARIA modal dialog 的最低要求。建议:增加 useEffect 监听 Escape 调用 setOpen(false),并在打开时把焦点移到关闭按钮上,关闭时归还给触发按钮。Fix this →

  • [P1] components/app/activity-panel.tsx:53-58iframe 直接嵌入外部第三方 URL(来自可配置的 env),未设置 sandbox 属性,且 allow="clipboard-read; clipboard-write" 对一个只读的聚合趋势看板授予了非必要的剪贴板权限,扩大了被嵌入页面的攻击面。建议:加上 sandbox="allow-scripts allow-same-origin"(按实际需要最小化),并移除不必要的 allow 权限,除非 Activity Intelligence 页面确实需要剪贴板访问。Fix this →

  • [P2] lib/utils.ts:312-314activityIntelligencePublicUrl 直接读取 env 字符串,未校验协议。若误配置为 http:// 会在 https 页面下触发混合内容拦截,或被配置为非预期协议(如 javascript:/data:)。建议增加简单的 new URL(...) 校验并限制为 https:,非法值时回退为 undefined(同时对应处入口按钮就不会渲染)。

  • [P2] components/app/activity-panel.tsx:21:触发按钮以 fixed top-16 right-4 z-40 全局渲染在 App 层,通话页 transcript 展开时该区域正是聊天记录顶部内容区(session-view.tsxpt-40 起始的滚动区),存在与消息气泡重叠遮挡的可能。建议实测通话页在有较多消息时的视觉效果,必要时对齐现有顶部/底部安全区处理。

其他说明

  • 配置默认关闭、无 URL 时入口不渲染,改动范围克制,符合 PR 描述;app-config.ts.env.exampleREADME.md 的文档说明清晰。
  • 未发现 secret 泄露、TypeScript 类型问题或与本次改动无关的多余变更。

@lanyue-llk lanyue-llk closed this Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant