Skip to content

feat: 群内任务公布终态后,同步更新之前的任务卡 #7100

Open

Description

@zcinta0514

需求

群聊里的独立任务结束,并已在群内发布终态卡后,希望之前的任务卡同步显示这个已公开的终态,避免同一任务在时间线上同时留下“正在做”和“已完成”两个矛盾状态。只利用当前成员有权读取的群消息,不读取其他成员电脑上的任务、工具记录或私有会话。

已有行为

已合并 #6092 规定:自己伙伴的任务读取实时状态,别人伙伴的任务显示消息携带的状态快照;任务启动、等待和结束分别投递消息。因此,别人查看旧启动卡时,可以一直看到启动时状态,即使终态和结果已经公开。本单是对快照设计的改进需求,不把缺少他人本地实时订阅视为故障。

最小范围

  1. 只关联同一群、同一伙伴发布的同一任务;读到可信任务卡的完成、失败或停止终态时,旧卡显示该公开终态。
  2. 保留原消息正文、时间和顺序,不改写历史,不重复发送完成消息。
  3. 不从普通文字推测终态,不把伙伴回复结束等同于独立任务结束。
  4. 没读到终态时保留快照语义;不凭时间判断完成,不读取他人本地任务或增加操作权限。
  5. 同名任务不能串状态,历史分页和重复推送不能导致状态回退。

验收

A 的伙伴启动任务,B 看到启动卡;终态卡到达 B 的可读消息后,旧卡显示相同终态。重进或重读相关历史后仍一致;不可读或不同任务的终态不被借用。Desktop、Mobile 使用相同公开信息,结果正文和附件正常查看。

关联与边界

#6642 是群聊进展同步的上位需求,本单仅处理已公开终态与旧卡的关联。#7084 / #7093 处理分工侧栏;#7081 / #7085 处理私聊过程和协调回报,均不覆盖本项。不包含结果投递重试、分工状态、页面刷新恢复或完整实时进度订阅。此项涉及现有产品取舍,先提需求评审。

Activity

  1. dash-s-cindy commented on Oct 25, 2026

    @dash-s-cindy

    判断

    群聊中独立任务公布终态后,避免其他成员时间线上旧任务卡长期停留在“正在做”的矛盾状态,有助于提升多人协作时的状态一致性。提报方案严格限定在当前成员已有权限的群消息内,基于结构化标识做纯前端展示关联,不越权访问发起方本地会话,也不改写历史存储,技术路径清晰安全。

    进一步检查发现,已合并的 #6092 及产品规范(docs/product-rules/bot-group-chat.md §10)当前明文规定:“主人的桌面与手机看到的是实时任务卡……其他成员看到卡片发出时的标题与状态”。这属于既有的不可变时间线快照取舍。因此,提报者提出“先提需求评审”的判断非常准确,首要工作是完成产品层面的体验取舍确认。核查基线为 main 4ad25a97fb,结论基于静态源码与规范分析,未执行实机多用户网络联调。

    行动

    1. 产品与群聊维护者完成需求评审(首要步骤):

      • 负责角色:产品负责人与群聊维护者(建议由 #6092 原作者 @zqchris 接续评估)。
      • 具体动作:针对终态展示形式与时间线语义达成共识,重点确认:
        1. 终态到达后,旧启动卡是直接将状态文案变更为终态(如“已完成”),还是呈现为“已结束 / 结果见后文”等兼顾启动历史与终态的提示;
        2. 视窗边界:历史分页未加载到终态卡,或单条引用预览未包含终态时,保留快照语义是否符合预期;
        3. 任务多轮续接:当主人续接任务派发新一轮启动卡时,确认状态覆盖仅受后续终态驱动,避免上一轮终态反向覆盖新一轮。
      • 交付与完成条件:在 Issue 评论中记录评审结论,明确是否修订 docs/product-rules/bot-group-chat.md §10 对应条款。
    2. 仅当评审采纳后,前端工程师在共享包实现展示投影:

      • 负责角色:前端工程师。
      • 具体动作:
        • 在 packages/maker-shared/src/botGroupPresentation.ts 中实现群任务卡状态派生 helper,以已加载消息中的 message.task.meta.delegationId 和 fromBotId 聚合终态索引;
        • 严格限定仅识别明确终态(completed / failed / cancelled / timed-out),向前派生覆盖旧卡,严格禁止按任务标题文本猜测;
        • Desktop(BotGroupTimelineItem.tsx)与 Mobile(chatServerClient.ts / BotGroupChatScreen.tsx)接入此共享逻辑,原始消息内容、顺序与数据库保持只读与不变;
        • 在 botGroupTask.test.ts 中补充覆盖分页穿透、同名不同任务隔离及多轮续跑的时序单元测试。
      • 完成条件:单元测试通过,两端在公开终态到达后旧卡同步展现终态,不可读消息或独立任务状态互不干扰。

    关键依据与边界核对

    1. 元数据完备性:packages/maker-shared/src/botGroupTask.ts 定义的 BotGroupTaskCardView 中包含强类型的 BotCollaborationMeta,启动卡、等待卡与终态卡均携带一致的 delegationId 与 fromBotId。前端展示关联具备完备的确定性数据基础,无需服务端协议扩充。
    2. 安全与隐私底线:所有推导均限制在当前用户所在群已接收的 cindy.task 卡片内,不向任务执行端发起 RPC 或本地数据库订阅,符合多端安全边界。

    相关记录

    • #6092:群任务驻留在群与任务卡快照设计的引入 PR(确立了其他成员看快照的既有规则)。
    • #6642:伙伴协作与群聊进展同步的上位诉求。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions