版本:v1.0
编制时间:2026-04-28 15:50
编制依据:
- 《建档流程与架构分析报告》(2026-04-28)
- 《整改计划-v1.0.md》(2026-04-28)
- 用户补充问题清单(2026-04-28 15:50)
---
| 序号 | 用户补充问题 | 对应架构报告问题 | 对应整改任务 | 优先级 |
| 1 | 权限管控存在缺陷 | P008(越权风险) | T003 | P0 |
| 2 | 欢迎语与报名链接未联动 | 新增 | 新增 T011 | P0 |
| 3 | 新用户欢迎文案不统一 | P002(渠道激活) | T002 | P1 |
| 4 | 查询技能后暴露程序代码 | 新增 | 新增 T012 | P0 |
| 5 | 泄露敏感隐私信息 | P001(同步风险)衍生 | T001 + 新增 T013 | P0 |
| 6 | 全局用户引导文案不统一 | P002(渠道激活)衍生 | T002 | P1 |
| 7 | 审核结果无法主动反馈 | 新增 | 新增 T014 | P1 |
| 8 | 无法自动转接运营人员 | 新增 | 新增 T015 | P1 |
| 9 | 三级权限体系未建立 | P008(越权风险)深化 | T003 扩展 | P0 |
---
| 类别 | 问题数量 | 严重级别分布 |
| **权限与安全** | 4 个(问题 1, 4, 5, 9) | 🔴 严重 3 个,⚠️ 中等 1 个 |
| **用户体验** | 3 个(问题 2, 3, 6) | ⚠️ 中等 3 个 |
| **业务流程** | 2 个(问题 7, 8) | ⚠️ 中等 2 个 |
| **合计** | **9 个** | 🔴 严重 3 个,⚠️ 中等 6 个 |
---
---
**用户描述:** 所有者权限划分不够精准合理。
**架构报告对应:** P008 — 云部署脚本硬编码 contactId(越权风险)
**深入分析:**
| 层面 | 问题描述 | 影响 |
| **身份识别** | 未从会话标识自动解析 contactId | 可能加载错误用户权限 |
| **权限检查** | 缺少角色验证逻辑 | 非 owner 可操作 owner 资源 |
| **数据隔离** | 档案目录未严格按 contactId 隔离 | 用户数据可能互访 |
| **审计日志** | 无操作审计记录 | 无法追溯越权行为 |
**整改方案:**
---
**用户描述:** 对外展示页面会异常暴露程序代码,展示内容异常。
**架构报告对应:** 新增问题
**深入分析:**
| 可能原因 | 描述 | 风险等级 |
| **思考过程泄露** | thinking 内容未过滤 | 🔴 高 |
| **工具调用日志** | 调用 read/exec 等工具详情外露 | 🔴 高 |
| **API 错误信息** | 接口返回原始错误堆栈 | 🔴 高 |
| **文件路径暴露** | 显示 `/home/admin/.openclaw/...` | ⚠️ 中 |
**整改方案:**
# 新增:输出过滤器
def filter_output(response: str) -> str:
"""过滤敏感输出内容"""
# 过滤 thinking 内容
response = re.sub(r'\{"type":"thinking".*?\}', '', response)
# 过滤工具调用日志
response = re.sub(r'调用 \w+ 工具.*?\n', '', response)
# 过滤文件路径
response = re.sub(r'/home/admin/\.openclaw/[^\s]+', '[内部路径]', response)
# 过滤 API 错误详情
response = re.sub(r'API Error:.*?\n', '查询失败,请稍后再试\n', response)
return response
**新增任务:** T012 — 增加输出内容过滤器
---
**用户描述:** 系统对外泄露 AppID、密钥、医生 UID、服务器 IP 等关键数据。
**架构报告对应:** P001(同步风险)衍生问题
**深入分析:**
| 泄露信息 | 可能来源 | 风险等级 |
| **AppID** | 技能脚本、日志文件 | 🔴 高 |
| **Secret** | 配置文件、错误信息 | 🔴 严重 |
| **医生 UID** | 查询结果未脱敏 | 🔴 高 |
| **服务器 IP** | 错误日志、部署配置 | ⚠️ 中 |
| **API 地址** | 技能文档、配置 | ⚠️ 中 |
**整改方案:**
# 新增:敏感信息脱敏模块
def desensitize_data(data: dict) -> dict:
"""脱敏敏感字段"""
sensitive_fields = [
'appid', 'secret', 'api_url', 'server_ip',
'doctor_uid', 'userid', 'card_id'
]
for field in sensitive_fields:
if field in data:
value = str(data[field])
if len(value) > 8:
data[field] = value[:4] + '****' + value[-4:]
else:
data[field] = '****'
return data
**新增任务:** T013 — 增加敏感信息脱敏机制
---
**用户描述:** 需搭建管理员、医生、运营人员三级权限体系,当前存在漏洞。
**架构报告对应:** P008(越权风险)深化
**深入分析:**
| 权限级别 | 应有权限 | 当前状态 | 差距 |
| **管理员(owner)** | 全量数据查询 | ✅ 已实现 | - |
| **运营人员(employee)** | 查看全部医生数据 | ⚠️ 部分实现 | 缺少统一查询接口 |
| **医生(other-contacts)** | 仅查看本人数据 | ❌ 存在漏洞 | 未建档医生可查询他人数据 |
**关键漏洞:**
未建档医生(verified=false)
↓
跳过建档引导流程
↓
直接调用查询技能
↓
使用他人 UserID 查询(无权限检查)
↓
❌ 违规获取他人数据
**整改方案:**
# 新增:权限检查中间件
def check_permission(contact_id: str, action: str, target_uid: str = None) -> bool:
"""检查用户权限"""
user_index = load_user_index()
user_info = user_index.get(contact_id, {})
role = user_info.get('role', 'unknown')
verified = user_info.get('verified', False)
# 未建档用户禁止查询
if not verified:
return False
# 权限矩阵
permission_matrix = {
'owner': ['query_all', 'query_self', 'deploy', 'admin'],
'employee': ['query_all', 'query_self'],
'other-contacts': ['query_self']
}
# 检查动作权限
if action not in permission_matrix.get(role, []):
return False
# 查询他人数据需要更高权限
if target_uid and action == 'query':
if role not in ['owner', 'employee']:
# 检查是否查询本人数据
if target_uid != user_info.get('doctor_uid'):
return False
return True
**扩展任务:** T003 扩展 — 建立三级权限体系
---
---
**用户描述:** 需依据数字员工配置的场景码,精准推送对应关联板块的报名链接。
**架构报告对应:** 新增问题
**深入分析:**
| 当前流程 | 问题 | 期望流程 |
| 用户添加 → 发送通用欢迎语 | 无法识别用户来源场景 | 用户添加 → 解析场景码 → 发送对应板块欢迎语 + 报名链接 |
| 欢迎语内容固定 | 无法精准推荐活动 | 根据场景码推荐关联活动 |
**整改方案:**
# 新增:场景码解析与精准推送
SCENE_MAPPING = {
'scene_tumor': {
'welcome_template': '肿瘤板块欢迎语',
'activity_list': ['精准免疫肿瘤诊疗管理'],
'reg_links': ['https://fjhma.com/1DL8uI']
},
'scene_interdisciplinary': {
'welcome_template': '跨学科板块欢迎语',
'activity_list': ['跨学科综合健康管理'],
'reg_links': ['https://fjhma.com/1DL53Y']
}
}
def send_scene_welcome(contact_id: str, scene_code: str):
"""根据场景码发送精准欢迎语"""
if scene_code not in SCENE_MAPPING:
send_default_welcome(contact_id)
return
scene = SCENE_MAPPING[scene_code]
welcome_msg = scene['welcome_template']
activity_list = '\n'.join([f"• {act}" for act in scene['activity_list']])
reg_links = '\n'.join(scene['reg_links'])
message = f"""{welcome_msg}
📋 推荐活动:
{activity_list}
🔗 报名链接:
{reg_links}"""
send_message(contact_id, message)
**新增任务:** T011 — 实现欢迎语与报名链接联动
---
**用户描述:** 有些用户部分内容完整,有些用户部分内容缺失、展示不全。
**架构报告对应:** P002(渠道激活)衍生问题
**深入分析:**
| 问题表现 | 可能原因 | 影响 |
| 部分用户收到完整欢迎语 | 渠道已激活 | 体验一致性好 |
| 部分用户收到截断欢迎语 | 渠道未激活,消息发送失败 | 体验差 |
| 部分用户未收到欢迎语 | 会话未触发 | 欢迎流程未执行 |
**整改方案:**
---
**用户描述:** 部分账号发送欢迎语后同步展示技能列表,部分仅简单引导。
**架构报告对应:** P002(渠道激活)衍生问题
**深入分析:**
| 用户类型 | 当前引导文案 | 问题 |
| owner | 完整技能列表 + 系统信息 | 信息过载 |
| employee | 技能列表 + 工作指引 | 较完整 |
| other-contacts | 简单引导或无引导 | 体验不一致 |
**整改方案:**
# 统一引导文案模板
GUIDE_TEMPLATES = {
'owner': """👋 欢迎使用小医!
我是您的健康之路医生助理,可为您提供以下服务:
📋 核心功能:
• 活动查询与报名
• 审核状态查询
• 提现订单查询
• 常见问题解答
💡 使用提示:
直接告诉我您的需求,如"有什么活动"、"我的提现"等。""",
'employee': """👋 欢迎使用小医!
我是健康之路运营助手,可协助您:
📋 核心功能:
• 查看医生数据
• 活动管理
• 审核查询
💡 使用提示:
直接告诉我您的需求。""",
'other-contacts': """👋 欢迎使用小医!
我是您的健康之路医生助理,可为您提供:
📋 核心功能:
• 活动查询与报名
• 审核状态查询
• 提现订单查询
💡 使用提示:
直接告诉我您的需求,如"有什么活动"、"我的审核"等。"""
}
**扩展任务:** T002 扩展 — 统一用户引导文案
---
---
**用户描述:** 医生报名及医生认证业务中,审核结果无法主动反馈给用户。
**架构报告对应:** 新增问题
**深入分析:**
| 当前流程 | 问题 | 期望流程 |
| 用户提交报名 → 等待审核 → 无通知 | 用户不知审核进度 | 提交 → 审核中通知 → 审核完成主动推送结果 |
| 用户需主动查询 | 体验差 | 主动触达 |
**整改方案:**
# 新增:审核结果主动推送
def notify_audit_result(contact_id: str, audit_info: dict):
"""推送审核结果"""
status_map = {
1: '待审核',
2: '已审待结算',
3: '已结算',
4: '已驳回'
}
status = audit_info.get('status')
status_text = status_map.get(status, '未知')
if status == 1:
message = f"""📋 审核进度通知
您的报名申请已提交,当前状态:【{status_text}】
我们会持续跟进,审核完成后第一时间通知您!"""
elif status == 2:
message = f"""✅ 审核通过通知
您的报名申请已审核通过!
📋 审核详情:
• 活动:{audit_info.get('activity')}
• 状态:{status_text}
请耐心等待结算,结算完成后我会再次通知您。"""
elif status == 3:
message = f"""💰 结算完成通知
您的报名申请已完成结算!
📋 结算详情:
• 活动:{audit_info.get('activity')}
• 金额:{audit_info.get('amount')} 元
感谢您的参与!"""
elif status == 4:
message = f"""❌ 审核驳回通知
您的报名申请未通过审核。
📋 驳回原因:
{audit_info.get('reject_reason')}
您可以重新提交申请,或联系运营人员咨询。"""
send_message(contact_id, message)
**新增任务:** T014 — 实现审核结果主动推送
---
**用户描述:** 遇到无法解答的问题时,不能自动转接运营人员;内容审核待审核状态时,无法转接全科医生催促。
**架构报告对应:** 新增问题
**深入分析:**
| 场景 | 当前处理 | 期望处理 |
| 用户问题无法解答 | 告知用户联系运营 | 自动创建工单 → 通知运营人员 |
| 审核待审核状态 | 告知用户等待 | 自动创建工单 → 通知全科医生催促 |
**整改方案:**
# 新增:智能转接机制
def smart_escalation(contact_id: str, issue_type: str, context: dict):
"""智能转接"""
if issue_type == 'unanswerable':
# 无法解答的问题 → 转接运营人员
ticket = create_ticket(
type='运营转接',
contact_id=contact_id,
issue=context.get('question'),
assigned_to='运营团队'
)
notify_operators(ticket)
send_message(contact_id, "已为您转接运营人员,请耐心等待。")
elif issue_type == 'audit_pending':
# 审核待审核 → 转接全科医生催促
ticket = create_ticket(
type='审核催促',
contact_id=contact_id,
audit_info=context.get('audit_info'),
assigned_to='全科医生团队'
)
notify_gp_doctors(ticket)
send_message(contact_id, "已为您转接全科医生团队催促审核。")
**新增任务:** T015 — 实现智能转接机制
---
| 任务 ID | 关联问题 | 任务名称 | 优先级 | 预计工时 |
| T011 | 问题 2 | 实现欢迎语与报名链接联动 | P0 | 8 小时 |
| T012 | 问题 4 | 增加输出内容过滤器 | P0 | 4 小时 |
| T013 | 问题 5 | 增加敏感信息脱敏机制 | P0 | 6 小时 |
| T014 | 问题 7 | 实现审核结果主动推送 | P1 | 8 小时 |
| T015 | 问题 8 | 实现智能转接机制 | P1 | 8 小时 |
| 任务 ID | 原任务 | 扩展内容 | 新增工时 |
| T003 扩展 | 修复云部署越权 | 建立三级权限体系 | +16 小时 |
| T002 扩展 | 渠道状态监控 | 统一用户引导文案 | +4 小时 |
---
| 阶段 | 任务数量 | 总工时 |
| **第一阶段:紧急修复** | 6 个(T001-T003, T011-T013) | 28 小时 |
| **第二阶段:中期优化** | 5 个(T004-T006, T014-T015) | 30 小时 |
| **第三阶段:长期完善** | 4 个(T007-T010) | 74 小时 |
| **合计** | **15 个任务** | **132 小时** |
---
| 风险 | 可能性 | 影响 | 风险等级 | 新增缓解措施 |
| 权限漏洞被利用 | 中 | 高 | 🔴 高 | 立即实施 T003 扩展 + T013 |
| 敏感信息泄露 | 中 | 高 | 🔴 高 | 立即实施 T013 |
| 代码暴露影响形象 | 高 | 中 | ⚠️ 中 | 立即实施 T012 |
| 用户体验不一致 | 高 | 中 | ⚠️ 中 | 实施 T002 扩展 + T011 |
| 审核流失率升高 | 中 | 中 | ⚠️ 中 | 实施 T014 + T015 |
**原 P0 任务(3 个)→ 现 P0 任务(6 个):**
---
| 维度 | 架构报告 | 用户补充 | 综合后 |
| 问题数量 | 7 个 | 9 个 | 15 个(去重后) |
| 严重级别 | 🔴 3 个 | 🔴 3 个 | 🔴 6 个 |
| 任务数量 | 10 个 | - | 15 个 |
| 预计工时 | 94 小时 | - | 132 小时 |
**需立即修复(本周内):**
**需优先优化(2 周内):**
---
---
_综合分析报告版本:v1.0_
_编制时间:2026-04-28 15:50_
_状态:待审批_