Skip to content

导航后任务丢失 ​

整页导航会销毁旧 document 的运行时、注册表和元素引用。SPA 路由通常只替换组件,因此两类问题不能按同一方法修。

先判断导航类型 ​

类型现象关键点
SPA 路由页面未刷新,但工具或区域消失组件卸载、路由守卫、keep-alive
MPA 整页导航对话历史与待处理请求消失连续性检查点
iframe 导航父页面仍存在,子运行时重建显式共享与作用域
多标签页任务在另一标签页继续owner 租约与显式接管

SPA ​

  1. 检查动作是否声明在已卸载组件中。
  2. 检查路由切换后是否重新 describe。
  3. 检查 keep-alive 是否留下旧注册。
  4. 检查每个路由是否使用唯一动作 id 或 namespace。
  5. 检查成功判据是否在导航前等待、导航后失效。

导航后应重新获取页面身份和能力。不要把旧路由的动作带进新路由。

MPA ​

MPA 不保留 DOM 引用,也不能恢复“已批准”状态。连续性检查点只应包含任务目标、摘要、近期事件和页面身份,不包含 Cookie、token、审批或敏感原文。

恢复策略:

  • ask:用户看到“继续上次任务”入口;
  • auto:新页面就绪后发送受控继续消息;
  • off:只恢复历史,不自动启动。

无论哪种策略,当前页面都必须重新声明能力。上一页存在的动作不会自动获得权限。

中断的执行 ​

如果工具调用期间发生整页导航,结果可能未知。历史应出现合成结果,明确“页面在动作执行中导航,业务结果未确认”。随后先读取业务状态,不要猜测成功并重试写入。

跨标签页 ​

跨标签页需要租约:同一时刻只有一个 owner 可以执行。跟随者可以查看,但不能静默接管。接管或分叉应由用户明确触发。存储中的共享字符串不足以构成所有权。

验收标准 ​

  1. 导航后旧能力不可调用。
  2. 新页面重新描述后能力正确出现。
  3. 检查点不含凭证、审批或完整敏感值。
  4. 恢复不会重复提交中断的写入。
  5. owner 丢失、租约过期和任务完成的界面状态可区分。
  6. 多标签页不会同时写入同一任务。

相关 ​

跨页面与标签页的任务连续性、MPA 与任务连续性、连续性与投影参考。