角色会话场景
老板、销售经理、销售员工三种角色与清海的钉钉组织架构对话场景设计。 会话场景概览见 钉钉组织架构识别,能力定义见 Skill 清单。
组织结构与信息权限
团队结构(多燕瘦)
老板 / 销售总监
└── 销售部
├── 销售经理(1-3 人,管辖多个小组)
│ ├── 销售一组(组长 + 5-10 人)
│ ├── 销售二组(组长 + 5-10 人)
│ └── 大客户组(组长 + 5-10 人)
└── 运营支持部- 销售经理在钉钉中对应
leader_in_dept=true或配置为 Boss 角色 - 清海通过
manager_userid字段还原上下级关系树,无需额外配置 - 员工知道自己在和 AI 说话
信息权限矩阵
| 维度 | 老板 / 总监 | 销售经理 | 销售员工 |
|---|---|---|---|
| 本人基本信息 | ✅ | ✅ | ✅ |
| 公司架构(部门列表/层级) | ✅ | ✅ | ✅ |
| 本组成员个人信息 | ✅ | ✅ | ❌ |
| 其他组成员个人信息 | ✅ | ❌ | ❌ |
| 其他组公开信息(人数/负责人) | ✅ | ✅ | ✅ |
| 全公司人员明细 | ✅ | ❌ | ❌ |
| 人员变动(入职/离职/调岗) | ✅ 全部 | ✅ 本组 | ❌ |
越权查询引导规则:
- 经理查其他组个人信息 → 引导找对方经理
- 员工查他人信息 → 引导找销售经理
- 不升级到老板层面
老板 / 销售总监会话场景
核心诉求:全局掌控 + 人事动态。公司多少人、谁来了谁走了、各组什么情况。 互动模式:随时查询,追问细节。 信息范围:无隔离,全公司所有人、所有部门。
架构总览类
| 用户问法 | 清海应答 | 备注 |
|---|---|---|
| "公司现在多少销售" | 销售部总人数 + 按组分布 | 销售部维度 |
| "各组人数怎么样" | 按组列出人数 + 负责人 | 组间对比 |
| "销售部架构是什么样的" | 销售部下的组织树(各组 + 人数 + 组长) | 部门下钻 |
| "公司现在一共多少人" | 全公司总人数 + 按部门分布 | 全公司维度 |
人员追踪类
| 用户问法 | 清海应答 | 备注 |
|---|---|---|
| "最近有新同事加入吗" | 近期入职人员列表(姓名 + 部门 + 入职时间) | 钉钉 user_add_org 事件实时感知 |
| "最近有人离职吗" | 近期离职人员列表 | 钉钉 user_leave_org 事件实时感知 |
| "张三是哪个组的" | 张三的部门 + 职位 + 直属上级 | 个人查询 |
| "李四管哪些人" | 李四的直属下属列表 | 管理幅度 |
| "一组谁负责" | 一组负责人 + 成员概况 | 部门负责人 |
组织管理类
| 用户问法 | 清海应答 | 备注 |
|---|---|---|
| "有没有通讯录信息不全的" | 列出缺失职位/上级/部门的人员 | 数据质量 |
| "一组和二组各几个人" | 两组人数对比 | 跨组对比 |
| "帮我把王五的钉钉绑一下" | 确认后绑定(老板可代绑任何人) | 身份管理 |
设计原则
- 无信息隔离:老板看全公司所有人、所有部门
- 入离职实时感知:钉钉事件订阅,变动即时通知,无需等轮询
- 上下级自动识别:
manager_userid字段直接还原汇报关系 - 数据质量可见:老板能看到通讯录信息完整度
销售经理会话场景
核心身份:管人的中间层,日常关注组内成员、协调跨组事务。 互动模式:主动查询 + 组内管理。 信息范围:本组成员个人信息 + 全公司公开信息。
组内管理类
| 经理问 | 清海答 | 备注 |
|---|---|---|
| "我们组有几个人" | 本组成员列表(姓名 + 职位) | 自动识别"我们组",通过 manager_userid 反推 |
| "我们组最近有新人吗" | 本组近期入职人员 | 组内变动(事件订阅实时感知) |
| "小李什么职位" | 该组员的职位 | 只能查本组的人 |
| "我管哪些人" | 直属下属列表 | manager_userid = 当前用户 userid 反查 |
组织查询类(公开信息)
| 经理问 | 清海答 | 备注 |
|---|---|---|
| "公司有哪些部门" | 全部部门列表(名称 + 人数) | 公开信息 |
| "大客户组几个人" | 大客户组人数 + 负责人 | 其他组公开信息 |
| "运营部负责人是谁" | 运营部负责人姓名 | 公开信息 |
身份管理类
| 经理问 | 清海答 | 备注 |
|---|---|---|
| "帮张三绑一下平台账号" | 确认后绑定(经理可代绑本组) | 组内身份管理 |
| "张三绑了吗" | 查询该组员的平台绑定状态 | 组内查询 |
跨组查询边界
| 经理问 | 清海答 |
|---|---|
| "二组有谁" | 返回二组人数 + 负责人(公开信息),不返回个人明细 |
| "二组的王锦什么职位" | "王锦的个人信息可以找二组经理了解" |
| "公司架构是什么样的" | 返回完整部门树(公开信息) |
设计原则
- 信息范围 = 本组成员:只能查本组个人信息
- "我们组"通过
manager_userid自动解析:无需手动指定组名 - 公开信息不隔离:可看所有部门的公开数据(名称/人数/负责人)
- 可代绑本组:帮组员完成平台身份初始化
销售员工会话场景
核心定位:专心跑业务,需要时快速查到组织信息。 互动模式:主动查询为主,范围限于自己和公开信息。 信息范围:自己的信息 + 公司公开信息。
个人信息类
| 员工问 | 清海答 | 备注 |
|---|---|---|
| "我是哪个组的" | 你所在的组 + 职位 | 自己的信息 |
| "我的上级是谁" | 直属上级(通过 manager_userid 关联) | 自己的关系 |
| "我什么时候入职的" | 入职时间(hired_date 字段) | 自己的信息 |
组织查询类(公开信息)
| 员工问 | 清海答 | 备注 |
|---|---|---|
| "公司有哪些部门" | 全部部门列表 | 公开信息 |
| "一组几个人" | 一组人数 + 负责人 | 公开信息 |
| "运营部负责人是谁" | 运营部负责人姓名 | 公开信息 |
身份绑定类
| 员工问 | 清海答 | 备注 |
|---|---|---|
| "帮我绑定平台账号" | 确认后绑定 | 只能绑自己的 |
| "大家叫我阿明" | "好的,已记住你的别名阿明" | 别名学习 |
越权查询拒绝
| 员工问 | 清海回应 |
|---|---|
| "王锦什么职位" | "同事的个人信息可以找销售经理了解" |
| "一组有谁" | 返回一组人数 + 负责人(公开信息),不返回个人明细 |
| "最近有人离职吗" | "人事变动信息可以找销售经理了解" |
设计原则
- 信息范围 = 自己 + 公开:能查自己的一切 + 公司公开架构
- 语气友善不生硬:越权时礼貌引导,不说"你没有权限"
- 别名自然学习:员工说"叫我阿明",清海自然记住
- 鼓励绑定:未绑定平台时适时引导
三角色信息权限流转
关键设计决策汇总
| 决策 | 结论 | 理由 |
|---|---|---|
| 用户主键 | userid(senderStaffId) | 企业内唯一稳定,Bot 消息直接携带 |
| 上下级识别 | manager_userid 字段直接关联 | 无需额外 API,同步时一次性获取 |
| 人员变动感知 | 事件订阅为主 + 全量同步兜底 | 钉钉事件实时,比飞书轮询更及时 |
| 公开信息定义 | 部门名称、人数、层级、负责人姓名 | 与飞书版一致,组织架构本身公开 |
| 越权引导 | 找经理,不升级老板 | 减少老板负担,经理间平级协调 |
| 代绑权限 | 老板代绑任何人,经理代绑本组 | 方便管理者帮新人完成初始化 |
| 钉钉为权威源 | 部门/职位/上级以钉钉通讯录为准 | 避免 AI 推断与行政数据矛盾 |
| 离职处理 | user_leave_org 事件触发即时静默 | 实时感知,不等轮询 |