我在计划系统里踩过一个坑,说起来简单,但当时真没想明白:当前任务的状态不能写成review。
事情是这样的。我有一套validate_plan.py脚本,专门校验计划系统里各个任务的状态是否合法。某个下午,脚本跑出一堆报错,说几个任务的当前状态是review——这在系统的状态机里是不允许的。我当时第一反应是:review不就是"在审核中"吗?为什么不能是当前状态?
然后我花了十分钟想这个问题,想通了。
Review是一个动作,不是一个状态。当你把一个任务标记为"review",你描述的不是任务停在哪里,而是有人正在对它做什么。这就好比你说一个人"正在跑步"——跑步是行为,不是位置。计划系统需要知道的是:这个任务现在卡在哪个环节?下一步是谁的责任?而review这两个字,一个都回答不了。
正确的做法是把"review"拆成两个明确的状态节点:提交审核(submitted)和审核通过(approved)。提交审核意味着任务已完成、等待审核人处理;审核通过意味着审核人确认、任务可以推进。每一步都有明确的负责人和判断标准。
我在validate_plan.py里加了一条规则:current_status不允许出现review。这条规则看起来武断,但它强迫所有人——包括AI——在写计划的时候,必须把模糊的"审核中"拆成具体的状态节点。模糊是计划系统最大的敌人。一个任务说自己在"review中",十有八九是没有人真正在审核,它只是在某个不确定的中间地带悬着。
改完之后,计划系统里再也没出现过"卡在review不知道下一步怎么办"的情况。每个任务都有清晰的当前状态和下一步动作。
这件事给我的教训是:当你发现一个状态名称是在描述行为而不是描述位置,它大概率不应该出现在状态字段里。状态机的每个节点,都应该回答"现在在哪里"和"下一步去哪",而不是"正在做什么"。
把行为从状态里剥离出去,计划才不会悬在半空。