feat: 群内任务公布终态后,同步更新之前的任务卡 #7100
Copy link
Copy link
Open
Description
需求
群聊里的独立任务结束,并已在群内发布终态卡后,希望之前的任务卡同步显示这个已公开的终态,避免同一任务在时间线上同时留下“正在做”和“已完成”两个矛盾状态。只利用当前成员有权读取的群消息,不读取其他成员电脑上的任务、工具记录或私有会话。
已有行为
已合并 #6092 规定:自己伙伴的任务读取实时状态,别人伙伴的任务显示消息携带的状态快照;任务启动、等待和结束分别投递消息。因此,别人查看旧启动卡时,可以一直看到启动时状态,即使终态和结果已经公开。本单是对快照设计的改进需求,不把缺少他人本地实时订阅视为故障。
最小范围
- 只关联同一群、同一伙伴发布的同一任务;读到可信任务卡的完成、失败或停止终态时,旧卡显示该公开终态。
- 保留原消息正文、时间和顺序,不改写历史,不重复发送完成消息。
- 不从普通文字推测终态,不把伙伴回复结束等同于独立任务结束。
- 没读到终态时保留快照语义;不凭时间判断完成,不读取他人本地任务或增加操作权限。
- 同名任务不能串状态,历史分页和重复推送不能导致状态回退。
验收
A 的伙伴启动任务,B 看到启动卡;终态卡到达 B 的可读消息后,旧卡显示相同终态。重进或重读相关历史后仍一致;不可读或不同任务的终态不被借用。Desktop、Mobile 使用相同公开信息,结果正文和附件正常查看。
关联与边界
#6642 是群聊进展同步的上位需求,本单仅处理已公开终态与旧卡的关联。#7084 / #7093 处理分工侧栏;#7081 / #7085 处理私聊过程和协调回报,均不覆盖本项。不包含结果投递重试、分工状态、页面刷新恢复或完整实时进度订阅。此项涉及现有产品取舍,先提需求评审。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
dash-s-cindy commentedon Oct 25, 2026
判断
群聊中独立任务公布终态后,避免其他成员时间线上旧任务卡长期停留在“正在做”的矛盾状态,有助于提升多人协作时的状态一致性。提报方案严格限定在当前成员已有权限的群消息内,基于结构化标识做纯前端展示关联,不越权访问发起方本地会话,也不改写历史存储,技术路径清晰安全。
进一步检查发现,已合并的 #6092 及产品规范(
docs/product-rules/bot-group-chat.md §10)当前明文规定:“主人的桌面与手机看到的是实时任务卡……其他成员看到卡片发出时的标题与状态”。这属于既有的不可变时间线快照取舍。因此,提报者提出“先提需求评审”的判断非常准确,首要工作是完成产品层面的体验取舍确认。核查基线为 main4ad25a97fb,结论基于静态源码与规范分析,未执行实机多用户网络联调。行动
产品与群聊维护者完成需求评审(首要步骤):
docs/product-rules/bot-group-chat.md §10对应条款。仅当评审采纳后,前端工程师在共享包实现展示投影:
packages/maker-shared/src/botGroupPresentation.ts中实现群任务卡状态派生 helper,以已加载消息中的message.task.meta.delegationId和fromBotId聚合终态索引;completed/failed/cancelled/timed-out),向前派生覆盖旧卡,严格禁止按任务标题文本猜测;BotGroupTimelineItem.tsx)与 Mobile(chatServerClient.ts/BotGroupChatScreen.tsx)接入此共享逻辑,原始消息内容、顺序与数据库保持只读与不变;botGroupTask.test.ts中补充覆盖分页穿透、同名不同任务隔离及多轮续跑的时序单元测试。关键依据与边界核对
packages/maker-shared/src/botGroupTask.ts定义的BotGroupTaskCardView中包含强类型的BotCollaborationMeta,启动卡、等待卡与终态卡均携带一致的delegationId与fromBotId。前端展示关联具备完备的确定性数据基础,无需服务端协议扩充。cindy.task卡片内,不向任务执行端发起 RPC 或本地数据库订阅,符合多端安全边界。相关记录