方案设计:生鲜损耗控制
业务规则设计
基于需求探索阶段的分析,我们设计了以下业务规则:
1. 差异容忍规则
| 条件 | 动作 | 触发通知 | 备注 |
|---|---|---|---|
| 实际重量 = 采购重量 ± 2% | 直接入库,系统自动平账 | 无 | 允许 2% 正常误差 |
| 实际重量 > 采购重量 + 2% | 暂停入库,通知采购员决策 | 采购员(微信/短信) | 可能需要退货或补单 |
| 实际重量 < 采购重量 - 2% | 生成损耗单,通知财务审核 | 财务、采购员 | 需要审核确认后入库 |
规则说明:
- 2% 是基于行业经验的合理误差范围
- 可以针对不同品类设置不同的容忍度(例如:冻品 3%,生鲜 2%)
2. 自动平账逻辑
场景 A:正常误差(± 2% 以内)
实际重量:490kg
采购重量:500kg
差异:-10kg(-2%)
系统自动处理:
1. 入库重量:490kg
2. 采购单价:30元/kg
3. 应付金额:490kg × 30元 = 14,700元
4. 自动生成入库单和财务凭证
5. 记录损耗:10kg(自然损耗)场景 B:多收(> +2%)
实际重量:520kg
采购重量:500kg
差异:+20kg(+4%)
系统处理流程:
1. 暂停入库
2. 微信/短信通知采购员
3. 采购员选择:
a) 全部收货 → 补签采购单
b) 退回多余部分 → 按 500kg 入库
4. 完成采购员确认后,系统自动入库和平账场景 C:少收(< -2%)
实际重量:480kg
采购重量:500kg
差异:-20kg(-4%)
系统处理流程:
1. 生成损耗单(待审核)
2. 通知采购员和财务
3. 财务审核:
a) 正常损耗 → 审核通过,按 480kg 入库和结算
b) 异常损耗 → 要求供应商补货或赔偿
4. 审核通过后,系统自动完成入库和平账业务流程图
总体流程
详细流程说明
步骤 1:收货称重
- 仓管员扫描采购单二维码
- 系统自动显示:采购品名、规格、采购重量
- 仓管员将货物放上电子秤
- 系统自动读取实际重量
步骤 2:自动判断
typescript
// 伪代码示例
function checkWeightDifference(actualWeight, purchaseWeight) {
const difference = actualWeight - purchaseWeight;
const percentage = (difference / purchaseWeight) * 100;
if (Math.abs(percentage) <= 2) {
return { status: 'AUTO_APPROVE', action: '直接入库' };
} else if (percentage > 2) {
return { status: 'NEED_BUYER_APPROVE', action: '通知采购员' };
} else {
return { status: 'NEED_FINANCE_APPROVE', action: '生成损耗单' };
}
}步骤 3:执行动作
根据判断结果,系统自动执行相应动作(见流程图)
数据结构设计
收货记录表
typescript
interface ReceiptRecord {
id: string; // 收货单号
purchaseOrderId: string; // 采购单号
supplierId: string; // 供应商ID
productId: string; // 商品ID
// 重量信息
purchaseWeight: number; // 采购重量(kg)
actualWeight: number; // 实际重量(kg)
difference: number; // 差异(kg)
differencePercentage: number; // 差异百分比(%)
// 处理状态
status: 'AUTO_APPROVED' | 'PENDING_BUYER' | 'PENDING_FINANCE' | 'COMPLETED';
// 处理结果
finalWeight: number; // 最终入库重量
finalAmount: number; // 最终结算金额
// 审核信息
buyerApproval?: {
approver: string;
decision: 'ACCEPT_ALL' | 'RETURN_EXCESS';
approvedAt: Date;
};
financeApproval?: {
approver: string;
decision: 'APPROVED' | 'REJECTED';
approvedAt: Date;
reason?: string;
};
// 时间戳
receivedAt: Date; // 收货时间
completedAt?: Date; // 完成时间
}界面设计要点
仓管员收货界面(移动端)
┌─────────────────────────┐
│ 收货:海鲜-大虾 │
│ │
│ 采购重量:500.00 kg │
│ 实际重量:490.00 kg │
│ 差异:-10 kg (-2%) │
│ │
│ [✓ 自动入库] │
│ │
│ 系统已自动处理: │
│ • 入库:490kg │
│ • 损耗:10kg(正常) │
│ • 应付:14,700元 │
└─────────────────────────┘采购员处理界面(微信通知)
【收货异常通知】
商品:海鲜-大虾
采购重量:500kg
实际重量:520kg
多收:+20kg (+4%)
请选择处理方式:
[ ] 全部收货(需补签采购单)
[ ] 退回多余部分
[查看详情] [立即处理]关键技术点
1. 电子秤集成
- 支持蓝牙电子秤
- 实时读取重量数据
- 自动传输到系统
2. 规则引擎
- 可配置的容忍规则
- 支持不同品类设置不同规则
- 规则变更不需要改代码
3. 通知机制
- 微信公众号/企业微信通知
- 短信通知(备用)
- 系统内消息推送
方案验证
我们通过以下方式验证了方案的可行性:
原型演示(3 天完成)
- 快速搭建收货界面
- 模拟自动判断逻辑
- 客户确认流程合理
小范围试用(1 周)
- 选择 2 个供应商试用
- 收集仓管员、采购员反馈
- 调整容忍规则(从 3% 优化到 2%)
全面上线(2 周后)
- 逐步推广到所有供应商
- 持续优化规则和流程
下一步
方案设计已完成并验证可行,下一步进入 开发资产 → 阶段,沉淀可复用的开发规则和代码。

