Skip to content

方案设计:生鲜损耗控制

← 上一阶段:需求探索 | 下一阶段:开发资产 →


业务规则设计

基于需求探索阶段的分析,我们设计了以下业务规则:

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:自动判断

差异判断接口规范

接口名称: checkWeightDifference

输入参数:

  • actualWeight: 实际重量(number, kg)
  • purchaseWeight: 采购重量(number, kg)
  • tolerance: 容忍度(number, 默认0.02)

输出格式:

typescript
{
  status: "AUTO_APPROVE" | "NEED_BUYER_APPROVE" | "NEED_FINANCE_APPROVE",
  difference: number,
  percentage: number,
  action: string
}

业务规则约束:

  1. 差异百分比 = (实际重量 - 采购重量) / 采购重量 × 100
  2. |差异百分比| ≤ 容忍度 → AUTO_APPROVE
  3. 差异百分比 > 容忍度 → NEED_BUYER_APPROVE
  4. 差异百分比 < -容忍度 → NEED_FINANCE_APPROVE

错误码定义:

  • E001: 参数缺失
  • E002: 重量为负数
  • E003: 容忍度超出范围(0-1)

步骤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. 通知机制

  • 微信公众号/企业微信通知
  • 短信通知(备用)
  • 系统内消息推送

方案验证

方案验证路径

阶段一:原型验证

  • 验证目标:确认自动判断逻辑是否符合业务预期
  • 关键依赖:需要客户提供历史收货数据样本(至少100条)
  • 验证标准:误判率 < 5%

阶段二:小范围试点

  • 试点范围:选择2个高频供应商(每日收货 > 5次)
  • 规则调优:根据实际数据调整容忍度
  • 关键指标:自动处理率 > 80%, 误判率 < 3%

阶段三:全面推广

  • 推广策略:按供应商类别分批上线
  • 风险控制:保留人工复核通道,双轨运行

下一步

方案设计已完成并验证可行,下一步进入 开发资产 → 阶段,沉淀可复用的开发规则和代码。


相关链接

基于 AI 辅助开发,快速、灵活、可靠