标准答案

  1. 状态接口返回任务 ID、状态、阶段、版本、创建与更新时间、错误类别、结果引用和下一步操作,不直接暴露内部堆栈。
  2. 进度事件带 sequence、event type、阶段和摘要,可重放或从最新版本恢复;进度不确定时使用阶段状态,不伪造百分比。
  3. 最终结果按版本存储并与任务关联,写入完成后再把任务置为 succeeded;部分结果和失败原因也应可查询。

题目解析

状态读取要有租户和所有者权限校验,结果下载使用短期授权。任务 ID 不应成为越权访问凭据。

事件可能重复、乱序或丢失,客户端按 sequence 去重,服务端用状态版本保证旧事件不能覆盖新状态。

结果存储和事件通知之间存在一致性窗口,可用事务 Outbox 或可重试通知保证任务完成后最终可见。

常见误区

  • 用日志文本拼成任务状态接口。
  • 进度百分比由时间估算,实际没有对应阶段。
  • 任务完成先发通知,结果随后异步写入,用户点击时拿不到结果。

作者信息