Skip to content

feat(dashboard): 会话控制页面迭代 — 列隐藏 / 已关闭会话解锁 / 单聊名字格式#574

Open
nil-err wants to merge 1 commit into
deepcoldy:masterfrom
nil-err:codex/dashboard-session-control-iter
Open

feat(dashboard): 会话控制页面迭代 — 列隐藏 / 已关闭会话解锁 / 单聊名字格式#574
nil-err wants to merge 1 commit into
deepcoldy:masterfrom
nil-err:codex/dashboard-session-control-iter

Conversation

@nil-err

@nil-err nil-err commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Botmux Dashboard 会话控制页面迭代

需求 1 · 表格视图支持隐藏部分列

  • preferences.ts: 新增 SESSIONS_TABLE_COLUMNS_STORAGE_KEY + normalizeHiddenTableColumns / readStoredHiddenTableColumns / writeStoredHiddenTableColumns,沿用现有 localStorage 持久化模式
  • sessions-page.tsx: SessionsTable 重构为 allColumns + visibleColumns,表头/行/空态 colSpan 按可见列数动态计算;操作列表头加「列」下拉菜单(<details> + checkbox + 重置按钮);排序列被隐藏时回退到 lastMessageAt desc
  • style.css: 列下拉菜单样式(与批量操作栏风格协调)
  • i18n.ts: 新增 sessions.columns / columnsMenu / columnsReset 中英文键
  • 「选择」「操作」列固定不可隐藏,其余 11 列均可切换;默认全显,用户手动隐藏后持久化

需求 2 · 已关闭会话解锁

  • sessions-page.tsx: Drawer 详情弹窗移除 lock 按钮 status !== 'closed' 限制,closed 会话也能锁/解锁
  • 后端 /api/sessions/:id/lock 已支持任意状态,仅前端改动;批量不扩(closed 不可选是现有设计,放开牵连面太大);仅切换 locked 标记,不联动恢复

需求 3 · 单聊名字格式

  • sessions.ts: 新增 sessionDirectChatText,p2p 显示 单聊 · 用户名 - bot名,用户名缺失回退 chatId,bot 名取 botDisplayName(与表格 bot 列同源);sessionLocationText 接入并同步影响 sessionLocationTitle / sessionSearchText
  • 群聊保持 群聊 · 群名 不变

测试

  • test/dashboard-preferences.test.ts: 新增列显隐偏好测试组(归一化/回退/持久化/固定列过滤,5 用例)
  • test/dashboard-sessions-ui.test.ts: 更新单聊位置标签断言

验证结果

  • tsc --noEmit: 改动文件零错误
  • 相关单测: 40 passed(preferences 21 + sessions-ui 19)
  • git diff --check: 通过
  • 敏感信息扫描: 无凭证/密钥/Token 泄露(命中项均为业务字段名 tokenIn/tokenOut/cssToken

Review

  • 已通过 @Nil-Reviewer 独立复核,3 条非阻塞建议(未使用 i18n 键移除 / 更新器副作用外移 / 测试覆盖)均已修复并复核通过

PR 创建后不自动 merge,等人工审核。

需求 1 · 表格视图支持隐藏部分列
- preferences.ts: 新增 SESSIONS_TABLE_COLUMNS_STORAGE_KEY + normalizeHiddenTableColumns / readStoredHiddenTableColumns / writeStoredHiddenTableColumns,沿用 localStorage 持久化模式
- sessions-page.tsx: SessionsTable 重构为 allColumns + visibleColumns,表头/行/空态 colSpan 按可见列数动态计算;操作列表头加「列」下拉菜单(details + checkbox + 重置);排序列被隐藏时回退 lastMessageAt desc
- style.css: 列下拉菜单样式
- i18n.ts: 新增 sessions.columns / columnsMenu / columnsReset 中英文键

需求 2 · 已关闭会话解锁
- sessions-page.tsx: Drawer 弹窗移除 lock 按钮 status !== 'closed' 限制,closed 会话也能锁/解锁(后端 /lock 已支持任意状态,仅前端改动)

需求 3 · 单聊名字格式
- sessions.ts: 新增 sessionDirectChatText,p2p 显示「单聊 · 用户名 - bot名」,用户名缺失回退 chatId,bot 名取 botDisplayName;sessionLocationText 接入并同步影响 sessionLocationTitle / sessionSearchText

测试
- test/dashboard-preferences.test.ts: 新增列显隐偏好测试组(归一化/回退/持久化/固定列过滤)
- test/dashboard-sessions-ui.test.ts: 更新单聊位置标签断言

验证: tsc --noEmit 改动文件零错误 / 相关单测 40 passed
@nil-err
nil-err requested a review from deepcoldy as a code owner July 23, 2026 13:30
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