文章目录
文章目录
本文目录
本文目录

文档保存请求超时了,先查结果还是再发一次?

石墨办公 + AI

文档保存请求超时后,应先判断结果是否已在服务端发生。

文档保存请求超时后,应先判断结果是否已在服务端发生。超时描述的是客户端没有按时得到响应,不等于服务端没有执行。此时直接重发创建或追加操作,可能把一次任务变成两次修改。

增加一个“结果未知”状态

常见的两态设计只有成功和失败,于是超时被归入失败,自动重试随即开始。更准确的状态应区分:确定未提交、已提交但未确认、已确认成功、已确认失败。只有明确知道操作没有产生副作用,或接口支持可靠幂等重试,才进入相应恢复路径。

以向周报追加一条结论为例,请求发送后断网。服务端可能已经保存,客户端却还停在等待。若再次追加,正文就出现两段相同结论。恢复时可以用操作标识查询结果;若接口没有操作查询能力,则读取目标位置,核对预期内容与相关版本证据。

按证据选择下一步

观察到的情况下一步
服务端明确拒绝,未执行修正原因后重新提交
原操作有稳定结果查询入口查询原操作,不创建新任务
接口支持同键幂等重试按该接口契约沿用原键
无法区分已写入和未写入保留未知,进一步对账

Stripe 的幂等请求规则展示了同键重试的处理方式,但不同产品对错误结果、保留时长和参数匹配的定义并不相同。接入文档 API 时应读其真实文档,不能看到某种 HTTP 方法就假定全部业务动作可安全重试。

对账需要稳定标识

写入之前记录目标对象、操作键、请求摘要和预期结果。写入之后保存返回的对象 ID、版本或任务 ID。若日志只记一句“正在修改报告”,重启后的执行者无法知道该查哪个对象,也很难区分上次操作和用户后来手动增加的相同文字。

对账不应采用无限轮询。设置合理的查询间隔和截止条件,遵守服务端建议。超过可确认窗口时,报告具体对象与最后已知状态,让接手者继续核查。这里的截止条件用于控制任务,不是把未知自动改成失败。

把响应丢失加入验收样本

测试时应在服务端完成写入之后故意中断返回链路,再恢复客户端。检查系统是否读取原结果、是否重复创建文件、是否重复追加正文。只测试“请求发不出去”不足以覆盖最危险的故障窗口。

这类恢复流程可以用在文档、表格和导出任务中,但验证方法必须适应各自接口。最终给用户的状态应清楚区分“已保存且读回确认”和“请求已发出、结果仍待核对”,不能为了显得顺利,把缺少证据的操作说成完成。

不确定结果对账与确认状态
根据本文方法绘制的原创流程示意;不是产品界面或实测结果。

在企业文档中验证

如果要把本文方法用于企业文档,可预约演示,结合实际资料核对协作、权限与集成方式。

需要在自己的环境中验证时,可先了解私有化部署方案,再确定试用范围与验收要求。