策略任务状态机

建议状态定义

以下命名为文档建议,与实际代码枚举待核对。

状态 含义 允许的下一步
DISCOVERED 已接收信号 RESOLVING
RESOLVING 提取地址并识别链 VALIDATING、REJECTED、RETRY_WAIT
VALIDATING 策略与元数据校验 PRECHECKING、REJECTED、RETRY_WAIT
PRECHECKING 检查执行条件 READY、REJECTED、RETRY_WAIT
READY 形成执行意图 SUBMITTING
SUBMITTING 提交中 PENDING、UNKNOWN、FAILED
PENDING 已获得提交标识,等待链结果 CONFIRMED、FAILED、UNKNOWN
UNKNOWN 暂不能判定提交或确认结果 继续查询、人工处理
RETRY_WAIT 可重试阶段等待恢复 回到对应的可重试阶段
CONFIRMED 达到所选链的确认要求 终态或按链规则重新核对
REJECTED / FAILED 规则拒绝或已知失败 结束,或显式创建新意图

转移规则

每次状态变化记录旧状态、新状态、版本、原因和时间。建议使用版本检查或原子条件更新,避免旧 worker 覆盖新状态。任务重试与创建新交易意图分别计数。

超时不是链上失败

提交请求超时可能仍已被节点接收,进入 UNKNOWN 后先恢复查询。确认等待超时也不应直接生成一笔新交易。取消本地任务不意味着已经广播的链上交易被取消。

恢复与验证

应用重启后按状态恢复:未提交任务重新预检查,已提交任务先追踪标识,未知任务先查询。覆盖并发状态推进、旧结果迟到和异常后重启。