# 小医系统问题综合分析报告

> 版本：v1.0  
> 编制时间：2026-04-28 15:50  
> 编制依据：
> - 《建档流程与架构分析报告》（2026-04-28）
> - 《整改计划-v1.0.md》（2026-04-28）
> - 用户补充问题清单（2026-04-28 15:50）

---

## 一、问题汇总与映射

### 1.1 问题来源对照表

| 序号 | 用户补充问题 | 对应架构报告问题 | 对应整改任务 | 优先级 |
|------|-------------|------------------|-------------|--------|
| 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 |

---

### 1.2 问题分类统计

| 类别 | 问题数量 | 严重级别分布 |
|------|----------|-------------|
| **权限与安全** | 4 个（问题 1, 4, 5, 9） | 🔴 严重 3 个，⚠️ 中等 1 个 |
| **用户体验** | 3 个（问题 2, 3, 6） | ⚠️ 中等 3 个 |
| **业务流程** | 2 个（问题 7, 8） | ⚠️ 中等 2 个 |
| **合计** | **9 个** | 🔴 严重 3 个，⚠️ 中等 6 个 |

---

## 二、问题详细分析

### 2.1 权限与安全问题（高优先级）

---

#### 问题 1：权限管控存在缺陷

**用户描述：** 所有者权限划分不够精准合理。

**架构报告对应：** P008 — 云部署脚本硬编码 contactId（越权风险）

**深入分析：**

| 层面 | 问题描述 | 影响 |
|------|----------|------|
| **身份识别** | 未从会话标识自动解析 contactId | 可能加载错误用户权限 |
| **权限检查** | 缺少角色验证逻辑 | 非 owner 可操作 owner 资源 |
| **数据隔离** | 档案目录未严格按 contactId 隔离 | 用户数据可能互访 |
| **审计日志** | 无操作审计记录 | 无法追溯越权行为 |

**整改方案：**
- ✅ 已纳入 T003（修复云部署脚本越权问题）
- 需扩展：全局权限检查中间件
- 需新增：权限配置中心（`config/permissions.json`）

---

#### 问题 4：查询技能后暴露程序代码

**用户描述：** 对外展示页面会异常暴露程序代码，展示内容异常。

**架构报告对应：** 新增问题

**深入分析：**

| 可能原因 | 描述 | 风险等级 |
|----------|------|----------|
| **思考过程泄露** | thinking 内容未过滤 | 🔴 高 |
| **工具调用日志** | 调用 read/exec 等工具详情外露 | 🔴 高 |
| **API 错误信息** | 接口返回原始错误堆栈 | 🔴 高 |
| **文件路径暴露** | 显示 `/home/admin/.openclaw/...` | ⚠️ 中 |

**整改方案：**

```python
# 新增：输出过滤器

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 — 增加输出内容过滤器

---

#### 问题 5：泄露敏感隐私信息

**用户描述：** 系统对外泄露 AppID、密钥、医生 UID、服务器 IP 等关键数据。

**架构报告对应：** P001（同步风险）衍生问题

**深入分析：**

| 泄露信息 | 可能来源 | 风险等级 |
|----------|----------|----------|
| **AppID** | 技能脚本、日志文件 | 🔴 高 |
| **Secret** | 配置文件、错误信息 | 🔴 严重 |
| **医生 UID** | 查询结果未脱敏 | 🔴 高 |
| **服务器 IP** | 错误日志、部署配置 | ⚠️ 中 |
| **API 地址** | 技能文档、配置 | ⚠️ 中 |

**整改方案：**

```python
# 新增：敏感信息脱敏模块

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 — 增加敏感信息脱敏机制

---

#### 问题 9：三级权限体系未建立

**用户描述：** 需搭建管理员、医生、运营人员三级权限体系，当前存在漏洞。

**架构报告对应：** P008（越权风险）深化

**深入分析：**

| 权限级别 | 应有权限 | 当前状态 | 差距 |
|----------|----------|----------|------|
| **管理员（owner）** | 全量数据查询 | ✅ 已实现 | - |
| **运营人员（employee）** | 查看全部医生数据 | ⚠️ 部分实现 | 缺少统一查询接口 |
| **医生（other-contacts）** | 仅查看本人数据 | ❌ 存在漏洞 | 未建档医生可查询他人数据 |

**关键漏洞：**
```
未建档医生（verified=false）
    ↓
跳过建档引导流程
    ↓
直接调用查询技能
    ↓
使用他人 UserID 查询（无权限检查）
    ↓
❌ 违规获取他人数据
```

**整改方案：**

```python
# 新增：权限检查中间件

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 扩展 — 建立三级权限体系

---

### 2.2 用户体验问题（中优先级）

---

#### 问题 2：欢迎语与报名链接未联动

**用户描述：** 需依据数字员工配置的场景码，精准推送对应关联板块的报名链接。

**架构报告对应：** 新增问题

**深入分析：**

| 当前流程 | 问题 | 期望流程 |
|----------|------|----------|
| 用户添加 → 发送通用欢迎语 | 无法识别用户来源场景 | 用户添加 → 解析场景码 → 发送对应板块欢迎语 + 报名链接 |
| 欢迎语内容固定 | 无法精准推荐活动 | 根据场景码推荐关联活动 |

**整改方案：**

```python
# 新增：场景码解析与精准推送

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 — 实现欢迎语与报名链接联动

---

#### 问题 3：新用户欢迎文案不统一

**用户描述：** 有些用户部分内容完整，有些用户部分内容缺失、展示不全。

**架构报告对应：** P002（渠道激活）衍生问题

**深入分析：**

| 问题表现 | 可能原因 | 影响 |
|----------|----------|------|
| 部分用户收到完整欢迎语 | 渠道已激活 | 体验一致性好 |
| 部分用户收到截断欢迎语 | 渠道未激活，消息发送失败 | 体验差 |
| 部分用户未收到欢迎语 | 会话未触发 | 欢迎流程未执行 |

**整改方案：**
- ✅ 已纳入 T002（增加渠道状态监控）
- 需新增：欢迎语模板标准化（`config/welcome-templates.json`）
- 需新增：欢迎语发送重试机制

---

#### 问题 6：全局用户引导文案不统一

**用户描述：** 部分账号发送欢迎语后同步展示技能列表，部分仅简单引导。

**架构报告对应：** P002（渠道激活）衍生问题

**深入分析：**

| 用户类型 | 当前引导文案 | 问题 |
|----------|-------------|------|
| owner | 完整技能列表 + 系统信息 | 信息过载 |
| employee | 技能列表 + 工作指引 | 较完整 |
| other-contacts | 简单引导或无引导 | 体验不一致 |

**整改方案：**

```python
# 统一引导文案模板

GUIDE_TEMPLATES = {
    'owner': """👋 欢迎使用小医！

我是您的健康之路医生助理，可为您提供以下服务：

📋 核心功能：
• 活动查询与报名
• 审核状态查询
• 提现订单查询
• 常见问题解答

💡 使用提示：
直接告诉我您的需求，如"有什么活动"、"我的提现"等。""",

    'employee': """👋 欢迎使用小医！

我是健康之路运营助手，可协助您：

📋 核心功能：
• 查看医生数据
• 活动管理
• 审核查询

💡 使用提示：
直接告诉我您的需求。""",

    'other-contacts': """👋 欢迎使用小医！

我是您的健康之路医生助理，可为您提供：

📋 核心功能：
• 活动查询与报名
• 审核状态查询
• 提现订单查询

💡 使用提示：
直接告诉我您的需求，如"有什么活动"、"我的审核"等。"""
}
```

**扩展任务：** T002 扩展 — 统一用户引导文案

---

### 2.3 业务流程问题（中优先级）

---

#### 问题 7：审核结果无法主动反馈

**用户描述：** 医生报名及医生认证业务中，审核结果无法主动反馈给用户。

**架构报告对应：** 新增问题

**深入分析：**

| 当前流程 | 问题 | 期望流程 |
|----------|------|----------|
| 用户提交报名 → 等待审核 → 无通知 | 用户不知审核进度 | 提交 → 审核中通知 → 审核完成主动推送结果 |
| 用户需主动查询 | 体验差 | 主动触达 |

**整改方案：**

```python
# 新增：审核结果主动推送

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 — 实现审核结果主动推送

---

#### 问题 8：无法自动转接运营人员

**用户描述：** 遇到无法解答的问题时，不能自动转接运营人员；内容审核待审核状态时，无法转接全科医生催促。

**架构报告对应：** 新增问题

**深入分析：**

| 场景 | 当前处理 | 期望处理 |
|------|----------|----------|
| 用户问题无法解答 | 告知用户联系运营 | 自动创建工单 → 通知运营人员 |
| 审核待审核状态 | 告知用户等待 | 自动创建工单 → 通知全科医生催促 |

**整改方案：**

```python
# 新增：智能转接机制

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 — 实现智能转接机制

---

## 三、综合整改计划（更新版）

### 3.1 新增任务清单

| 任务 ID | 关联问题 | 任务名称 | 优先级 | 预计工时 |
|---------|----------|----------|--------|----------|
| T011 | 问题 2 | 实现欢迎语与报名链接联动 | P0 | 8 小时 |
| T012 | 问题 4 | 增加输出内容过滤器 | P0 | 4 小时 |
| T013 | 问题 5 | 增加敏感信息脱敏机制 | P0 | 6 小时 |
| T014 | 问题 7 | 实现审核结果主动推送 | P1 | 8 小时 |
| T015 | 问题 8 | 实现智能转接机制 | P1 | 8 小时 |

### 3.2 扩展任务清单

| 任务 ID | 原任务 | 扩展内容 | 新增工时 |
|---------|--------|----------|----------|
| T003 扩展 | 修复云部署越权 | 建立三级权限体系 | +16 小时 |
| T002 扩展 | 渠道状态监控 | 统一用户引导文案 | +4 小时 |

---

### 3.3 更新后任务总览

| 阶段 | 任务数量 | 总工时 |
|------|----------|--------|
| **第一阶段：紧急修复** | 6 个（T001-T003, T011-T013） | 28 小时 |
| **第二阶段：中期优化** | 5 个（T004-T006, T014-T015） | 30 小时 |
| **第三阶段：长期完善** | 4 个（T007-T010） | 74 小时 |
| **合计** | **15 个任务** | **132 小时** |

---

## 四、风险与优先级重评估

### 4.1 更新后风险矩阵

| 风险 | 可能性 | 影响 | 风险等级 | 新增缓解措施 |
|------|--------|------|----------|-------------|
| 权限漏洞被利用 | 中 | 高 | 🔴 高 | 立即实施 T003 扩展 + T013 |
| 敏感信息泄露 | 中 | 高 | 🔴 高 | 立即实施 T013 |
| 代码暴露影响形象 | 高 | 中 | ⚠️ 中 | 立即实施 T012 |
| 用户体验不一致 | 高 | 中 | ⚠️ 中 | 实施 T002 扩展 + T011 |
| 审核流失率升高 | 中 | 中 | ⚠️ 中 | 实施 T014 + T015 |

### 4.2 优先级调整

**原 P0 任务（3 个）→ 现 P0 任务（6 个）：**
- T001: 增强 user_index.json 同步脚本健壮性
- T002: 增加渠道状态监控机制
- T003: 修复云部署脚本越权问题
- **T011: 实现欢迎语与报名链接联动**（新增）
- **T012: 增加输出内容过滤器**（新增）
- **T013: 增加敏感信息脱敏机制**（新增）

---

## 五、总结

### 5.1 问题对比

| 维度 | 架构报告 | 用户补充 | 综合后 |
|------|----------|----------|--------|
| 问题数量 | 7 个 | 9 个 | 15 个（去重后） |
| 严重级别 | 🔴 3 个 | 🔴 3 个 | 🔴 6 个 |
| 任务数量 | 10 个 | - | 15 个 |
| 预计工时 | 94 小时 | - | 132 小时 |

### 5.2 核心风险

**需立即修复（本周内）：**
1. 🔴 权限漏洞（问题 1, 9）
2. 🔴 敏感信息泄露（问题 5）
3. 🔴 代码暴露（问题 4）

**需优先优化（2 周内）：**
1. ⚠️ 欢迎语与报名链接联动（问题 2）
2. ⚠️ 用户引导文案统一（问题 3, 6）
3. ⚠️ 审核结果主动推送（问题 7）
4. ⚠️ 智能转接机制（问题 8）

---

## 六、建议

### 6.1 立即行动（第 1 周）

- [ ] 实施 T012（输出过滤器）— 防止代码暴露
- [ ] 实施 T013（敏感信息脱敏）— 防止信息泄露
- [ ] 实施 T003 扩展（三级权限体系）— 防止越权查询

### 6.2 优先优化（第 2 周）

- [ ] 实施 T011（欢迎语联动）— 提升用户体验
- [ ] 实施 T014（审核结果推送）— 提升满意度
- [ ] 实施 T015（智能转接）— 提升问题解决率

### 6.3 持续完善（第 3-6 周）

- [ ] 实施 T001-T010（原整改计划任务）
- [ ] 建立自动化测试体系
- [ ] 引入数据库存储

---

_综合分析报告版本：v1.0_  
_编制时间：2026-04-28 15:50_  
_状态：待审批_
