原型管理系统
PM Prototype Management
0
目录 /
3
文件
Home
AI CRM
v2.2.46 线索设为无效状态优化
PRD-设为无效理由闭环.md
Markdown 文档 · 在线预览
返回目录
# PRD:线索「设为无效」理由闭环 | 文档信息 | 内容 | |---|---| | 产品 | AI超级销售 / 线索管理 | | 模块 | 公海线索 · 线索管理 · 线索详情 · 操作记录 | | 版本 | **V1.6** | | 状态 | 待评审 | | 作者 | 产品 | | 日期 | 2026-08-25 | | 关联原型 | `设为无效-其他-输入原因.html`(含 💧 改动标注侧栏) | | 对标能力 | 退公海退回理由闭环(选「其它」必填具体原因,操作记录【】回显) | --- ## 1. 背景与问题 ### 1.1 现状 线索详情可勾选 **「设为无效」** 并选择理由。现网无效理由枚举(6 项): 1. 拨打5次以上未接通 2. 空号/停机/关机 3. 反馈未在营销留资 4. 接通但无意向 5. 黑脏词 6. 其它 当前痛点: | 环节 | 问题 | |---|---| | 设为无效弹窗 | 选「其它」时无法填写具体原因 | | 线索标签 | 选「其它」会打出「其它」标签,无语义 | | 线索概况 | 仅有跟进状态,缺少独立原因字段 | | 线索列表 | 无效原因挤在标签列,无独立可配置列 | | 操作记录 | 仅记录「变为无效」,缺少无效原因【】 | | 取消无效 | 需与设无效形成对称确认与记录 | ### 1.2 目标(一句话) **设无效:** 勾选 → 选理由 →(其它必填具体原因)→ 标签 / 概况 / 列表 / 操作记录统一回显 **取消无效:** 取消勾选 → 确认 → 恢复有效 → 清除无效相关展示 → 操作记录回显 --- ## 2. 范围 ### 2.1 In Scope | 编号 | 目标 | 验收要点 | |---|---|---| | G1 | 「其它」必填具体原因 | 未填不可提交;≤50 字 | | G2 | 操作记录闭环 | 设无效带【原因】;取消无效写「变更为有效」 | | G3 | displayReason 统一 | 预设=枚举名;其它=`其它:{具体原因}` | | G4 | 标签策略 | 预设:无效+理由标签;其它:**仅「无效」** | | G5 | 概况原因字段 | 无效→「无效原因」;回收→「退回原因」;互斥展示 | | G6 | 列表「无效原因」列 | 公海、线索管理均支持;自定义列表可勾选、拖拽 | | G7 | 公海「退回原因」列 | 仅回收线索行有值;自定义列表可配置 | | G8 | 取消设为无效 | 确认后恢复有效,展示与记录同步 | | G9 | 腾讯广告特例 | **保持现网**:勾选即无效,不弹窗、不填原因 | ### 2.2 Out of Scope - 不调整无效理由枚举(配置化另立需求) - 取消无效不要求填理由 - 不改造「预设理由打标签」的现网能力(仅去掉「其它」标签) - 不新增无效原因统计报表 - 不在跟进状态旁增加 `?` 悬停提示(原因改由独立列承载,见 4.4.3) - 「线索渠道」列为现网字段对齐展示,非本需求新增业务逻辑 ### 2.3 评审备注(不阻塞本版) 1. **标签 vs 列**:预设理由仍打「无效+理由」双标签;「无效原因」列会与标签列部分重复,本版优先解决「可配置、可扫读」,后续可考虑标签列不再承载理由。 2. **概况字段名**:实现上为**同一坑位、动态标签**——无效时显示「无效原因」,回收时显示「退回原因」,普通跟进态隐藏整行。 3. **腾讯广告**:以 **线索渠道 = 腾讯广告** 为判断口径,操作记录不含无效原因后缀。 --- ## 3. 用户场景 | 场景 | 路径 | 预期结果 | |---|---|---| | A. 预设理由 | 详情勾选设无效 → 选「空号/停机/关机」 | 标签:无效+理由;概况/列表/记录均展示该枚举名 | | B. 选其它 | 选「其它」→ 填写具体原因 | 标签:**仅无效**;概况/列表/记录展示 `其它:{原因}` | | C. 校验拦截 | 选其它不填原因点确定 | 提示「请填写具体原因」,不提交 | | D. 取消无效 | 取消勾选 → 确认 | 恢复有效;清除无效标签与原因;记录写「变更为有效」 | | E. 回收线索概况 | 打开回收态线索详情 | 概况显示「退回原因」,不显示无效原因 | | F. 列表自定义 | 自定义列表勾选/取消「无效原因」 | 列出现/消失;已显示列可拖拽排序 | | G. 腾讯广告 | 渠道=腾讯广告 → 勾选设无效 | 直接成功,无弹窗,记录仅「变更为无效」 | --- ## 4. 功能设计 ### 4.1 改动面总览 | 页面/模块 | 改动点 | |---|---| | **线索详情 · 底栏** | 「设为无效」勾选入口;普通渠道弹窗 / 腾讯广告直设 | | **设为无效弹窗** | 6 项理由;选「其它」展开输入框(必填 ≤50) | | **取消无效弹窗** | `您确定取消当前线索的无效标记吗?` | | **线索标签** | 预设:无效+理由;其它:仅无效 | | **线索概况** | 跟进状态下新增原因行(动态标签,互斥) | | **操作记录** | 无效/有效/退回原因【】闭环 | | **公海列表** | 新增/对齐:线索渠道、退回原因、无效原因列 | | **线索管理列表** | 新增/对齐:线索渠道、无效原因列 | | **自定义列表** | 公海:线索渠道、退回原因、无效原因;线索管理:线索渠道、无效原因 | ### 4.2 设为无效 / 取消无效 #### 4.2.1 普通渠道 ``` 勾选「设为无效」 → 弹出理由选择弹窗 → 必选一项理由 → 若选「其它」:必填具体原因(≤50 字) → 确定后:状态=无效,各表面按 4.6 回显 → 操作记录:变更线索状态为"无效",无效原因【{displayReason}】 ``` #### 4.2.2 腾讯广告(现网特例,本需求不改) | 项 | 规则 | |---|---| | 判断 | **线索渠道 = 腾讯广告** | | 交互 | 勾选「设为无效」即成功,**不弹选理由弹窗** | | 原因 | 不要求填写、不落无效原因字段 | | 操作记录 | `变更线索状态为"无效"`(无无效原因后缀) | #### 4.2.3 取消设为无效 ``` 取消勾选「设为无效」 → 确认弹窗 → 确定后:状态恢复有效 → 清除无效标签、无效原因展示 → 操作记录:变更线索状态为"有效" ``` ### 4.3 线索标签 | 设无效所选 | 标签区 | 说明 | |---|---|---| | 预设理由(1~5) | **无效** + **对应理由标签** | 与现网一致,本版保留 | | **其它** | **仅「无效」** | 不打「其它」标签;长文本不进标签 | | 取消无效 | 移除「无效」及理由相关标签 | 与状态恢复一致 | > 完整原因靠概况字段、列表列、操作记录承载,不靠标签。 ### 4.4 线索概况 · 原因字段 **位置:** 线索概况 → **跟进状态**下方新增一行。 **字段标签(动态,互斥):** | 线索状态 | 是否展示 | 字段标签 | 取值 | |---|---|---|---| | 无效 | 展示 | **无效原因** | displayReason | | 回收/退公海 | 展示 | **退回原因** | 现网退回原因 | | 普通跟进(待跟进/跟进中等) | **隐藏整行** | — | — | **展示规则:** - 单行展示,超长省略号,悬停 Tooltip 全文 - 只读,不可在概况直接编辑 - 取消无效后:无效原因行隐藏(若无退回原因则整行不展示) ### 4.5 线索列表 #### 4.5.1 列定义 | 列名 | 公海 | 线索管理 | 取值规则 | |---|---|---|---| | 线索渠道 | ✓ | ✓ | 现网字段,对齐展示;用于识别腾讯广告等 | | 跟进状态 | ✓ | ✓ | 回收线索 / 无效 / 待跟进等状态标签 | | 退回原因 | ✓ | — | 仅 **回收线索** 行展示;其它状态为「—」 | | 无效原因 | ✓ | ✓ | 仅 **无效** 行展示 displayReason;其它为「—」 | #### 4.5.2 自定义列表 - 入口:列表页 **自定义列表** - 配置区:**线索基础信息** - 公海可勾选:线索渠道、退回原因、无效原因 - 线索管理可勾选:线索渠道、无效原因 - 勾选 → 进入「已显示列」→ 列表展示;支持拖拽排序 **默认展示策略(建议):** 「无效原因」「退回原因」默认不勾选,由用户按需开启,避免列表过宽;评审时可二选一定稿。 #### 4.5.3 跟进状态列 · 明确不做 - **不在**「回收线索」「无效」状态旁增加 `?` 悬停气泡 - 原因:已有「退回原因」「无效原因」独立列,避免信息重复 - 跟进状态列仅展示状态标签本身 ### 4.6 各表面展示对照 | 表面 | 预设理由 | 选「其它」 | 腾讯广告 | |---|---|---|---| | 线索标签 | 无效 + 理由标签 | **仅无效** | 按实际标签(不设无效理由标签) | | 概况原因字段 | 无效原因 = 枚举名 | 无效原因 = `其它:具体原因` | 设无效后不展示无效原因行 | | 列表「无效原因」 | 枚举名 | `其它:具体原因` | — | | 列表「退回原因」(公海) | — | — | — | | 操作记录 | 【枚举名】 | 【其它:具体原因】 | 无【无效原因】后缀 | ### 4.7 displayReason 与操作记录 | 条件 | displayReason | 操作记录 content | |---|---|---| | 预设理由 | 枚举名,如 `空号/停机/关机` | `变更线索状态为"无效",无效原因【空号/停机/关机】` | | 其它 | `其它:{具体原因}` | `变更线索状态为"无效",无效原因【其它:…】` | | 腾讯广告 | 无 / 空 | `变更线索状态为"无效"` | | 取消无效 | — | `变更线索状态为"有效"` | | 退公海(对标) | — | `将线索退回【部门】,退回原因【…】` | --- ## 5. 数据与接口 ### 5.1 设为无效提交 ```json { "action": "set_invalid", "leadId": "LD_xxx", "reasonCode": "other", "reasonLabel": "其它", "reasonRemark": "客户明确表示近三个月不做", "displayReason": "其它:客户明确表示近三个月不做" } ``` 腾讯广告(免填): ```json { "action": "set_invalid", "leadId": "LD_xxx", "channel": "腾讯广告", "skipReason": true } ``` ### 5.2 取消无效提交 ```json { "action": "cancel_invalid", "leadId": "LD_xxx" } ``` ### 5.3 服务端规则 | 规则 | 说明 | |---|---| | reasonCode = other | reasonRemark 必填,1~50 字 | | reasonCode ≠ other | reasonRemark 置 null | | displayReason | 服务端生成并落库;其它=`其它:{remark}` | | 标签 | 非 other:写「无效」+ 理由标签;other:**只写「无效」** | | 腾讯广告 | 跳过 reason 校验;不写 displayReason | | 取消无效 | 清无效理由、移除无效及相关理由标签 | | 概况/列表 | 无效态读 invalidReason;回收态读 returnReason | ### 5.4 读模型示意 **无效线索:** ```json { "channel": "抖音", "followStatus": "invalid", "followStatusLabel": "无效", "invalidReason": "其它:客户明确表示近三个月不做", "returnReason": null, "reasonField": { "label": "无效原因", "value": "其它:客户明确表示近三个月不做" }, "tags": ["无效"] } ``` **公海回收线索:** ```json { "followStatus": "recycled", "followStatusLabel": "回收线索", "invalidReason": null, "returnReason": "无法建立有效联系", "reasonField": { "label": "退回原因", "value": "无法建立有效联系" } } ``` --- ## 6. 验收标准(QA) ### 6.1 弹窗与操作记录 - [ ] 普通渠道:勾选设无效必须选理由;其它必填 ≤50 字 - [ ] 腾讯广告:勾选即成功,不弹窗,记录无无效原因【】 - [ ] 取消无效:确认文案正确,记录写「变更为有效」 - [ ] displayReason 与操作记录【】内容一致 ### 6.2 标签 - [ ] 预设理由:无效 + 对应理由标签 - [ ] 选其它:**仅「无效」**,无「其它」标签 - [ ] 取消无效后标签清除 ### 6.3 线索概况 - [ ] 无效线索:跟进状态下显示「无效原因」 - [ ] 回收线索:显示「退回原因」 - [ ] 普通跟进态:原因行隐藏 - [ ] 超长省略 + 悬停全文 ### 6.4 公海 / 线索管理列表 - [ ] 公海:退回原因列仅回收行有值 - [ ] 公海、线索管理:无效原因列仅无效行有值 - [ ] 线索渠道列正常展示 - [ ] 自定义列表可勾选/取消/拖拽上述列 - [ ] 列顺序保存后列表即时生效 --- ## 7. 影响面 | 端 | 改动 | |---|---| | 前端-详情 | 设无效/取消弹窗;标签策略;概况动态原因字段 | | 前端-公海列表 | 退回原因、无效原因、线索渠道列;自定义列表项 | | 前端-线索管理列表 | 无效原因、线索渠道列;自定义列表项 | | 后端 | 理由落库;腾讯广告分支保留;标签策略;列表/详情字段 | | 操作记录 | 无效/有效文案模板 | --- ## 8. 文案清单 | 位置 | 文案 | |---|---| | 概况字段(无效) | 无效原因 | | 概况字段(回收) | 退回原因 | | 列表列名 | 无效原因 / 退回原因 / 线索渠道 | | 自定义列表 | 无效原因、退回原因(公海)、线索渠道 | | 设为无效弹窗 | 您确定把当前线索设为 **无效**? 请选择你的理由: | | 其它输入占位 | 请输入具体无效原因(必填) | | 其它校验 | 请填写具体原因 | | 取消无效确认 | 您确定**取消**当前线索的无效标记吗? | | 设无效记录 | 变更线索状态为"无效",无效原因【{displayReason}】 | | 取消无效记录 | 变更线索状态为"有效" | ---
© 2026 Qimall OS · Prototype Management System
PHP 8.3+
Tailwind CSS