2. 需求背景与目标 优化需求
2.1 需求背景
当前运输计划在创建和修改环节存在以下校验限制,影响了货主的业务灵活性:
- 创建运输计划时,已计划车数不得为0:货主创建运输计划时,系统强制要求已计划车数必须大于0,不允许车数为0的计划创建。但实际业务中,货主可能需要先发布货源信息(线路、货物等先行展示给司机),运力计划尚未确定,等确认后再调整已计划车数。
- 修改运输计划时,剩余可抢单车数不得为0:货主修改运输计划的已计划车数时,系统校验剩余可抢单车数(已计划 − 已抢单)不得为0,即不允许将已计划车数修改为与已抢单车数相等的值。但货主可能有合理的业务需求需要将已计划调整为等于已抢单数(如已抢单5车,将已计划改为5车,表示不再开放新的抢单名额)。
2.2 需求目标
| 优化点 | 场景 | 原规则 | 新规则 | 涉及文件 |
| 优化1 | 创建运输计划 | 已计划=0 → 拦截 | 已计划=0 → 允许创建 | ship.html |
| 优化2 | 修改运输计划 | 剩余可抢单=0 → 拦截 | 剩余可抢单=0 → 允许保存 | ship.html + order-detail.html |
核心业务逻辑:
- 优化1:已计划=0时,司机端货源大厅不可见;货主后续将已计划调整为>0时,司机才能抢单
- 优化2:剩余可抢单=0(已计划=已抢单)时,司机端货源大厅不可见,同时再来一单、扫码抢单等均不可抢单;但已抢单的运单正常执行
📌 运输计划与订单状态的关系(重要):
运输计划中的数值变化(无论已计划车数是否为0、剩余可抢单车数是否为0)只是运输计划层面的数值,不影响订单整体状态。
真正影响订单状态的是订单车数(总车数)和订单总吨数。
因此:
- 货主发单时已计划=0 → 不影响订单状态,货主可以正常发货,发货成功后正常进入后续流程
- 货主修改计划后剩余可抢单=0 → 不改变订单状态,仅影响司机端可见性和抢单能力
2.3 需求范围
- 包含:创建运输计划时的已计划车数校验规则优化、修改运输计划时的剩余可抢单车数校验规则优化
- 适用订单类型:平台单、定向单(均适用)
- 不包含:运输计划的审批流程、抢单流程等已有功能(本次不改动)
⚠️ 跨业务线协同(重要):
除货主端外,成丰货运中台、成丰助手(内部CRM)也有修改运输计划的入口。本次优化涉及的校验规则变更(优化1、优化2),需要其他业务线产品配合,确保中台和CRM侧的修改入口同步适配新的校验逻辑,各入口行为保持一致。
(来源:用户2026-07-06补充确认)
3. 用户角色与使用场景 必填
3.1 用户角色
| 角色 | 说明 | 涉及优化 | 使用端 |
| 货主 | 创建和修改运输计划,设定订单车数和已计划车数 | 优化1 + 优化2 | PC / APP |
| 司机 | 查看运输计划并抢单(报号) | 间接影响:已计划=0时货源大厅不可见 | APP / 小程序 |
| 平台 | 审核司机报号,审核通过后生成运单 | 间接影响:优化后报号占位机制不变 | 系统运营中台 |
3.2 核心使用场景
场景1(创建运输计划,已计划车数为0):
货主发布一条从长沙到广州的货源,订单车数设为50车(总需求),但目前运力计划尚未确定,先填已计划车数为0,点击创建。系统允许创建,货源订单发布成功。司机端货源大厅不可见该货源信息。待货主确认运力后,在订单详情页将已计划车数调整为20车,剩余可抢单变为20车,司机端货源大厅即可看到该货源并可抢单。
场景2(修改运输计划,剩余可抢单为0):
货主有一个已计划20车的运输计划,已抢单10车,剩余可抢单10车。因业务变化,货主将已计划从20车修改为10车,此时剩余可抢单=已计划−已抢单=10−10=0。系统允许保存,不再拦截。修改后,司机端货源大厅不可见该货源,同时再来一单、扫码抢单等均不可抢单,但已抢单的10车运单正常执行。
5. 现有业务规则 现有规则
说明:以下9条为运输计划功能的现有业务规则,经当前负责测试的同学和前任产品经理确认(2026-07-06)。这些规则描述的是产品当前的运行逻辑,不是本次优化需求的内容。供研发、测试等所有相关需求迭代同学作为信息同步和参考依据。后续如有变化会更新。
5.1 车数数据模型
📌 重要理解前提:操作维度 vs 展示维度
本系统的运输计划在设置和修改时,是按日期维度操作的——货主设置的是每日的计划车数(如今天10车、明天10车),系统自动累加得出汇总数据。
页面中的数据展示分为两种:
· 三个汇总卡片(已计划、已抢单、剩余可抢单)→ 展示总数据(各日累加结果)
· 日历/日期视图 → 展示对应日期的每日数据(如日历上今天显示今日已计划10车、已抢单8车、剩余2车)
司机抢单时也是按日操作——选择抢单日期,系统校验当日的剩余可抢单。
📌 车数数据模型(理解运输计划的前提)
| 术语 | 含义 | 示例 | 归属 |
| 订单车数 | 货主发布货源时的预计总需求车数 | 50车 | 货源订单 |
| 已计划车数 | 货主当前已安排运输计划的车数(属于订单车数内的) | 20车 | 运输计划 |
| 已抢单车数 | = 报号单数 + 已生成运单数(审核中占位 + 已生成运单) | 10车 | 运输计划 |
| 剩余可抢单车数 | 已计划内尚未被抢单的车数 | 10车 | 运输计划 |
每日公式:每日剩余可抢单 = 当日已计划 − 当日已抢单
总公式(页面卡片展示):总的剩余可抢单 = 今日及未来各天的每日剩余可抢单之和
另一公式:剩余还未计划 = 订单车数 − 已生成运单数
示例:订单车数50,已计划20 → 还有30车未计划;已计划20中,已抢单10 → 剩余可抢单10
注意1:"剩余还未计划"与"剩余可抢单"含义不同:"剩余还未计划"是订单层面(还有多少车没做计划),"剩余可抢单"是计划层面(已做的计划中还有多少车没被抢)
注意2:总剩余可抢单 ≠ 总已计划 − 总已抢单。过去日期的每日剩余可抢单在当日后系统视为0(司机不能抢过期日子的单),因此总剩余计算时不包含过去日期。
1 已抢单 = 报号单数 + 已生成运单数
已抢单车数包含两部分:司机报号后处于"审核中"的报号单数,以及审核通过后已生成的运单数。两者相加构成已抢单车数。
5.2 抢单与报号机制
2 报号占位机制
司机抢单后,系统将司机报号信息推送至企业微信、系统中台,由系统中台进行审核。审核通过后才生成运单。在审核过程中,已抢单被占位,防止司机超抢。因此,已抢单车数有可能大于已计划车数(因为审核中的报号也占位计入已抢单)。
5.3 修改计划约束
3 "剩余XX车还未计划" = 订单车数 − 已生成运单数
修改计划区块中展示的"(剩余XX车还未计划)",此处的车数 = 订单车数 − 已生成运单数。注意:此处用的是"已生成运单数",而非已计划或已抢单。
4 成丰派车 + 自己派车 ≤ 剩余还未计划车数
货主修改计划时,成丰派车数量与自己派车数量的总和,不得超过"剩余还未计划车数"(即订单车数 − 已生成运单数)。
5 已计划与已抢单关系
按日期计划模式:总的已计划 = 每日计划之和,每日已计划 = 货主为该日设定的计划车数。
每日不限量模式:每日已计划 = 上一日的结余(第一天 = 订单车数,第二天 = 第一天的结余),总的已计划 = 各日不限量额度之和。
通用约束:已计划车数不得小于已抢单车数(已计划 ≥ 已抢单)—— 这是现有约束,本次优化不改动此规则。
(关于总/每日维度的详细区分,参见业务规则文档)
5.4 运单状态计数
6 已计划、已抢单、剩余可抢单指的都是车数
7 待装车、待卸货、待收货审核指的都是车数,但不受其他数据影响
这三个数独立于已计划、已抢单等数据,仅表示当前运单状态对应的运单数量(车数)。如:待装车3车表示当前有3个运单处于"待装货"状态。
5.5 两种计划模式
8 按日期计划模式
货主制定每日的运输计划。每日维度:司机抢单时选择日期,系统校验当日剩余可抢单 = 当日已计划 − 当日已抢单。总维度:总的已计划 = 每日计划之和,总的剩余可抢单 = 今天及未来各天的每日剩余之和。
当日车数=0时,司机不可以抢当日,但司机可以抢明日、后天的计划车数(最远2个月)。
过去日期的剩余可抢单视为0(名额不可过日结转)。
9 每日不限量模式
没有货主设定的"每日计划",司机可以随意抢单。每日已计划由系统按结余自动计算:第一天 = 订单车数,第二天 = 第一天的结余,以此类推。
总的剩余可抢 = 订单车数 − 已抢单车数(订单层面)。
(详见业务规则文档)
⚠️ 以上9条规则为现有业务规则,描述的是产品当前的运行逻辑。本次优化需求只改动2个校验规则(详见第2章),不改动上述现有规则。9条规则记录于此,供研发、测试等所有相关同学作为信息同步和参考依据。