我们凭什么这样给你排计划
·作者 [email protected]
你只说了一句“10 月 16 日播了上海青”,我们就给出一串带日期的活。这篇讲这些日期是怎么来的:哪部分是按品种天数推出来的骨架,哪部分会被天气和你的实际情况推动,以及哪几条我们绝不自动改。
一、你给一句话,剩下的我们推
骨架 = 先后顺序 + 大概天数;会变的只有日期,先后不动。
- 你给的三样:种什么、哪天种的、种在哪(阳台还是露地)。品种说清楚更好,因为有生育期可算。
- 我们按品种的生育期和作业的先后,把骨架推出来。以秋季上海青为例:播种 → 出苗 → 间苗 → 薄肥 → 采收,25~35 天能上桌。
- “哪天该干什么”不是拍脑袋:先出苗才间苗,先间苗才追肥,这个顺序是硬的。
二、会动的是日期,不是顺序
- 连阴雨、霜冻、你今天去不了地里 —— 我们把这些日子往后挪,但不会把“追肥”挪到“间苗”前面。
- 周期性的事(比如每 7 天浇一次):你做掉一次,我们就排下一次。
- 你说这次跳过,下一次从原计划那天算,不会“从头再来”;你是晚做两天,后面就整体跟着后移两天。
三、有几条我们绝不自动破
- 只看未来 10 天:再远的排了也没意义 —— 天气说不准,你的情况也会变。
- 关键节点只提议:“该采收了”“该越冬了”这种,我们提一句,等你点头,不自动改日期。
- 不知道的必须问:品种生育期不知道、是不是露天不知道,我们就问,不默认填一个值。
- 一份种植一本账:改哪一份必须认得出,认不出就问你。
四、代价
- 品种说不清时,只能按大类估,会粗(“叶菜一般三十天上下”)。想要准,就说清品种。
- 周期任务跟着你实际做的日子走:你晚两天,后面的整体后移两天。这是对的,但看上去像“计划自己会跑”。
- 看板只给近一周。更远的要问我们才给 —— 排得越远,越容易白排。
五、如果你也写代码
- 排期收在一个闭环里:
mode: create | adjust 进,严格 JSON 出,lib/plan-proposal.mjs 校验(窗口 / 条数 / 里程碑 / 去重),写库仍走 flora 动作层 —— planner 不直接写。 - 三条产线 + 一条人工线:快车道、深车道、计划器、人工动作。planner 只吐结构化数据,话术由对话车道说。
- 周期任务两条硬规矩:完成和跳过都要排下一次;跳过的基准取原计划日,完成的取实际完成日。曾经把钳位写在判断之前(
Math.max(1, …) 永远 ≥1),结果每条普通任务完成都复制一条新节点 —— e2e 抓出来的。
← 开发日志