生鲜加工车间的工单怎么派?我把「经验派工」拆成了一套能落地的规则

0 评论 553 浏览 1 收藏 13 分钟

生鲜加工排产中,最头疼的不是BOM或补货,而是工单派给谁。本文从凌晨4点的加工台场景出发,拆解了一套从技能筛选、时间窗口到策略排序的派工规则,用日志回溯替代“凭经验”的分配方式,为产品经理提供一套可落地的资源分配框架。

最近在做生鲜供应链里的加工排产,最难缠的不是 BOM,也不是补货,是工单派谁干。听起来很土。主管站车间门口,掐着手指头:这筐生菜给老王师傅,西兰花给小李师傅,土豆……哎刘师傅今天请假了,那谁顶?以前全靠人脑。人在还行,人一请假、一插急单、一设备故障,班表就散。业务方吐槽最多的一句话是:

「这个单凭啥分给他?怎么说不出个一二三?」

于是我硬着头皮,把派工这件事从「凭经验」拆成一套能写进系统、能打日志、出了问题能回溯的规则。下面用一次脱敏后的早班排产,把全过程过一遍。不谈大而全的 APS,就讲车间里真正在用的那一层:物料工单派发。

先说场景:不是冷冰冰的WMS,是凌晨 4 点的加工台

我们这边是城市仓生鲜加工:毛菜进仓 → 去根去叶清洗切分 → 净菜/净果/净肉出库。

每天凌晨智能补货跑一版需求,系统吐出「净需求」。净需求大于 0 的 SKU,就是今天要开的工单。大约就这些:以下的都是脱敏后的数据与真实业务无关,都是我基于业务心态杜撰。

优先级怎么划的?很糙,但管用:单量≥80kg 算 P0,必须排上;40~80kg 算 P1;40kg 以下算 P2,排不上就延期到次日,别硬塞。人少的时候别搞太复杂的权重模型。先保证大事不被小事挤掉,比算法精不精重要。

第 0 步:人没到岗,就别放进池子里

工人池一共 5 个人:王师傅师傅蔬菜主技能干了 8 年,效率系数 1.2;李师傅师傅蔬菜主、水果副,5 年,效率 1.0;张师傅师傅水果主、蔬菜副,3 年,效率 0.85;赵师傅肉禽主、水果副,6 年,效率 1.1;刘师傅蔬菜 4 年——今天休假。

第一件事:刘师傅直接踢出可用池。

别小看这一步。很多人喜欢「后面每一步都判断一下 status」。结果呢?每个过滤函数里都塞一段请假判断,改一处漏一处。我们做法很土:进池前清一次,后面全当人在岗。省心,也少 bug。

第 1 步:工单先排队,不是谁先下单谁先干

排完人,排单:P0 在前,P1 其次,P2 垫底。同一档里,量大的往前放。生菜 122kg 比西兰花 80kg 先;土豆 65kg 比胡萝卜 60kg 先。

为啥?大单更难塞。一旦你把小单先塞满几个人的工时,大单往往「谁都剩不下那几小时」,最后只能加班或者拖到明天——而大单恰恰是最不该拖的。

所以顺序变成:WO-001 生菜、WO-002 西兰花、WO-004 土豆、WO-003 胡萝卜、WO-005 苹果、WO-006 橙子、WO-007 鸡胸。

一句人话:重要的先占产能,不重要的最后填缝。

第 2 步:每个工单都过同一套「筛子」

下面以 WO-001 生菜 122kg 为例。每个工单固定走五关。

① 技能筛选

只会肉禽/水果、不会蔬菜的,直接出局。会蔬菜的留下王师傅、李师傅、张师傅,赵出局。张师傅师傅主技能是水果,蔬菜是副技能。副技能能不能上?能。但评分时会排在主技能后面。

② 满负荷剔除

工时满 8h,或工单数顶到 10 单,不再接新活。早班刚开始,三人都是 工作0小时,可以继续排班。

③ 时间窗口

把「这单实际要多久」和「他还剩多久」比一比:

  1. 王师傅师傅效率 1.2,实际约 5.8h,剩 8h,时间充足;
  2. 李师傅师傅效率 1.0,约 6.9h,时间足够;
  3. 张师傅效率 0.85,约 8.2h,8小时工作超时了!

因此张师傅师傅这一关就下去了。不是技能不行,是效率偏低,单大,超时了—干不完。

④ 策略排序

策略我们配了几种,默认负载均衡:先看已接单数少的,再看已用工时少的。第一单大家都是 0,分不出高下,再靠主技能优先破平:王师傅是蔬菜主技能,选王师傅。

如果策略改成「成本最优」,会偏向效率高的人;「工龄优先」则往老师傅身上堆——新手带教阶段可以临时切。

⑤ 锁定 + 备选

WO-001 分给王师傅师傅。王师傅变成 1 单,已用约 5.8h,剩余约 2.2h。备选记李师傅师傅。

备选是干嘛的?早会排完,9 点王师傅师傅发烧回家了。有备选,系统能自动切到李师傅;没备选,主管又要在微信群里喊「谁能顶一单生菜」。备选不是锦上添花,是请假场景的保险丝。

日志必须丑一点、细一点

每一步决策,系统同步打日志。大概长这样:

[04:12:03] 分配 WO-001 净菜生菜 122kg 预估6.9h P0

[04:12:03] 技能命中:王师傅(蔬菜) 李师傅(蔬菜/水果) 张师傅(水果/蔬菜)

[04:12:03] 时间窗:王师傅够5.8h / 李师傅够6.9h / 张师傅8.2h超限剔除

[04:12:03] ✓ → 王师傅师傅(主技能,负载均衡破平)

[04:12:03] 备选:李师傅师傅

车间出问题,主管第一句永远是:「凭啥给他?」你要是只能回一句「算法分的」,打回去都嫌轻。日志在,就能把技能、负荷、时间、策略一条条翻出来。产品上线后,可解释性往往比「再准 3 个点」更值钱。尤其在人不信机器的头三个月。

继续往下:状态是活的,不是一次性快照

第二单西兰花 80kg,标准工时大约 4.3 小时。技能还是王师傅、李师傅、张师傅。但王师傅师傅只剩 2 个多小时了——时间窗直接把他踢掉。李师傅、张师傅都够。负载均衡加上蔬菜主技能,给李师傅师傅。

这里有个很容易漏的点:工人状态要在每单分配后立刻回写。下一单必须读最新剩余工时。要是一口气按「初始 8 小时」给所有单找人,会出现「账面都能干、加总一定爆」的假繁荣。我们第一版就干过这种蠢事。

跑完单大概长什么样

按修过单位之后的工时,一轮下来大致是:王师傅接生菜(大单啃完,早班基本饱和);李师傅接西兰花;张师傅接土豆和胡萝卜(副技能顶上,工时会顶得很满,甚至擦线);赵师傅接苹果、橙子、鸡胸(水果副技能加肉禽主技能混着干)。

急单来了怎么办?规则不能装死

业务最爱在排完之后插一脚。比如 11 点突然来一单:切块菠萝 50kg,紧急,今天下午车就要。水果技能能接的人:张师傅(主)、赵(副)、李师傅(副)。假设张师傅已经顶满,李师傅只剩 2h,赵剩 4h,而这单实际要 6h 左右——时间窗全灭。

这时候不能硬失败完事。我们有一层降级:在「技能合格但超时」的人里,选剩余时间最多的;标红需加班 N 小时;进异常池,推给主管或采购经理审批;通过才下发工人端,不过就改延期或外协。急单默认插队到 P0 最前,但尽量只动冲突单,别把全车间班表推倒重来。工人受不了「一上午改三遍任务单」。

这套东西的本质,其实就三句话

说完细节,收一收。整套物料工单派发,骨干就三句。

  1. 单先按重要性排队。排不上就延期次要的,别让大单、急单垫底。
  2. 人先按可用性筛掉。休假、技能不对、单满、工时不够,一层层漏。
  3. 剩下的人里按策略挑一个,并记下备选。负载均衡、技能优先、工龄优先、成本最优,都是打分方式的不同,框架不变。

架构上我们后来又叠了两层:凌晨离线可以把全局排得更优,人多单多以后再上;白天在线就是本文这套规则引擎,秒级响应插单和请假;异常人工那层,机器搞不定的别死扛,丢给主管。MVP 阶段,先把白天这层做扎实,比一上来上个数学规划求解器务实得多。

上线前后我踩过的几脚坑

  1. 工时单位。前面说了,10 倍误差能让整套策略报废。字段命名要残忍一点,别留歧义。
  2. 副技能滥用。张师傅师傅蔬菜也能干,不等于应该天天干蔬菜。副技能是「主线满了再顶」,不是「和主技能一个待遇」。质量波动会在出成率上惩罚你。
  3. 没有备选。请假是常态,不是异常。备选工人字段建议第一期就加上。
  4. 策略配了却没法解释。业务不信黑盒。日志、分配原因、异常建议文案,比你在评审会上画的架构图有用。

写在最后

生鲜加工的排产,看上去是供应链题,落地上更像带约束的资源分配。别一上来就 AI、就智能。很多时候:工时算准了,规则写清楚了,日志打明白了,问题已经解决一大半。

真要上模型,也建议等这套规则跑稳两三个月,有了真实工时偏差数据,再去校正效率系数、预测瓶颈。顺序反了,模型只会把错误学得很稳。

本文由 @Totoro畅 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!