← 返回文档归集

代聊系统 · 创作者端 24 小时关闭代聊冷静期 · 设计说明

文档版本v1.1(v1.0 → v1.1 增补 RT-0106 挽留动作 + GR-04 防滥用 + RT-05 双通道触发) 文档类型:从 PRD v2.0 提取的专项设计说明 + 原型 v1.0v1.6 设计沉淀 来源文档PRD_代聊系统_产品需求文档 (1).md + PRD_代聊系统_技术落地版 (1).md + 高保真原型 v1.6 PRD 版本:v2.0 | 2026-04-08 整理日期:2026-05-23 → 更新于 2026-05-25 整理人:PM 助手 + 张一章 关联条款:CP-01 ~ CP-05、GR-02、GR-04(v1.1 新增)、EX-08、AC-27 ~ AC-32、RT-01 ~ RT-06(v1.1 新增)AC-55 ~ AC-57(v1.1 新增)


一、核心设计哲学

对代聊员撒谎,保护创作者。 代聊员对冷静期完全不知情。

如果代聊员知道"24 小时后这个号就不属于我了",极有可能疯狂发低俗内容、引流竞品、拉黑粉丝,进行同归于尽式毁号操作。


二、状态机定义

Off(关闭) ─→ On(开启) ─→ CoolingDown(冷静期) ─→ Off / On(撤回)
状态 数据库字段 判定逻辑 系统行为
Off agent_chat_enabled=false · agent_chat_disabled_at=NULL 默认状态 不触发任何代聊/AI
On agent_chat_enabled=true · agent_chat_disabled_at=NULL 创作者主动开启 正常运行代聊+AI
CoolingDown agent_chat_enabled=true · agent_chat_disabled_at 有值且 < 24h 创作者点了关闭但还在 24h 内 代聊继续工作(代聊员不知情)+ 创作者看到倒计时 + 可撤回

三、规则清单(CP 系列 + GR-02)

编号 规则名称 规则内容 优先级
CP-01 关闭不立即生效 创作者点关闭 → 设 agent_chat_disabled_at=NOW()不立即关 agent_chat_enabled P0
CP-02 创作者端倒计时 创作者看到"代聊将在 xx 小时后停止" + 撤回按钮 P0
CP-03 创作者可撤回 冷静期内点撤回 → 清除 disabled_at,恢复正常 P1
CP-04 挽留弹窗 关闭时弹窗显示代聊收入数据,引导不要关闭 P1
CP-05 到期自动关闭 24h 后 agent_chat_enabled=false,所有 agent_session 关闭,对话回到创作者端 P0
GR-02 静默冷静期 创作者关闭代聊后 24h 冷静期内,代聊端零提示零警告,一切照常。到期瞬间弹"用户已离线"切断 P0

四、双端体验对照(关键差异)

4.1 创作者端(全程透明可见)

时间点 看到什么
点击关闭时 挽留弹窗:"代聊帮你赚了 ¥2,380,关闭后粉丝互动将无人响应,确认关闭吗?"
确认关闭后 倒计时:"代聊将在 23 小时 58 分 后停止服务" + 蓝色"撤回关闭"按钮
冷静期内 倒计时持续走,随时可一键撤回
24h 到期 提示"代聊已关闭",所有对话恢复到消息列表

4.2 代聊员端(绝对静默 · 严禁告知

时间点 看到什么
冷静期全程 什么都没有。 零提示、零警告、零倒计时。正常聊天、正常发 PPV、正常拿提成
24h 到期瞬间 弹出常规提示"用户已离线"或"会话已结束",会话从列表消失
事后 代聊员以为是正常的用户流失,不会意识到是创作者主动关的

五、数据库字段

users 表新增 2 个字段:

字段 类型 用途
agent_chat_enabled BOOLEAN 创作者是否开启代聊
agent_chat_disabled_at TIMESTAMPTZ 关闭代聊的时间(24h 冷静期判定基准)

六、API 接口

方法 路径 说明
PUT /users/me/agent-chat 开启/关闭代聊(含 24h 冷静期逻辑)
GET /users/me/agent-chat/status 代聊状态查询,返回:开启 / 冷静期中 / 已关闭 + 倒计时

七、完整流程

graph TD
A["创作者点击'关闭代聊'"] --> B["弹出挽留弹窗(CP-04)"]
B --> C{"创作者坚持关闭?"}
C -->|"被挽留,取消"| D["保持开启"]
C -->|"确认关闭"| E["设置 agent_chat_disabled_at = NOW()<br/>agent_chat_enabled 保持 true(CP-01)"]
E --> F["创作者端:显示24h倒计时(CP-02)<br/>+ 一键撤回按钮"]
E --> G["代聊端:零提示<br/>一切照常工作(GR-02)"]

F --> H{"创作者24h内撤回?"}
H -->|"撤回(CP-03)"| I["清除 disabled_at<br/>恢复正常"]
H -->|"未撤回,24h到(CP-05)"| J["agent_chat_enabled = false<br/>所有 agent_session 关闭"]

J --> K["创作者端:<br/>所有对话恢复可见"]
J --> L["代聊端:<br/>弹出'用户已离线'<br/>会话消失"]

style G fill:#d4edda,stroke:#28a745
style L fill:#f8d7da,stroke:#dc3545
style E fill:#e8daef,stroke:#8e44ad

八、相关页面规格

页面 C-P03:创作者中心 → 代聊设置(CreatorAgentScreen)

Tab1 代聊设置包含:


九、验收标准(AC-27 ~ AC-32 共 6 项)

编号 验收项 验证方式 关联规则
AC-27 挽留弹窗 点关闭 → 显示收入数据 + 确认按钮 CP-04
AC-28 倒计时显示 确认后 → 创作者端显示 24h 倒计时 CP-02
AC-29 可撤回 冷静期内点撤回 → 代聊恢复正常 CP-03
AC-30 代聊端零提示 冷静期全程 → 代聊工作台无任何异常 GR-02
AC-31 到期切断 24h 到 → 代聊端弹"用户已离线" CP-05
AC-32 到期后恢复 所有对话回到创作者消息列表 CP-05

十、异常场景

EX-08:创作者反复开关代聊

场景:频繁开 → 关 → 开

系统处理

优先级:P1


十一、关键要点速记表

维度 设定
冷静期时长 24 小时(不可调整)
触发字段 users.agent_chat_disabled_at
enabled 字段 冷静期内保持 true,到期才置 false
创作者端 全程透明,倒计时 + 可撤回
代聊员端 全程静默,零提示,到期才感知
挽留机制 关闭瞬间弹窗显示已赚收入
撤回机制 冷静期内随时可撤回,不消耗次数
优先级 CP-01/02/05 + GR-02 全部 P0;CP-03/04 P1
关联验收 AC-27 ~ AC-32 共 6 项

十二、设计风险与防护

风险 1:代聊员蓄意破坏

风险描述:如果代聊员知道冷静期存在,可能在 24h 内进行毁号操作(发低俗内容、引流竞品、拉黑粉丝)。

防护机制

风险 2:创作者不安导致离开平台

风险描述:完全黑箱让创作者怀疑"平台是不是拿着我的账号搞诈骗""我的死忠粉是不是被洗走了"。

防护机制

风险 3:创作者反复开关骚扰系统

风险描述:频繁开关代聊会触发多次粉丝重新分配,可能影响代聊员效率。

防护机制


十三、v1.1 增补:挽留动作 RT-01~06 系统

13.1 设计动机

CP-04 挽留弹窗只在"关闭瞬间"触发一次。如果创作者点击确认关闭后开始进入 24h 冷静期,期间可能因为情绪冷静下来想撤回,但没有外部刺激提醒"代聊还在赚钱"。流失率分析显示:仅靠 CP-04 单点挽留,撤回率 < 8%。

v1.1 引入 RT 系列挽留动作(Retention) ,把挽留链路从"单点击穿"扩展到"全程渗透",覆盖:关闭瞬间 → 冷静期间 → 撤回成功 → 最后 1 小时强提醒。预期撤回率提升至 25-35%。

13.2 RT-01~06 规则总览

编号 名称 触发时机 通道 对应 PRD 关联
RT-01 强化挽留弹窗 创作者点击关闭瞬间(增强 CP-04) 弹窗内嵌行业对标动态柱状图 CP-04
RT-02 冷静期顶部 sticky 横幅 进入冷静期立即出现,全程可见 Tab 栏下方 sticky 横幅(黄/红双形态) CP-02
RT-03 站内信中心 冷静期内代聊每笔产出 主动入站内信(用户自主查看,非被动 toast 骚扰) 新增
RT-04 撤回成功正反馈 创作者点击撤回时 中央绿色气泡:"已挽回 12 位粉丝活跃 + 减少损失 ¥1660" CP-03
RT-05 最后 1 小时强提醒 冷静期剩余 ≤ 1h 双通道:① 全局弹窗(红色头模态) + ② 站内信推送 新增(v1.6 升级为双通道)
RT-06 战报数据快照 冷静期内进入战报 Tab Tab 顶部黄色横幅"冷静期数据快照·24h 内持续更新" GR-03

13.3 RT-05 双通道触发机制(v1.6 升级 · 本次更新核心)

13.3.1 触发条件

维度 设定
阈值 冷静期剩余时间 ≤ 1 小时(即 disabledAt + 23h ≤ Date.now())
检测器 顶部 sticky 横幅 TopCoolingBar 内置 1 秒 setInterval 持续检测
触发器 通过 onLastHour() 回调触发主组件双通道动作
去重锁 lastHourFiredRef.current 布尔锁,仅触发一次(避免每秒重复推送)

13.3.2 双通道动作(同步触发)

onLastHour() → ① setShowLastHourModal(true)         (全局弹窗)
              + ② setInboxItems(prev => [{          (站内信推送)
                    type: 'chat',
                    title: '⚠ 冷静期最后 1 小时',
                    body: '代聊将在 1 小时内正式停止。如需保留代聊服务,请在到期前撤回关闭操作',
                    time, read: false
                  }, ...prev])
通道 形态 强度 创作者侧表现
① 全局弹窗 红色头模态(LastHourModal) 强提醒 · 阻断式 当前会话立即看到
② 站内信推送 信件中心置顶单条 留底通知 · 非阻断式 当前会话信件徽章 +1,关闭弹窗后仍可在站内信查看历史记录

双通道目的:弹窗保证当前在线创作者立即感知;站内信保证创作者离线/关闭弹窗后仍能回看,不漏失。

13.3.3 弹窗本身的设计原则(创作者端不暴露规则编码)

LastHourModal 弹窗 JSX 不展示任何 RT-XX/规则编码标注

设计编码(RT-XX)只在沙盒右侧 DocPanel 文档面板出现(开发/产品文档化用),创作者侧绝对干净。

十四、v1.1 增补:GR-04 防滥用规则(创作者端隐藏)

14.1 设计动机

EX-08 在 PRD v2.0 明确"不做额外限制,但运营可监控该创作者行为"。但运营监控是事后处置,无法防止:

GR-04 是前置硬约束:30 天内仅允许关闭一次代聊,让"关闭"成为创作者必须深思熟虑的高代价决策。

14.2 规则细节

编号 规则名称 规则内容 优先级
GR-04 防滥用频次限制 30 天内仅可关闭代聊一次。撤回成功视为本次窗口已用,下次关闭需间隔 ≥ 30 天。冷静期到期切断的同样计入。 P0

关键细节:撤回也消耗次数

撤回操作(CP-03)虽然没有真正切断代聊服务,但仍消耗本次 30 天关闭额度。设计理由:

14.3 创作者端隐藏(v1.5 设计决策)

业务规则保留 + 前端展示全清

是否感知 GR-04
数据库 ✅ 完整记录(lastClosedAt 字段)
API ✅ 完整返回(status 接口含 lastClosedAt)
前端业务逻辑 ✅ 限制期内 Toggle 自动 disabled
创作者 UI 展示 完全隐藏:不展示"30 天内仅可关闭一次"任何文案、卡片、tooltip

设计哲学:让创作者只感受到"按钮点不动"的物理性阻碍,不解释为什么不能点。理由:

14.4 数据库字段(users 表新增)

字段 类型 用途
agent_chat_last_closed_at TIMESTAMPTZ 最近一次"关闭决定"时间。confirmClose 时写入 NOW(),撤回时不重置,到期切断时不重置。用于计算 30 天窗口起点。

判定公式:

isRestricted = (Date.now() - lastClosedAt) < (30 × 24 × 3600 × 1000)
restrictionDaysLeft = Math.ceil((RESTRICT_MS - elapsed) / 86400000)  // 仅业务计算用,不暴露给创作者

14.5 与现有规则的协同

| 与 CP-01 关系 | CP-01 触发瞬间,同步写入 lastClosedAt = NOW()(与 disabled_at 写入同步) | | 与 CP-03 关系 | 撤回时 disabled_at 清空但 lastClosedAt 保留(消耗次数核心) | | 与 CP-05 关系 | 到期切断时同样不重置 lastClosedAt | | 与 EX-08 关系 | EX-08 原文"不做额外限制"被 GR-04 替代,原文需更新为"受 GR-04 约束" |

十五、v1.1 增补:API 接口扩展

方法 路径 v1.0 → v1.1 变更
PUT /users/me/agent-chat 请求体新增 last_closed_at 字段(仅 confirmClose 时写入 NOW(),撤回/到期不更新)
GET /users/me/agent-chat/status 响应体新增 last_closed_at(用于前端计算 isRestricted)
GET /users/me/agent-chat/inbox 新增:拉取代聊冷静期内的站内信列表(RT-03 + RT-05 写入)
POST /users/me/agent-chat/inbox/:id/read 新增:站内信标记已读

十六、v1.1 增补:验收标准 AC-55 ~ AC-57

编号 验收项 验证方式 关联规则
AC-55 GR-04 30 天限制生效 关闭后撤回 → 第二次点击 Toggle → 应 disabled 不可点 GR-04
AC-56 GR-04 创作者端零展示 限制期内 UI 全 grep → 无"30 天/防滥用/距离下次"字样 GR-04 + v1.5 决策
AC-57 RT-05 双通道同步触发 冷静期剩余 ≤ 1h 瞬间 → 同时出现 LastHourModal + 站内信 +1(仅一次) RT-05

十七、v1.1 增补:设计风险与防护

风险 4:RT-05 双通道重复触发

风险描述:TopCoolingBar 每秒检测一次剩余时间,到达阈值后若不锁定,每秒触发 1 次会推送 60 条站内信。

防护机制

风险 5:GR-04 创作者归因不当

风险描述:完全隐藏后,创作者发现 Toggle 点不动可能去客服投诉"系统坏了"。

防护机制

风险 6:撤回消耗次数引发争议

风险描述:创作者撤回后想再次关闭被拒,可能投诉"我又没真正关闭怎么算我用过了"。

防护机制


十八、v1.1 增补:原型与文档对应关系

原型版本 引入特性 文档章节
v1.0 形态3 双 Tab + 人设卡片(10 项设计风格落地) 八、相关页面规格
v1.1 iPhone 17 适配 + RT-01~05 挽留动作首版 十三、挽留动作系统
v1.2 GR-04 防滥用 + 倒计时只保留顶部 + Toggle 置灰 十四、GR-04 + 13.2 RT-02
v1.3 H5 内 8 处规则编码全清 + 战报柱状图修复 13.3.3 弹窗设计原则
v1.4 Toast React 化 + 柱状图金额标注 (沙盒交互细节,未单独章节化)
v1.5 GR-04 创作者端全清 + Toast H5 内完全居中 14.3 创作者端隐藏
v1.6 RT-05 升级双通道(弹窗 + 站内信) 13.3 RT-05 双通道触发机制

修订记录

版本 日期 修订人 修订内容
v1.0 2026-05-23 PM 助手 + 张一章 从 PRD v2.0 提取整理首版冷静期专项设计说明
v1.1 2026-05-25 PM 助手 + 张一章 基于高保真原型 v1.0v1.6 设计沉淀新增:① 挽留动作 RT-0106 系统 ② GR-04 防滥用 30 天限制(创作者端隐藏) ③ RT-05 最后 1 小时双通道触发(弹窗+站内信) ④ 数据库字段 agent_chat_last_closed_at ⑤ 验收标准 AC-55~57