Files
wecom_it_smart_desk/scripts/fix_prd_painpoints.py
T

150 lines
10 KiB
Python
Raw Normal View History

import sys
filepath = r"D:\资料\03-项目开发\wecom_it_smart_desk\docs\PRD.md"
with open(filepath, "r", encoding="utf-8") as f:
lines = f.readlines()
content = "".join(lines)
# === 1. 修改 §2.2 痛点分析表格:新增"解决阶段"列 ===
old_table = """### 2.2 痛点分析
| # | 痛点 | 现状描述 | 影响 |
|---|------|---------|------|
| 1 | 员工绕过AI直接进人工 | 员工可无需通过AI机器人直接进入人工坐席,跳转一次人工后下次直接咨询人工坐席 | AI筛选比例极低,人工成本高 |
| 2 | 需另开窗口 | AI机器人咨询跳转人工坐席后,需要另开新窗口才能继续沟通 | 体验割裂,员工困惑 |
| 3 | 无法跨主体共享 | AI机器人和企微员工服务模块无法像自建应用一样共享至跨主体上下游企业企微 | 跨企业服务不可达 |
| 4 | 人工咨询依赖个人能力和经验 | 坐席回复质量因人而异,容易受个人情绪和状态的影响,新人依赖老带新,无法保证统一服务水准 | 服务质量不稳定,响应效率受限于个人状态 |
| 5 | 实习生成长慢、辅导价值低 | 实习生在岗时间短且不稳定,成长速度慢,辅导老师投入大量精力但工作价值缺乏优势 | 人才培养投入产出比低,知识传承断档 |
| 6 | 个人经验无法积累传承 | 坐席人员的个人经验和成果无法有效积累、传承、迭代更新 | 人员离职即经验流失,团队整体能力无法持续提升 |
| 7 | 缺乏数据支撑的管理盲区 | 坐席人员能力和绩效、IT支持员工满意度缺乏有效数据支撑 | 管理决策凭感觉,无法量化评估和持续优化 |
"""
new_table = """### 2.2 痛点分析
> **痛点与阶段对应关系**:每条痛点标注了将在哪个演进阶段被解决,便于追溯开发升级功能的针对性。
| # | 痛点 | 现状描述 | 影响 | 解决阶段 |
|---|------|---------|------|---------|
| 1 | 员工绕过AI直接进人工 | 员工可无需通过AI机器人直接进入人工坐席,跳转一次人工后下次直接咨询人工坐席 | AI筛选比例极低,人工成本高 | **阶段二** |
| 2 | 需另开窗口 | AI机器人咨询跳转人工坐席后,需要另开新窗口才能继续沟通 | 体验割裂,员工困惑 | **阶段二** |
| 3 | 无法跨主体共享 | AI机器人和企微员工服务模块无法像自建应用一样共享至跨主体上下游企业企微 | 跨企业服务不可达 | **阶段二** |
| 4 | 人工咨询依赖个人能力和经验 | 坐席回复质量因人而异,容易受个人情绪和状态的影响,新人依赖老带新,无法保证统一服务水准 | 服务质量不稳定,响应效率受限于个人状态 | **阶段三** |
| 5 | 实习生成长慢、辅导价值低 | 实习生在岗时间短且不稳定,成长速度慢,辅导老师投入大量精力但工作价值缺乏优势 | 人才培养投入产出比低,知识传承断档 | **阶段三** |
| 6 | 个人经验无法积累传承 | 坐席人员的个人经验和成果无法有效积累、传承、迭代更新 | 人员离职即经验流失,团队整体能力无法持续提升 | **阶段四** |
| 7 | 缺乏数据支撑的管理盲区 | 坐席人员能力和绩效、IT支持员工满意度缺乏有效数据支撑 | 管理决策凭感觉,无法量化评估和持续优化 | **阶段四** |
"""
if old_table in content:
content = content.replace(old_table, new_table, 1)
print("✅ §2.2 痛点分析表格已更新(新增解决阶段列)")
else:
print("❌ 未找到 §2.2 原始表格,正在尝试逐行定位...")
# 尝试找到 §2.2 的开始位置
in_section = False
for i, line in enumerate(lines):
if "### 2.2 痛点分析" in line:
in_section = True
print(f" 找到 §2.2 起始行: {i+1}")
if in_section and line.strip().startswith("> **核心约束**"):
print(f" §2.2 结束行: {i+1}")
break
# === 2. 修改 §2.2 后面的引用块(痛点关系说明)===
old_quote = """> **核心约束**: 所有对象都是企业内员工,必须避免使用企微微信客服能力。
> **痛点关系**: 痛点1-3为员工体验层问题,痛点4-7为管理与人效层问题。后者是前者的深层根因——正是因为缺乏经验积累(痛点6)和数据支撑(痛点7),才导致服务质量不稳定(痛点4)和新人成长慢(痛点5),最终迫使员工绕过AI直接找"靠谱的老员工"(痛点1)。"""
new_quote = """> **核心约束**: 所有对象都是企业内员工,必须避免使用企微微信客服能力。
> **痛点关系**: 痛点1-3为员工体验层问题(阶段二解决),痛点4-5为坐席能力层问题(阶段三解决),痛点6-7为管理迭代层问题(阶段四解决)。阶段五(自动/辅助审核开单结单)主要解决多系统切换效率问题,进一步提升整体人效。"""
if old_quote in content:
content = content.replace(old_quote, new_quote, 1)
print("✅ §2.2 痛点关系说明已更新(标注解决阶段)")
else:
print("⚠️ 未找到痛点关系引用块,跳过")
# === 3. 修改 §5.1 阶段总览表:新增"解决痛点"列 ===
old_header_51 = """| 阶段 | 目标 | 核心变更 | 现有系统影响 |
|------|------|---------|------------|"""
new_header_51 = """| 阶段 | 目标 | 核心变更 | 解决痛点 | 现有系统影响 |
|------|------|---------|---------|------------|"""
if old_header_51 in content:
content = content.replace(old_header_51, new_header_51, 1)
print("✅ §5.1 表头已更新(新增解决痛点列)")
else:
print("❌ 未找到 §5.1 表头")
# === 4. 修改 §5.1 表格数据行 ===
replacements = [
# (old_line, new_line)
(
"| **阶段一** | AI机器人接入(按服务对象) | 将现有AI机器人从企微1对1消息模式迁入H5自建应用,保留RAGFlow+Dify+千问能力 | AI机器人入口切换,原有1对1窗口保留为降级通道 |",
"| **阶段一** | AI机器人接入(按服务对象) | 将现有AI机器人从企微1对1消息模式迁入H5自建应用,保留RAGFlow+Dify+千问能力 | 痛点1(部分)、API入口统一 | AI机器人入口切换,原有1对1窗口保留为降级通道 |"
),
(
"| **阶段二** | 迁移和集成面向员工的智能咨询功能 | H5员工端完整体验(AI对话+转人工+摇人+评分),双通道消息推送 | 员工服务入口逐步迁移至H5 |",
"| **阶段二** | 迁移和集成面向员工的智能咨询功能 | H5员工端完整体验(AI对话+转人工+摇人+评分),双通道消息推送 | **痛点1/2/3** | 员工服务入口逐步迁移至H5 |"
),
(
"| **阶段三** | 面向坐席的辅助回复和辅助判断 | 坐席工作台 AI Wingman(草稿回复+自动摘要+知识推荐+排查步骤) | 坐席从员工服务后台切换至自研工作台 |",
"| **阶段三** | 面向坐席的辅助回复和辅助判断 | 坐席工作台 AI Wingman(草稿回复+自动摘要+知识推荐+排查步骤) | **痛点4/5** | 坐席从员工服务后台切换至自研工作台 |"
),
(
"| **阶段四** | 日志标准和AI知识库迭代 | 会话标注体系 + AI知识库自动迭代闭环 + 数据统计看板 | AI知识库从人工维护升级为自动迭代 |",
"| **阶段四** | 日志标准和AI知识库迭代 | 会话标注体系 + AI知识库自动迭代闭环 + 数据统计看板 | **痛点6/7** | AI知识库从人工维护升级为自动迭代 |"
),
(
"| **阶段五** | 自动/辅助审核、开单、结单 | 工单/审批/设备异常一站式处理 + AI辅助填单+自动结单 | 替代多系统切换,统一工作台闭环 |",
"| **阶段五** | 自动/辅助审核、开单、结单 | 工单/审批/设备异常一站式处理 + AI辅助填单+自动结单 | 多系统切换效率问题 | 替代多系统切换,统一工作台闭环 |"
),
]
for old, new in replacements:
if old in content:
content = content.replace(old, new, 1)
print(f"✅ §5.1 数据行已更新: {old.split('|')[2].strip()}")
else:
print(f"❌ 未找到 §5.1 数据行: {old.split('|')[2].strip()}")
# === 5. 在 §5.2 各阶段详细规划开头,每个阶段标注"本阶段解决痛点" ===
stage_intros = [
(
"#### 阶段一:AI机器人接入(按服务对象)\n\n**目标**",
"#### 阶段一:AI机器人接入(按服务对象)\n\n> **本阶段解决痛点**:API入口统一(为阶段二解决痛点1/2/3打基础),按服务对象路由。\n\n**目标**"
),
(
"#### 阶段二:迁移和集成面向员工的智能咨询功能\n\n**目标**",
"#### 阶段二:迁移和集成面向员工的智能咨询功能\n\n> **本阶段解决痛点**:痛点1(绕过AI)、痛点2(另开窗口)、痛点3(无法跨主体共享)。\n\n**目标**"
),
(
"#### 阶段三:面向坐席的辅助回复和辅助判断\n\n**目标**",
"#### 阶段三:面向坐席的辅助回复和辅助判断\n\n> **本阶段解决痛点**:痛点4(人工咨询依赖个人能力)、痛点5(实习生成长慢)。\n\n**目标**"
),
(
"#### 阶段四:日志标准和AI知识库迭代\n\n**目标**",
"#### 阶段四:日志标准和AI知识库迭代\n\n> **本阶段解决痛点**:痛点6(个人经验无法积累传承)、痛点7(缺乏数据支撑的管理盲区)。\n\n**目标**"
),
(
"#### 阶段五:自动/辅助审核、开单、结单\n\n**目标**",
"#### 阶段五:自动/辅助审核、开单、结单\n\n> **本阶段解决痛点**:多系统切换效率问题(延伸痛点4/5,进一步提升人效)。\n\n**目标**"
),
]
for old, new in stage_intros:
if old in content:
content = content.replace(old, new, 1)
print(f"✅ §5.2 阶段标注已更新: {old.split('')[1].split('**')[0].strip()}")
else:
print(f"❌ 未找到 §5.2 阶段: {old.split('')[1].split('**')[0].strip()}")
# 写回文件
with open(filepath, "w", encoding="utf-8") as f:
f.write(content)
print("\n✅ PRD.md 痛点与阶段对应更新完成")
print(f" 文件: {filepath}")