目录
一、文档说明与项目概述
二、平台基础规则
2.1 角色与权限
2.2 订单类型
2.3 编号规则
2.4 计费与定价模式
2.5 结算周期
三、发货业务规则
3.1 发货类型
3.2 运输信息配置
3.3 更多配置
四、运单管理规则
4.1 运单列表与筛选
4.2 运单详情
4.3 运单日志
五、费用与结算规则
5.1 费用明细结构
5.2 结算规则
六、装车预支业务规则
6.1 预支类型与适用范围
6.2 预支业务流程
6.3 关键规则
6.4 展示规则(货主端)
七、订单昵称显示设置规则
八、运输计划规则
8.1 抢单校验规则
8.2 修改计划校验规则
九、页面交互与导航规则
十、异常与边界处理规则
一、文档说明与项目概述
1.1 文档用途
本文档基于成丰货运平台原型设计、PRD文档、业务流程知识库、以及设计过程中与产品经理的沟通记录,对平台的业务规则进行系统梳理和归纳。旨在为开发、测试、产品团队提供一份可查阅、可追溯的规则参考手册。
1.2 项目概况
1.3 已完成需求迭代
| # | 需求编号 | 需求名称 | 完成日期 |
| 1 | RR20260121091271 | 货主发单配置是否展示订单昵称给经纪人开关 | 2026-06-23 |
| 2 | RR20260528249835 | 货主端运单日志/运费明细展示司机装车预支明细 | 2026-06-30 |
| 3 | RR20260623274028 | 运输计划功能优化 — 抢单数校验 & 修改计划剩余车数校验 | 2026-06-25 |
二、平台基础规则
2.1 角色与权限
| 角色 | 说明 | 使用端 | 核心权限 |
| 货主 | 发布运输需求、管理运单、配置个性化设置 | 货主端PC / 货主端APP | 发货、查看运单、配置设置、审核预支、修改运输计划 |
| 经纪人 | 接单、分配运力、查看司机资源 | 经纪人端PC | 抢单、查看订单列表和详情(受昵称可见性约束)、管理司机 |
| 司机 | 抢单、在途运输、提交预支申请、提现 | 司机端APP / 小程序 | 抢单(受校验约束)、提交装车预支、查看运单、在线/离线切换 |
| 平台运营 | 监控平台整体数据、异常处理 | 运营中台PC | 查看KPI、订单列表、分布图表 |
2.2 订单类型
| 订单类型 | 说明 | 适用场景 |
| 平台单 | 货主通过平台发布运单,由平台分配或由经纪人/司机抢单 | 常规运输,需平台介入承运 |
| 定向单 | 货主指定特定经纪人/司机承运 | 已有合作关系,货主指名派单 |
定向单和平台单均适用订单昵称显示配置、运输计划校验规则。装车预支仅适用于平台单。
2.3 编号规则
编号规范
1
运单编号:以 YD 开头,后接日期+序号(如 YD20260624001)
2
订单编号:以 DD 开头,后接日期+序号(如 DD20260624001)
3
需求编号:以 RR 开头,后接日期+序号(如 RR20260528249835)
2.4 计费与定价模式
| 维度 | 规则说明 |
| 定价模式 | 一口价、限价、招投标三种模式 |
| 计费方式 | 按吨计费、按车计费 |
| 车辆来源 | 成丰派车、货主自派 |
| 承运方类型 | 平台承运、经纪人承运、司机直接承运 |
2.5 结算周期
三、发货业务规则
3.1 发货类型
发货流程规则
1
发货类型:货主端发货页面支持 Tab 切换选择「平台发货」或「自有车发货」
2
流程引导:发货页面顶部含 Step 1→2→3→4 流程引导步骤条
3
必填信息:发货地址、收货地址、车型选择、联系人信息、货物信息、运费信息
3.2 运输信息配置
承运方选择规则
1
承运方Tab切换:提供「平台」「经纪人」「司机」三个Tab切换选择承运方
2
平台Tab:选择平台承运,须展示警告提示「平台承运模式下,运单将由平台统一调度分配」
3
平台Tab表单分块:运费信息(6字段:定价模式、计费方式、单价、数量、应收运费、已收定金)、定价模式、收货信息、结算信息
4
布局规则:运费信息等表单按 3 字段/行 排列
3.3 更多配置
Step 3「更多配置」规则
1
配置开关项:货物无忧、在途监控、发收货单位、磅房、车辆库、现场费用 — 默认关闭
2
开关交互:滑动开关点击切换开/关状态,开关间距一致
四、运单管理规则
4.1 运单列表与筛选
运单列表规则
1
筛选器:支持 20+ 个筛选字段(包括状态、时间、线路、承运方等)
2
数据表格:运单数据包含 40+ 列维度信息,支持分页查看
3
详情查看:点击运单行可打开详情抽屉或进入详情页面
4.2 运单详情
运单详情 Tab 结构
1
Tab 5 个:运单信息、订单信息、运单日志、在途监控、车辆经停
2
运单信息 Tab:含费用明细卡片,展示司机运费(扣补前、亏吨扣款、其他扣款、固定扣款)、服务费(折扣前、商务折扣)、其他费用(平台服务费、经纪人派车费、运费溢价)
3
运单信息 Tab — 装车预支展示:司机运费模块末尾新增装车预支和油气预支两个费用项(仅展示货主预支,不展示平台预支)
4.3 运单日志
运单日志规则
1
日志类型:时间线形式展示运单全生命周期节点,时间倒序排列
2
预支节点(新增):当运单存在货主预支时,时间线中新增 6 个预支节点(见第六章)
3
无预支时不展示:运单无预支时,日志中不展示任何预支相关节点
五、费用与结算规则
5.1 费用明细结构
费用明细分类规则
A
司机运费:
- 扣补前(原始运费)
- 亏吨扣款(货物缺失扣款)
- 其他扣款
- 固定扣款
- 装车预支(新增,正值)
- 油气预支(新增,正值)
装车预支和油气预支仅在有预支时显示,无预支时不展示。司机运费总额不变(预支为已付部分的明细展示,非额外费用)。
5.2 结算规则
3
预支扣除:存在货主预支时,结算金额 = 剩余运费(总运费 − 已预支金额),预支部分不再重复结算
4
自动额度退回:司机未使用预支(不提现/不加油)时,货主收货确认后系统自动将额度退回,运费统一结算给司机
六、装车预支业务规则
6.1 预支类型与适用范围
| 预支类型 | 说明 | 适用范围 | 展示范围 |
| 装车预支(运费预支) | 货主向司机预付的现金金额,用于司机装车期间的费用支出 | 仅平台单运单 | 展示货主预支 |
| 油气预支 | 货主向司机预付的油气额度,用于司机装车期间的加油/加气支出 | 仅平台单运单 | 展示货主预支 |
| 平台预支 | 由平台承担的预支款项 | 仅平台单运单 | 不向货主展示 |
⚠️ 重要说明:平台预支属于平台与司机之间的资金关系,货主端运单日志和费用明细均不展示平台预支相关信息。本期仅展示货主侧的装车预支和油气预支明细。
6.2 预支业务流程
公共流程
① 货主发货(平台单)
② 司机装货(提交装货信息后)
③ 冻结整车运费
④ 判断:是否装车预支?
分支一:否(平台预支)
① 平台冻结预支比例金额 / 预支油气额度
② 平台审核
③ 审核通过,平台将预支金额发放给司机 (到账的是用信额度,非现金)
④ 判断司机是否提现/加油?
是:司机提现/加油 → 扣款成功 → 货主收货确认 → 剩余部分转给司机
否:货主收货确认 → 自动额度退回 → 运费统一结算给司机
分支二:是(货主预支)
① 货主预支运费(从已被冻结的整车运费中扣除)或油气
② 司机装车时申请装车预支
③ 货主审核 (通过 / 驳回)
④ 审核通过,预支金额部分支付司机
⑤ 判断司机是否提现?
是:司机提现 → 货主收货审核通过 → 剩余运费金额转至司机
否:货主收货审核通过 → 自动额度退回 → 运费统一结算给司机
6.3 关键规则
装车预支核心规则
1
关键 预支到账 ≠ 资金流转:审核通过后到账的是用信额度,只有司机提现或加油时才有实际资金流转
2
关键 不使用预支的退回:司机不提现/不加油时,货主收货确认后系统自动将额度退回,运费统一结算给司机
3
平台预支 vs 货主预支:选择"否"由平台预支并审核;选择"是"由货主预支并审核
4
冻结逻辑:司机装货提交装货信息后即冻结整车运费;货主预支从已冻结运费中扣除
6.4 展示规则(货主端)
| 节点名称 | 触发条件 | 样式 |
| 装车预支申请已提交 | 司机提交装车预支申请 | 绿色高亮(已完成)/ 蓝色(当前节点)/ 灰色(待办) |
| 装车预支申请已通过 | 货主审核通过 | 绿色高亮 |
| 预支费用已发放 | 预支费用发放,展示预支类型及金额明细 | 绿色高亮,展开显示运费预支金额¥XX.XX、油气预支金额¥XX.XX |
| 装车预支运费已提现 | 司机提现运费预支 | 橙色高亮 |
| 装车预支油气已使用 | 司机使用油气额度 | 橙色高亮 |
| 剩余预支已退回 | 货主收货确认后,未使用预支自动退回 | 橙色高亮,展开显示运费预支退回金额¥XX.XX、油气预支退回金额¥XX.XX |
费用明细 — 预支字段展示规则
A
PC端:司机运费模块末尾新增「装车预支」和「油气预支」费用项,运单有预支时显示对应项
B
APP端:费用明细页司机运费明细区域新增,橙色字体 #E6A23C,加粗 500
C
无预支不显示:运单无预支时,费用明细中不展示装车预支和油气预支字段
七、订单昵称显示设置规则
订单昵称显示设置 — 完整规则(共9条)
1
默认状态:开关默认状态为"开启",即默认经纪人可见订单昵称
2
保存生效:开关状态仅在点击"保存配置"后才持久化生效;未保存直接离开页面则不保存修改
3
实时生效:配置保存后实时生效,对后续所有新创建和已有的订单均适用
4
PC端重置规则:点击"重置"仅恢复开关UI状态为默认值,不自动保存,需再点击"保存配置"才会生效
5
APP端无重置:APP端无"重置"按钮,每次进入设置子页面展示当前已保存的配置状态
6
两端数据同步:PC端与APP端配置数据同步,任一端修改保存后对另一端同样生效
7
关闭时全隐藏:当开关为"关闭"状态时,经纪人在订单列表、订单详情等页面均不展示订单昵称字段
8
经纪人端新增字段:经纪人端订单列表/详情新增"订单昵称"展示字段,字段是否展示取决于货主的配置状态
9
适用订单类型:定向单和平台单均适用此配置,两种订单类型在经纪人端的昵称展示逻辑一致
7.1 交互规则
| 端 | 入口路径 | 操作 | 系统响应 |
| PC端 | 基础信息 → 个性化设置 → 订单昵称显示设置(Tab4) | 点击开关 | 开关滑动动画切换,状态文字同步更新为"开启"或"关闭" |
| PC端 | 同上 | 点击"保存配置" | 保存开关状态,弹出吐司"配置已生效",2秒后自动消失 |
| PC端 | 同上 | 点击"重置" | 开关恢复为默认开启,弹出吐司"已重置",2秒后自动消失(需再保存才生效) |
| APP端 | 我的 → 业务工具 → 个性化设置 → 订单昵称显示设置 | 点击开关 | 同PC端动画效果 |
| APP端 | 同上 | 点击"保存配置" | 保存成功 → 吐司"配置已生效" → 2秒后自动返回上一级(个性化设置列表页) |
| APP端 | 同上 | 点击左上角返回 | 返回上一级,不保存修改 |
PC端切换Tab或离开页面时,若配置未保存,弹出确认提示"配置未保存,是否离开?",确认后离开不保存。
八、运输计划规则
8.1 抢单校验规则
抢单校验规则(共5条)
1
核心 每次抢单实时校验:系统校验 已抢单数 + 1 ≤ 计划车数,校验通过则抢单成功,已抢单数+1
2
满额置灰:当 已抢单数 = 计划车数(即剩余车数=0)时,该运输计划不可再抢单,抢单按钮置灰不可点击,文字变更为"已满",计划卡片展示"XX/XX车"进度
3
关键 并发控制:服务端通过锁机制(分布式锁/乐观锁)确保抢单数不超过计划数,多请求并发只允许计划数内的抢单成功
4
双重校验:前端校验仅作为体验优化(提前置灰按钮),服务端校验是最终防线
8.2 修改计划校验规则
修改计划校验规则(共7条)
1
核心 系统计算 剩余车数 = 修改后计划车数 − 已抢单数
2
核心 剩余为0拦截:当 剩余车数 = 0(即修改后计划车数 = 已抢单数)时,拦截保存,提示"修改后剩余车数不能为0"
3
小于已抢单数拦截:当 修改后计划车数 < 已抢单数 时,拦截保存,提示"计划车数不能小于已抢单数"
4
正常修改:当 剩余车数 > 0 时,允许保存,计划车数更新为修改后的值
5
只读约束:已抢单数在修改时为只读展示,货主不能直接修改已抢单数,只能修改计划车数
6
仅校验车数修改:修改计划的其他字段(如线路、货物等)不受此规则限制,仅修改计划车数时触发校验
7
已抢单数为0:若运输计划尚无任何抢单(已抢单数=0),修改计划车数为任意正整数均可
校验逻辑汇总
| 场景 | 条件 | 结果 |
| 正常抢单 | 已抢单数 + 1 ≤ 计划车数 | ✅ 抢单成功 |
| 超量抢单 | 已抢单数 + 1 > 计划车数 | ❌ 拦截,提示超量 |
| 正常修改 | 新计划车数 − 已抢单数 > 0 | ✅ 保存成功 |
| 剩余为0 | 新计划车数 − 已抢单数 = 0 | ❌ 拦截,提示剩余不能为0 |
| 计划数小于已抢单 | 新计划车数 < 已抢单数 | ❌ 拦截,提示不能小于已抢单数 |
修改计划页实时提示规则:
- 货主修改计划车数时,输入框下方实时展示"当前已抢单:X车,修改后剩余:Y车"
- 当 Y = 0 时,输入框下方标红提示"剩余车数不能为0",保存按钮置灰
- 当 Y > 0 时,提示文字恢复正常颜色,保存按钮可点击
九、页面交互与导航规则
9.1 APP端滚动设计规范
APP滚动规则
1
手机壳固定高度:设计稿使用 375x812px(iPhone X 比例),使用 flex 纵向布局
2
固定区域:状态栏、标题栏、底部导航栏使用 flex-shrink: 0 固定不动
3
内容滚动区:内容区使用 flex: 1; overflow-y: auto 实现超出滚动
4
滚动条隐藏:scrollbar-width: none + ::-webkit-scrollbar { display: none }
9.2 页面导航规则
导航与链接规则
1
内部页面跳转:原型中使用绝对路径:href="file:///Users/liuningning/WorkBuddy/..."
2
禁止 target="_blank":内部链接禁止使用 target="_blank",避免预览区无限开新标签
3
禁止相对路径:内部页面链接禁止使用相对路径,因预览区基准路径可能与文件所在目录不一致
4
外部链接可用 target="_blank":部署链接(CloudStudio等)可以使用 target="_blank",属于站外跳转
5
返回按钮:子页面必须有「返回总入口」按钮,指向绝对路径
十、异常与边界处理规则
10.1 通用异常处理
| 异常场景 | 处理方式 |
| 网络异常(保存配置) | 弹出"网络异常,请重试"提示,开关状态保持当前修改值不丢失 |
| 重复点击"保存配置" | 按钮在请求期间禁用(防重复提交),完成后恢复 |
| 未保存直接离开页面 | 弹出确认提示"配置未保存,是否离开?",确认后离开不保存 |
| 抢单时网络异常 | 提示"网络异常,请重试",不改变已抢单数 |
| 修改计划时网络异常 | 提示"网络异常,请重试",计划车数保持修改前值不变 |
10.2 并发场景处理
| 异常场景 | 处理方式 |
| 并发抢单导致超量 | 服务端通过锁机制保证原子性,超量请求返回失败,前端提示"抢单数已达计划数上限,请刷新后重试" |
| 抢单过程中计划被修改 | 以服务端最新数据为准进行校验,若最新计划车数已被修改导致超量,则拦截抢单 |
| 多司机同时抢最后一车 | 锁机制确保只允许1人成功,其他返回失败提示 |
10.3 边界场景处理
| 边界场景 | 处理方式 |
| 计划车数为0 | 计划车数为0时不允许发布计划(已有逻辑),不会出现计划数为0的抢单场景 |
| 已抢单数为0时修改计划 | 无限制,修改为任意正整数均可 |
| 计划已被全部抢单完后修改 | 允许增加计划车数(新剩余 > 0),不允许减少或保持(新剩余 ≤ 0) |
| 运单无预支时查看日志 | 不展示任何预支相关节点 |
| 运单有预支但仅部分类型 | 费用明细中仅展示有预支的对应类型,无预支类型不显示 |
| 货主从未配置过昵称设置 | 按默认值(开启)处理,经纪人端默认可见订单昵称 |
10.4 数据一致性规则
1
PC与APP配置同步:订单昵称显示配置在PC端和APP端数据同步,任一端修改后另一端即时生效
2
服务端优先:抢单校验的服务端校验是最终防线,前端校验仅做体验优化
3
最新数据为准:抢单/修改计划等操作均以服务端最新数据为准进行校验