状态可见,权限隔离
所有成员知道群总结在等待谁处理;只有实际执行者看到服务详情和授权入口。
当群总结以实际执行者身份调用 MCP、但该身份尚未授权时,把“静默失败”改成一个可感知、可通知、可完成、可恢复的待办流程。
所有交互都围绕“让正确的人完成正确的授权,同时不打断群聊”。
所有成员知道群总结在等待谁处理;只有实际执行者看到服务详情和授权入口。
同一总结产生的授权需求归入一个待办;同一服务去重,不同服务分别完成 OAuth。
优先恢复原总结任务;链接失效时重新生成。只有恢复失败才提供“重新生成总结”。
切换角色查看信息差异。页面中展示的是产品行为,不暴露底层 session 或 Run。
群聊不中断,授权任务独立推进,完成后回到原总结。
系统以本次实际执行者身份运行总结。
总结暂停,状态变为“等待授权”,不记为失败。
成员只看到责任人;执行者看到服务清单和入口。
合同领域机器人向实际执行者发送单聊卡片。
同服务只授权一次,不同服务分别完成 OAuth。
全部完成后继续原任务,并更新群总结结果。
使用合同领域已经绑定的机器人,不新增统一机器人,不在原钉群公开授权细节。
触发对象为本次实际执行者。卡片只负责导航,不携带 OAuth URL。
同一待办最多补发一次;新增 MCP 子项只更新原待办,不重复发送。
授权完成后撤销未读状态;群里更新为“正在恢复总结”。
用独立状态承载人工操作,避免“等待用户”和“系统失败”混为一谈。
| 状态 | 群内展示 | 责任人操作 | 系统行为 |
|---|---|---|---|
| 生成中 | 群总结正在生成 | 无需操作 | 继续执行,不重复触发 |
| 等待授权 | 展示责任人,不展示服务详情 | 查看服务清单并逐项授权 | 暂停原总结,合并同一服务中断,阻止重复总结 |
| 恢复中 | 授权已完成,正在继续生成 | 无需操作 | 恢复原总结;保持幂等 |
| 已完成 | 展示最新总结 | 可查看结果 | 关闭待办并停止通知 |
| 恢复失败 | 本次总结未能继续 | 可重新生成总结 | 保留上一次成功总结和失败原因 |
授权入口不是普通链接,必须同时控制信息可见性、身份和恢复对象。
| 场景 | 产品处理 |
|---|---|
| 普通成员进入群总结 | 仅展示“等待实际执行者处理”;接口不返回服务详情和 authorize_url。 |
| 授权链接失效 | 用户再次点击时重新生成链接,不展示“任务过期”。 |
| 同一服务并发触发多个工具 | 按稳定服务标识去重,授权一次后恢复所有同源调用;不能只用展示名称去重。 |
| 多个不同 MCP 服务 | 归入同一待办,分别授权;已发现的服务集中展示,后续发现的服务追加到原待办。 |
| 授权回调未返回原页面 | 页面重新获得焦点或用户返回时主动检查授权状态,并提供“检查授权状态”兜底。 |
| 原总结恢复失败 | 展示明确失败原因和“重新生成总结”,不静默重试,不清除上一次成功总结。 |
把授权闭环一次做完整,不把平台级通知中心或其它人工审批混入本期。
满足以下条件,才算真正解决“总结一直失败且没人知道去哪授权”。