U8 产品原型站功能原型演示与产品需求文档 · 供开发与决策快速浏览

U8 Chat 2.0 · 聊天文件夹(会话分组)产品需求文档(PRD)

会话与消息 14493 字 02_PRD-文件夹.md 更新于 2026-09-21
← 返回功能演示列表
项目内容
文档版本v1.0(2026-09-18)· 依据现有设计稿,补齐交互口径、边界与判定规则。补充清单见第十二章,需要拍板的点见第十一章
功能模块聊天 → 文件夹(会话分组)
适用端iOS / Android(同一个 App,一套规则)。Web / Desktop 本期不做,原因见第八章
线框与演示同目录 index.html(19 屏可点击:设计稿 9 屏 + 补齐 10 屏)
设计稿Figma NmbFHYOQaU4IFyiiwZPEaS · 画布「文件夹设计图」node 5667-99896(9 屏,2026-09-18)
参照产品Telegram「Chat Folders」· 本期为阉割版,砍掉的清单见 2.2(这一章是本文档最重要的部分)

本 PRD 做了什么:设计稿把「创建 → 挑聊天 → 保存」这条主线画清楚了,也画好了编辑态之外的绝大多数界面。 缺的是两类东西:① 设计稿没画但必须有的页面(聊天列表上的文件夹标签栏、编辑态、移除确认弹窗、空态); ② 开发无法自行决定的判定规则(一个聊天能不能在多个文件夹、删除文件夹会不会丢聊天记录、新建的会话要不要自动进文件夹、 标签栏显示规则、重名怎么处理、上限多少)。 这两类都不是新功能,我把它们补齐在第六、七章;没有增加任何设计稿之外的 TG 能力(明确不做的清单见 2.2)。


一、背景与目标

1.1 背景

U8 Chat 的会话列表是一个没有任何分组的平铺长列表:所有的单聊、群聊、工作群、家庭群、砍价群全部混在一起,只按「新消息时间」排序。

会话数量上去之后,列表就变成了一个"什么都有、什么都要翻"的地方:

  1. 重要的人被刷掉:家人、老板的会话会被 20 个群聊顶下去,用户得一直往下翻。
  2. 找不到那个群:只记得群名头两个字,得靠搜索,而搜索是要"先想起来名字"的。
  3. 工作与生活没法分开:白天在工作群、晚上在生活群,但两边在同一个列表里互相干扰。

文件夹的作用是给同一个会话列表加一个"筛选视图":用户把会话分到「工作」「家人」等文件夹,在聊天列表顶部点一下就能只看这一组。

1.2 现状问题(本次要解决的)

#问题影响
1会话列表只能整体浏览,无法只看某一组高活跃用户(20+ 会话)每天多花大量时间上下翻找
2重要会话会被新消息顶下去漏看家人/上级的消息
3工作与生活混在一个列表休息时间被工作群占据注意力,反之亦然
4只能靠搜索定位会话必须想起名字;想不起来就找不到

1.3 目标

业务目标

  • 提升高活跃用户的会话列表使用效率,降低"找会话"的失败率,提升会话打开数(而不是消息量)。

用户目标

  • 建一次文件夹,之后一次点击就能切到自己要的那一组。
  • 全程不丢东西:删掉文件夹、把聊天移出文件夹,聊天和聊天记录一条都不少。

成功指标(上线首月,目标值需与数据侧对齐后锁定)

指标目标
有会话数 ≥ 10 的用户中,创建过文件夹的比例≥ 20%
创建了文件夹的用户,7 日内再次使用标签栏切换的比例≥ 50%
文件夹会话的打开率(相比未分组时同批会话)提升 ≥ 15%
因「删了文件夹以为聊天记录也没了」产生的客诉≈ 0
「聊天列表顶部多了一行」相关的负反馈≈ 0

二、范围

2.1 本期做

模块内容演示屏
入口我的 → 聊天文件夹(底栏「我的」页,位于「设备」下面一行)F0
文件夹列表空态 / 有内容态;创建文件夹、所有聊天、自建文件夹(按用户顺序)F1、F2
编辑态拖拽排序、⊖ 移除、左滑删除、移除前二次确认F3、F4、F5
创建 / 编辑文件夹整屏弹层:文件夹名称(支持 emoji)+ 包含的聊天 + 添加聊天F6、F7、F8
选择器「包含聊天」:搜索 + 全部会话名单 + 圆形多选,可连选F11
已选管理顶部 chip 展示、点 ✕ 移除、chip 超出三行滚动、单个 chip 高亮态F12、F13、F14
移除聊天长按列表行 → 「从文件夹移除」F9
聊天列表标签栏搜索框下方一行标签:全部 + 自建文件夹;点标签就地过滤会话列表F15、F16、F17
空态文件夹里没有聊天时在聊天列表里的表现F18
边界名称为空 / 未选聊天 / 重名 / 名称超长 / 数量上限F10

加粗的两行是设计稿没有画、但不做就不闭环的部分(建了文件夹无处可用)。这两处已与你确认:标签栏采用 TG 同款,编辑态做完整三件事。

2.2 本期不做(TG 有、但我们明确不做,逐条划出)

这张表的作用是防止开发照着 Telegram 自由发挥。以下能力设计稿里没有,本期一律不做:

不做的事说明 / 原因
按「聊天类型」批量添加(联系人 / 非联系人 / 群组 / 频道 / 机器人)TG 有这一整块(对照截屏 IMG_5957),U8 的选择器里只有具体聊天一项,不做类型维度——U8 的会话类型比 TG 少,批量勾选的价值不足以覆盖理解成本
「显示文件夹标签」开关(在每条会话下面显示它所属的文件夹名)TG 有这个开关(对照截屏 IMG_5962),设计稿里没有,不做
排除类规则(排除已静音 / 排除已读 / 仅显示未读)TG 的高级筛选规则,设计稿没有,不做
文件夹级别的免打扰 / 隐藏未读 / 独立未读数开关文件夹只是视图,不改通知行为;相关诉求走会话级的原有免打扰
文件夹内的批量操作(批量置顶 / 已读 / 删除)与文件夹无关,属会话列表的独立能力
文件夹分享(把一组会话分享给好友)TG 有,U8 不做
智能文件夹 / 按规则自动归类(如"所有群聊""所有未读"自动成组)设计稿没有,且会让"我选了谁"变得不可预期
新会话自动加入文件夹新聊天一律只出现在「所有聊天」;用户手动加(见第七章 7.3)
Web / Desktop 的文件夹(侧边栏、快捷键)本期只做移动端(见第八章)
文件夹数量超过 10 个上限 10(与 TG 一致),需拍板(待确认 ③)
深色模式、大字号无障碍适配随全局一起排期

2.3 端一致性

本期只有移动端。同一 App 内 iOS 与 Android 的规则、文案、交互完全一致,唯一差异是按系统习惯的按压时长与震动反馈。


三、名词定义(务必与开发对齐,避免和现有功能混名)

名词定义
聊天文件夹本功能在「我的」页的入口名(实机口径,不叫「文件夹」)。进入后的页面标题设计稿写作「文件夹」,两处是否统一见待确认 ①。
文件夹(本功能)用户自建的一组会话的集合。只是一个视图,不改变会话本身的任何属性。
所有聊天系统内置项,等价于"不带筛选的全部会话"。不可删除、永远排在标签栏第一位。
标签栏聊天列表里搜索框下方的一行可横向滑动的标签:全部 + 自建文件夹。本功能的主入口。
文件夹列表页从「我的 → 聊天文件夹」进入的管理页(F1 / F2),用来创建、排序、删除文件夹。
编辑态文件夹列表页点右上「编辑」后的状态:可拖拽排序、可 ⊖ / 左滑移除(F3 / F4)。
创建 / 编辑弹层从底部升起的整屏弹层(F6~F8),含「文件夹名称」与「包含的聊天」。
包含的聊天某个文件夹里装着的会话。同一个会话可以同时在多个文件夹里。
选择器点「+ 添加聊天」后打开的「包含聊天」页面(F11),用来勾选会话。
chip选择器顶部代表"已勾选会话"的小圆片(头像 + 名字 + ✕)。
所属文件夹提示选择器列表里、会话名字下面那行灰色小字,列出该会话已属于的其它文件夹(不含当前正在编辑的文件夹)。用来提示"它已经在别的分组里了"。
移除把某个会话从这个文件夹里拿掉。不是删除会话、不是删除聊天记录。
会话 / 聊天已有的功能对象(单聊或群聊),本功能只是引用它。
阉割版无类型筛选、无排除规则、无分享、无自动归类的文件夹。

⚠️ 开发注意:「移除」≠「删除」。UI 上凡是对会话的操作,按钮文字一律用「移除」;只有对整个文件夹的操作才用「删除 / 移除文件夹」。文案见第九章。


四、用户与场景

角色只有一个:App 的普通用户。没有管理员、没有群主权限、不涉及他人。

场景 A · 把工作群从生活里摘出去(高频,主场景)

用户有 30 个会话,其中 8 个是工作相关的群。他进「我的 → 聊天文件夹 → 创建文件夹」,命名「工作」, 在「包含聊天」里连勾 8 个群 → 保存。回到聊天列表,顶部多了一个「工作」标签, 之后每次点「工作」就只看这 8 个群,点「全部」回到完整列表。

场景 B · 快速找到那个想不起名字的群

用户只记得是"公司那个大群",想不起全名。他点「工作」标签,在 8 个群里扫一眼就找到了—— 不需要输入任何关键字。这是文件夹相对搜索的核心优势:缩小范围,而不是要求精确输入。

场景 C · 调整分组

建了「工作」和「家人」两个文件夹后,用户觉得顺序该反过来。他进文件夹列表 → 点「编辑」→ 拖住右侧手柄把「家人」拖到「工作」上面 → 点「完成」。聊天列表标签栏的顺序立刻跟着变。

场景 D · 不想要这个文件夹了

用户不再需要「砍价群」。他进编辑态 → 点该行左侧的 ⊖ → 弹出「移除「砍价群」?」→ 弹窗告诉他「你的聊天记录不会被删除」→ 点「移除」。文件夹消失,那 6 个群原样留在「所有聊天」里。

场景 E · 一个人只在某个文件夹里

「家人」这个文件夹里有 5 个会话。用户在里面点某个会话进去聊完返回, 还是停在「家人」标签下(不跳回「全部」)——避免每次返回都要重新点一次。

场景 F · 群被解散 / 好友被删

用户文件夹里的某个群被群主解散了。会话列表里这个群消失,文件夹里也自动消失, 不需要用户手动清理残留(见 7.3)。


五、功能总览

我的
 └─ 文件夹(F1 空态 / F2 有内容)
     ├─ 创建文件夹 ──▶ 新文件夹弹层(F6)
     │                   ├─ 文件夹名称(F7 已填 / F8 插表情 / F10 边界)
     │                   └─ 包含的聊天
     │                        ├─ 添加聊天 ──▶ 包含聊天选择器(F11 未选 / F12 已选 /
     │                        │                             F13 chip 溢出 / F14 chip 高亮)
     │                        └─ 长按某行 ──▶ 从文件夹移除(F9)
     ├─ 编辑(F3 排序 / F4 左滑 / F5 移除确认)
     └─ 点某个文件夹 ──▶ 回到该文件夹的编辑弹层

聊天列表(顶层页)
 └─ 搜索框下方:标签栏(F15 全部 / F16 切到某文件夹 / F17 标签过多横滑 / F18 空文件夹)

一条主线(走一遍主流程):我的 → 聊天文件夹 → 创建文件夹 → 填名字 → 添加聊天 → 勾选 → 确定 → 保存 → 回文件夹列表 → 回聊天列表 → 点新标签 → 切回全部 → 编辑 → 左滑 → 移除 → 确认。 (演示页的「▶ 走一遍主流程」按钮就是这个顺序。)


六、功能详情

6.1 入口与页面结构

项规则
入口位置我的 → 聊天文件夹。与「设备」上下相邻、同属一组 IM 相关条目(见 F0,按实机 1:1 还原)
入口文案「聊天文件夹」(实机口径,与 TG 同名)
为什么不用聊天列表右上角右上角已被「编辑」「+」占用;文件夹是低频设置项,不应出现在高频操作区

设计稿从「文件夹」这一页开始画,没有画入口。入口的位置与样式已按实机截图 1:1 确认:演示屏 F0 完整还原了「我的」页(左上二维码按钮、右上「编辑」、头像 + 昵称 + 手机号、四组卡片、底部悬浮胶囊 Tab:聊天 / 联系人 / 资产 / 我的 四项、无搜索圆钮),只新增「聊天文件夹」一行,其余内容一律不动。

6.2 文件夹列表页(F1 / F2)

从上到下的固定结构:

顺序内容说明
1说明图形 + 说明文字「为不同聊天分组创建文件夹,并在它们之间快速切换」(固定文案,不随状态变化)
2分组标题「文件夹」固定
3创建文件夹紫色(品牌色),永远第一行
4所有聊天内置项,不可删除、不可改名;可被拖拽排序吗?→ 不可以,它永远排在第 2 行(见 6.3)
5自建文件夹按用户拖拽后的顺序排列,每行右侧有 ›
6底部说明「点击"编辑"以更改顺序或删除文件夹」

行为

操作结果
点「创建文件夹」打开创建弹层(F6)
点「所有聊天」打开弹层,展示"所有聊天"的说明(它是内置项,不进入编辑,只有说明)。不做成可编辑的文件夹
点某个自建文件夹打开编辑弹层(F7 形态),可改名、加人、移人
点右上「编辑」进入编辑态(F3)。没有自建文件夹时「编辑」可点但列表里只有「所有聊天」一行

6.3 编辑态:排序与删除(F3 / F4 / F5)

进入方式:文件夹列表页点右上「编辑」。进入后:

元素表现
右上按钮由「编辑」变为紫色圆形 ✓(完成)
「创建文件夹」行编辑态下不可拖动、不可删除(它不是一个文件夹)
「所有聊天」行既没有 ⊖ 也没有拖拽手柄(内置项:不可删、不参与排序,固定占标签栏第一格)
自建文件夹行左侧出现红色 ⊖ + 右侧拖拽手柄(☰)

排序(拖拽)

  1. 按住右侧 ☰ 手柄上下拖动,行跟手移动,可插入到任意两行之间。
  2. 「所有聊天」的位置固定不动——它永远是标签栏的第 1 个,用户只能调整自建文件夹之间的先后(这与 TG 不同,TG 允许把「全部」排到末尾;我们简化,避免新手把「全部」藏到滑动区外面)。
  3. 拖动即生效,不需要点「完成」保存;点 ✓ 只是退出编辑态。
  4. 松手后立即写本地并同步服务端(见 6.9 的同步说明)。

删除(两条路径,同一个确认)

路径操作
⊖点某行左侧的红色 ⊖
左滑在该行上从右往左滑,露出红色「删除」按钮,再点它

两条路径都会弹出同一个确认弹窗(F5):

移除「川一喜屋😊😎」? 即将移除该文件夹,你的聊天记录不会被删除。 〔取消〕〔移除〕

规则说明
标题带文件夹名文件夹多的时候,用户必须能确认自己删的是哪一个
正文必须说明后果「聊天记录不会被删除」这句是必须保留的,它决定用户敢不敢点
取消方式点「取消」,或点弹窗外的遮罩区域
移除后① 文件夹从列表和标签栏消失;② 里面的会话原样回到「所有聊天」(它们本来就在);③ 会话本身与消息一条都不动;④ 若被删的是当前选中的标签,自动切回「全部」
是否可撤销不提供撤销(Toaster「已移除 / 撤销」不做)。确认弹窗已经是一次拦截

6.4 创建 / 编辑文件夹弹层(F6 / F7)

形态:整屏弹层,从底部升起,上方保留 62px 的可视区(能看到"底下是聊天列表")。不是跳转到新页面。

元素规则
左上 ✕关闭弹层。若有未保存的改动,直接丢弃、不提示(与「新建」的心智一致:还没建成功,退出即放弃)
标题「新文件夹」(创建)/ 「编辑文件夹」(编辑已有,见下)
右上 ✓保存。名称空、或「包含的聊天」为空时置灰:点它只有一下按压反馈(按钮放大 → 变白 → 弹回,与 TG 一致),不弹任何文字提示,也不保存、不关弹层;两个条件都满足后变成紫色可点,点它保存并关闭弹层(F6 全空 / F10 只有名称 / F7 都满足,三屏对照)
分组标题「文件夹」固定
文件夹名称输入框见 6.5
分组标题「包含的聊天」固定
+ 添加聊天打开选择器(6.6);永远在列表第一行
已选聊天列表每行一个会话(头像 + 名字),顺序=添加的先后顺序
底部说明「选择将出现在此文件夹中的聊天和聊天类型」

创建 vs 编辑的差异

创建(新文件夹)编辑(点已有文件夹进入)
标题新文件夹编辑文件夹
初始内容名称空、聊天空带上该文件夹现有的名称与聊天
保存新建一个文件夹覆盖该文件夹

保存后的落点:回到文件夹列表页(F2),新文件夹出现在列表末尾(如果是编辑,位置不变)。

6.5 文件夹名称的规则

规则判定
必填去掉首尾空格后不能为空。为空时 ✓ 置灰:点了只有按压反馈,没有文字提示,不保存、不关弹层(F6)
聊天至少 1 个「包含的聊天」不能为空。名称 + 聊天两个条件必须同时满足才能保存;只有名称、没选聊天时 ✓ 同样置灰(F10)
长度上限12 个字(emoji 按 1 个字算)。达到上限后输入框不再接受新字符(即时截断),不弹提示
字符允许中英文、数字、符号、emoji;不做敏感词过滤(与群名/昵称一致口径)
重名允许重名(与 TG 一致)。不做重名校验,两个同名文件夹靠顺序和内容区分
前后空格保存时自动去掉首尾空格
emoji支持插入 emoji(F8),复用 App 现有的表情面板
改名编辑态改名后立即生效;标签栏上的文字同步变化

6.6 选择器「包含聊天」(F11)

项规则
打开方式创建/编辑弹层里点「+ 添加聊天」
标题「包含聊天」
搜索框「搜索聊天」,只在本名单内过滤,不做全局搜索;大小写不敏感
名单范围用户当前所有会话(单聊 + 群聊),顺序=聊天列表里的既有顺序(新消息在上面),不按名字重排
名单里不出现已删除的会话、已退出/被解散的群、被拉黑的会话(按会话列表的现有规则)
勾选方式每行一个圆形勾选圈,点整行即勾选/取消,可连续点多行,点选后页面不关闭
右上 ✓确定返回,把勾选结果写回「包含的聊天」列表
左上 ✕放弃本次勾选,保持打开选择器之前的状态
一个会话可在多个文件夹允许:同一个会话可以同时待在多个文件夹里,文件夹之间没有互斥关系
已在其它文件夹的会话仍然可选不禁用、不置灰、正常打勾。名字下面有一行灰色小字列出它已属于的其它文件夹(逗号分隔,如「拼好饭,设计师」;不含当前正在编辑的这个文件夹),让用户一眼知道"再选进去=它会同时出现在两个文件夹里"
勾选不会影响原文件夹在选择器里勾选一个已在别的文件夹里的会话,不会把它从原文件夹挪走,只是让它在两个文件夹里同时出现(见 7.3)

IMG_5957 是 TG 的这一页:多出一整块「聊天类型(联系人 / 非联系人 / 群组 / 频道 / 机器人)」批量勾选。U8 不做,名单里直接列全部会话。

6.7 已选管理:chip 区(F12 / F13 / F14)

选择器顶部是「已选 chip + 搜索框」的混合区域:

规则说明
chip 内容小头像 + 名字,已选时高亮(F14 的紫色态)
与名单联动chip 与名单里的勾选是同一份状态,两边永远同步
移除见下方「chip 的高亮态」:点(或长按)chip 高亮 → ✕ 才可点(设计稿画的就是这个两步态)。✕ 只在当前高亮的 chip 上出现,其余 chip 不带 ✕
搜索框位置与 chip 在同一区域,跟在 chip 后面;chip 少时同行,chip 多时自动换行
超出三行滚动chip 区高度上限 约 3 行(104px),超出后区域内滚动(右侧出现细滚动条),搜索框始终可见;滚动的是 chip 区本身,名单不受影响

chip 的高亮态(F14):设计稿里有一个 chip 是紫底白字。

建议口径说明
点(或长按)某个 chip → 该 chip 变紫底白字,此时 ✕ 才可点防误触:手指划过一串 chip 时不会连带删掉一串人
同一时刻只有一个 chip 高亮点别处即取消高亮

这是设计稿有意画出来的中间态,是否保留需拍板(待确认 ⑥)。若不保留,✕ 直接一步删除(与 TG 一致)。

6.8 从文件夹移除某个聊天(F9)

项规则
触发在「包含的聊天」列表里长按某一行(0.3~0.5 秒)
表现被长按的行浮起(阴影),其余内容压暗;右侧弹出菜单
菜单项只有一项:「从文件夹移除」(红色 + 垃圾桶图标)
结果该会话从这个文件夹里消失;会话本身、聊天记录、未读、置顶全部不变
取消点菜单外任意位置
其它入口选择器里取消勾选、chip 上点 ✕,效果完全相同

TG 的文件夹内长按菜单里还有「置顶 / 免打扰」等项,U8 全部不做,只留「从文件夹移除」。

6.9 聊天列表的文件夹标签栏(F15 / F16 / F17,本功能的核心)

这是设计稿缺的一环,也是文件夹真正被用起来的地方。

位置

[状态栏]
[导航栏]      编辑            U8 Chat            +
[搜索框]      搜索
[标签栏]      全部 | 川一喜屋😊😎 | 工作 | 家人朋友     ← 本功能新增,位置在搜索框与会话列表之间
[会话列表]    ...
[底部 Tab]     聊天 | 联系人 | 资产 | 我的   ← 本次改版:无搜索圆钮

标签栏规则

规则说明
显示条件有 ≥ 1 个自建文件夹时才显示。一个文件夹都没有时,整条标签栏不占位(保证老用户升级后零变化)
标签内容第 1 个永远是「全部」,后面按文件夹列表页的顺序排列
「全部」不可删除、不可改名、位置固定在第一个、不参与排序
未读数标签上显示该文件夹内的未读会话数(口径见待确认 ⑧);无未读时不显示
选中态白底 + 品牌紫文字 + 轻阴影(与搜索框同层的视觉语言)
横向滚动单行横向滑动,不换行、不折叠、不放进「更多 ⌄」下拉;切到某个标签时自动把它滚进可视区
默认选中冷启动默认「全部」(是否记住上次选择,见待确认 ⑨)

切换标签的行为

规则说明
就地过滤不跳页。导航栏、右上「编辑」「+」、底部 Tab 全部不变,只有会话列表内容变化
排序过滤后仍按原有排序规则(新消息置顶、置顶会话在最上),文件夹不改变顺序,只筛掉不在里面的会话
未读与通知不在当前标签下的会话照常收消息、照常通知、照常计未读。文件夹只是"看不见",不是"不打扰"
已读在当前标签下把会话滑掉/点开,与在「全部」下操作完全一致
点进会话从文件夹点进会话,与从「全部」点进完全一致;返回后停在原标签(场景 E)
空文件夹显示空态(按实机 1:1):立体文件夹图标 + 标题「文件夹为空」+ 说明「该文件夹内暂无聊天。」+ 底部「编辑文件夹」主按钮(点了直接进编辑弹层加聊天 / 改名);标签栏与底部 Tab 照常显示(F18)。注意空文件夹只可能来自「事后被清空」——创建时至少要选 1 个聊天
搜索与文件夹的关系聊天列表的搜索默认在「全部」范围内搜,与当前标签无关(避免"搜不到以为没有";如需按标签搜,见待确认 ⑩)

同步:文件夹的新增、改名、排序、删除立即写本地并同步服务端,多设备登录时以最后一次操作为准(冲突时的合并规则沿用现有设置项的同步策略)。

6.10 与既有功能的关系(逐条对照,避免误伤)

既有功能文件夹的影响
会话列表排序不变。文件夹不改变会话的排序权重,只是筛选视图
置顶会话不变。置顶会话在「全部」和各文件夹里都置顶(只要它在该文件夹里)
未读红点 / 角标不变。会话级未读照常;App 图标角标仍是全部未读总数,不是当前标签的
新消息通知不变。不在当前标签下的会话,消息来了照常通知(这是与「免打扰」的本质区别)
消息免打扰不变。免打扰是会话级设置,与文件夹无关
搜索会话见 6.9 最后一行
长按会话(标记已读 / 删除)不变。在任意标签下长按会话,行为与在「全部」下一致
新建会话 / 被拉进新群新会话只出现在「所有聊天」,不会自动进任何文件夹(见 7.3)
底部 Tab不变(本次全局把底栏改成「聊天 / 联系人 / 资产 / 我的」四项、去掉搜索圆钮;文件夹功能自身不改底栏)
「我的」页只在 IM 相关的那一组里新增一行「聊天文件夹」

七、异常与边界

7.1 状态对照表(验收时逐条走)

#场景期望表现演示屏
1一个文件夹都没有文件夹列表页只有「创建文件夹 / 所有聊天」;聊天列表没有标签栏F1
2有 1 个文件夹标签栏显示 2 个标签「全部 / XX」F15
3名称空着点 ✓✓ 置灰:只有一下按压反馈(放大 → 变白 → 弹回),没有任何文字提示,不保存F6
4名称填了但一个聊天都没选✓ 同样置灰、点不动;空文件夹在创建阶段造不出来F10
5两个文件夹重名允许,列表里出现两行同名—
6名称输入到 12 字后再输入输入框不再接受新字符F10
7名称里插 emoji允许,emoji 计 1 字;标签栏正常显示F8
8已选 chat 超过 3 行chip 区出现滚动条,名单不被顶走F13
9点 chip 的 ✕该会话从已选消失,名单里勾也取消F12 / F14
9b会话已经在别的文件夹里,又在这里被勾选允许;名字下面的灰色小字照常显示它原来属于哪些文件夹F11 / F12
10长按「包含的聊天」某行行浮起 + 菜单「从文件夹移除」F9
11编辑态点 ⊖弹确认弹窗;点「移除」后文件夹消失、会话回到「所有聊天」F3 / F5
12编辑态左滑露出「删除」按钮,点了同样进入确认弹窗F4 / F5
13删除正在看的文件夹标签自动切回「全部」F5
14打开一个空文件夹的标签空态:图标 + 「文件夹为空」+「该文件夹内暂无聊天。」+「编辑文件夹」按钮;标签栏不消失F18
15文件夹数量到达 10 个「创建文件夹」置灰 + 提示「最多可以创建 10 个文件夹」(待拍板)—
16文件夹名很长列表页与标签栏都不截断(上限 12 字,够用)F2
17文件夹里的会话被删除/退群会话消失时自动从所有文件夹移除,不出现空的占位行—
18无网络时创建/改名允许本地先存,联网后同步(沿用现有设置项的离线策略)—

7.2 名称边界(汇总)

情况处理
空 / 全空格拦截 + 提示
超 12 字输入框即时截断
emoji允许,计 1 字
重名允许
特殊符号允许(与昵称口径一致)
前后空格保存时去掉

7.3 会话发生变化时

情况期望表现
被拉进新群 / 新建单聊新会话不自动进入任何文件夹,只在「所有聊天」;标签栏的未读数按 6.9 的规则计算
会话被删除 / 清空聊天记录会话消失时自动从所有文件夹移除;清空记录只清消息,会话仍在文件夹里
退出群 / 被移出群 / 群被解散同「会话被删除」
删除好友(拉黑)会话仍在文件夹内(会话没消失);拉黑后的通知规则沿用现有逻辑
同一会话在多个文件夹里允许,互不影响;在任意一个文件夹里「移除」都不影响其它文件夹。选择器里勾选它不会把它从原文件夹挪走(F11 的名字下面会有灰色小字提示它已属于哪些文件夹)
文件夹里的会话全部失效文件夹本身保留,只是变空 → 显示 F18 空态

7.4 标签栏边界

情况处理
0 个自建文件夹标签栏整体隐藏
标签文字过长不截断(≤12 字);标签栏横向滑动
标签很多(10 个)仍单行横滑;切到的标签自动滚入可视区
用户把某个文件夹改名成超长 emoji 串上限 12 字已经兜住

八、跨端差异(Web / Desktop)

本期不做 Web 与 Desktop 的文件夹。原因:

  1. 桌面端会话列表是多栏布局(会话栏 + 聊天区),文件夹的落点需要单独设计(TG 是把它放进会话栏顶部,与移动端同款),现有设计稿只覆盖移动端;
  2. 桌面端的会话量大、窗口宽度变化范围大,标签栏的溢出策略需要单独定;
  3. 先看移动端的使用数据,再决定桌面端的形态。

保持一致的部分:数据模型(同一个账号的文件夹、顺序、包含的会话必须跨端一致),所以服务端的数据结构本期就要按跨端设计,避免以后回改。


九、新增文案

#位置文案备注
1我的 → 入口聊天文件夹实机口径(F0 按实机还原)
2文件夹列表页标题文件夹
3右上按钮编辑
4列表页说明为不同聊天分组创建文件夹,并在它们之间快速切换固定文案(设计稿原文)
5列表第一行创建文件夹
6列表第二行(内置)所有聊天
7列表底部说明点击"编辑"以更改顺序或删除文件夹设计稿原文
8创建弹层标题新文件夹
9编辑已有文件夹标题编辑文件夹新增
10名称输入框占位文件夹名称
11分组标题包含的聊天
12添加入口添加聊天设计稿原文(带 +)
13选择器标题包含聊天设计稿原文
14选择器搜索占位搜索聊天
15弹层底部说明选择将出现在此文件夹中的聊天和聊天类型设计稿原文
16长按菜单从文件夹移除
17移除确认标题移除「{文件夹名}」?设计稿对照原文是「移除 Name1?」
18移除确认正文即将移除该文件夹,你的聊天记录不会被删除。人称统一为「你」
19移除确认按钮取消 / 移除
20——(无文案)名称空 / 聊天空时 不弹任何文字提示,只做按钮按压反馈(放大 → 变白 → 弹回,与 TG 一致)这是设计口径,不是遗漏
21数量上限提示最多可以创建 10 个文件夹新增(待拍板)
22聊天列表标签 1全部不是「所有聊天」——标签栏用两字,管理页用四字
23空文件夹标题(空态)文件夹为空新增(F18)
24空文件夹说明(空态)该文件夹内暂无聊天。新增(F18)
25选择器 · 会话副标题{文件夹A}, {文件夹B}半角逗号 + 空格分隔(与 TG 一致);只列其它文件夹(不含当前编辑的);该会话不属于任何其它文件夹时不显示这一行
26空文件夹按钮编辑文件夹新增(F18,实机口径)

⚠️ 文案一致性:管理页叫「所有聊天」,标签栏叫「全部」(长度考虑)。两者指同一个东西,如果开发担心混淆,可以统一为「全部」。需拍板(待确认 ②)。


十、埋点与数据

事件触发时机关键参数
folder_create_click点「创建文件夹」from(列表页 / 空态)
folder_create_done创建成功保存chat_count(0 / 1~5 / 6~20 / 20+)、name_len、has_emoji
folder_pick_open打开选择器current_selected
folder_pick_done选择器点 ✓added / removed 数量
folder_switch点标签栏切换to_tag(all / folder)、folder_index、folder_chat_count
folder_edit_enter进入编辑态folder_count
folder_reorder拖拽排序完成from_index / to_index
folder_delete_click点 ⊖ 或左滑删除方式(minus / swipe)
folder_delete_confirm确认弹窗点「移除」folder_chat_count
folder_delete_cancel确认弹窗点「取消」—
folder_remove_chat从文件夹移除某个会话—

要看的数

  1. 创建转化率:folder_create_click → folder_create_done;
  2. 创建后是否真用:folder_switch 的 7 日留存;
  3. 每个文件夹装多少会话(判断"默认要装谁"的引导是否必要);
  4. folder_delete_cancel / folder_delete_confirm 的比值——这个比例异常低,说明「聊天记录不会被删除」那句没让人放心,需要改文案;
  5. 标签栏点「全部」的比例——如果极低,说明标签栏可能遮挡列表,需要评估位置。

十一、待确认(需要产品拍板,开发据此实现)

#待确认项建议影响
①两处文案不一致:入口叫「聊天文件夹」(实机),进去后的页标题设计稿写的是「文件夹」建议统一为「聊天文件夹」(与入口、与 TG 同名)演示按各自主源呈现:入口=聊天文件夹、页内标题=文件夹;定了之后我统一改
②标签栏第一格叫「全部」还是「所有聊天」建议标签栏用「全部」(两字更省横向空间)文案一致性
③文件夹数量上限:定 10 个?建议 10(与 TG 一致),超限时「创建文件夹」置灰 + 提示需要开发做上限拦截
④删除路径是否两条都做(⊖ + 左滑)建议都做:⊖ 是显式路径、左滑是快捷路径少做一条可省工作量
⑤chip 区高度上限:3 行(104px)还是 2 行建议 3 行影响选择器首屏能看到几条名单
⑥chip 的 ✕ 是一步删除还是两步(先高亮再删)建议保留两步(防误删一串人)设计稿 F14 画的是两步
⑦长按时长与震动:跟 App 现有长按(0.4s)一致?建议复用现有长按组件,不单独定与本功能无关,但要与全局一致
⑧标签上要不要显示未读数建议显示(该文件夹内的未读会话数),无未读不显示需要定口径:按"会话数"还是"消息数"
⑨是否记住上次选的标签建议记住(TG 如此),冷启动回到上次的标签影响冷启动逻辑
⑩搜索与文件夹的关系:搜索是全局,还是只搜当前标签建议全局搜,避免"搜不到以为没有"影响搜索页的取数范围
⑪文件夹是否计入 App 图标角标建议不计入,角标永远是全部未读总数角标口径
⑫"所有聊天"能不能参与排序建议不能,固定第一个(比 TG 更简单,避免藏到滑动区外)演示 F3 已按此实现
⑬视觉走查:「我的」页图标是彩色一套(蓝 / 绿 / 橙 / 红),而文件夹功能内部用的是品牌紫(创建文件夹、勾选圈、✓)建议保持现状(图标彩色 + 操作紫,与 TG 的做法一致),但需设计确认一次,避免评审时被当成「颜色不统一」纯视觉,不影响开发

十二、相对设计稿补了什么(逐条交代,没有偷偷加功能)

设计稿共 9 屏,全部保留、未改动任何一屏的既定设计。在此基础上补了 10 屏:

补充屏类型为什么必须补
F0 我的 → 聊天文件夹入口位置设计稿从「文件夹」页开始画,没说从哪进;已按实机截图 1:1 还原「我的」页(含底部 Tab:聊天 / 联系人 / 资产 / 我的,无搜索圆钮;「我的」图标=用户头像)
F2 文件夹列表(有内容)状态屏设计稿只有空态;有文件夹才是日常的样子(对照 TG IMG_5963)
F3 编辑态(拖拽 + ⊖)新页面设计稿只有一句文案承诺"改顺序或删除",没有画面
F4 左滑删除状态屏同上(对照 TG IMG_5965)
F5 移除确认弹窗新页面删除不可逆,必须有一次反悔(对照 TG IMG_5962)
F10 边界:名称空 / 未选聊天边界屏不定义就会出现"无名文件夹"或静默失败
F15 聊天列表标签栏新页面最关键的一环:文件夹建好后必须有地方用它,否则"在它们之间快速切换"无处落地
F16 切到某文件夹状态屏过滤后的样子
F17 标签过多横滑规则屏文件夹一多的必然情况
F18 空文件夹空态状态屏创建时至少要选 1 个聊天,所以空文件夹只可能来自「事后被清空」(长按移除 / 会话失效),这个状态必须画;空态样式按实机截图 1:1 还原(图标 + 文件夹为空 + 该文件夹内暂无聊天。 + 编辑文件夹按钮)

没有做的事(与 2.2 一致,再强调一遍):没有加「聊天类型」批量选、没有加「显示文件夹标签」开关、没有加排除规则、没有加免打扰、没有加分享、没有加自动归类。TG 的能力清单里,我们只用到了"分组 + 切换 + 排序 + 删除"这一层。


附:演示页怎么用

打开同目录 index.html:

  • 左侧列表按 4 组列出 19 屏,可按「设计稿已有 / 本次补齐」筛选;圆点颜色:蓝=设计稿已有、红=补齐的关键缺口、黄=补齐的状态与规则屏;
  • 中间是手机,页面上的虚线框就是可点的地方——鼠标悬停会显示它会跳到哪一屏,点它按真实流程跳下一屏;

    全案共 170 个可点元素(屏内热区:底部 Tab、导航栏按钮、标签栏、列表行、勾选圈、chip、空态按钮);

  • 有些元素在演示里没有对应页面(如「我的」页的「编辑」、聊天列表的「+」、底部的「聊天 / 联系人 / 资产 / 我的」),点它们会弹一句话说明,不会出现「点了没反应」
  • 点「▶ 走一遍主流程」自动播放:我的 → 聊天文件夹 → 创建 → 挑聊天 → 保存 → 回聊天列表 → 切标签 → 编辑 → 删除;
  • 右侧是每屏的「这屏解决什么 / 设计要点 / Telegram 对照 / 待确认」;
  • 键盘 ← → 切屏,H 显示全部热区。