方案设计:配料单自动拆解
← 返回场景概览 | 上一阶段:需求探索 → | 下一阶段:开发资产 →
方案概览
本方案设计了一套完整的配料单自动拆解系统,通过多级拆解算法、配方管理、库存检查,实现从菜品订单到原料需求的自动计算。
1. 多级拆解算法
1.1 拆解流程
1.2 拆解规则
拆解层级:
- 一级:菜品 → 配料(如:宫保鸡丁 → 鸡胸肉、花生、辣椒)
- 二级:配料 → 原料(如:鸡胸肉 → 整鸡)
- 三级:原料 → 基础原料(如:整鸡 → 活鸡)
数量计算:
typescript
function calculateMaterialQuantity(
dishQuantity: number,
recipe: Recipe,
lossRate: number = 0.05 // 默认损耗率 5%
): MaterialRequirement[] {
const requirements = [];
for (const ingredient of recipe.ingredients) {
// 计算基础数量
const baseQuantity = dishQuantity * ingredient.quantity;
// 考虑损耗率
const actualQuantity = baseQuantity * (1 + lossRate);
requirements.push({
materialId: ingredient.materialId,
materialName: ingredient.materialName,
quantity: actualQuantity,
unit: ingredient.unit
});
}
return requirements;
}1.3 损耗率管理
损耗率设置:
- 不同原料有不同的损耗率
- 损耗率可配置
- 损耗率根据历史数据自动调整
损耗率规则:
| 原料类型 | 损耗率 | 说明 |
|---|---|---|
| 生鲜肉类 | 5-10% | 清洗、处理损耗 |
| 蔬菜 | 10-20% | 清洗、去根损耗 |
| 干货 | 2-5% | 少量损耗 |
2. 配方管理
2.1 配方结构
配方定义:
typescript
interface Recipe {
id: string;
dishId: string; // 菜品ID
dishName: string; // 菜品名称
version: string; // 配方版本
ingredients: Ingredient[]; // 配料列表
status: 'draft' | 'approved' | 'archived';
createdAt: Date;
updatedAt: Date;
}
interface Ingredient {
materialId: string; // 原料ID
materialName: string; // 原料名称
quantity: number; // 数量
unit: string; // 单位
lossRate?: number; // 损耗率
}2.2 配方版本管理
版本规则:
- 配方变更创建新版本
- 旧版本保留,可追溯
- 当前使用版本标记
版本审核:
- 配方变更需要审核
- 审核通过后才能使用
- 审核记录完整
3. 库存检查
3.1 库存检查规则
检查流程:
- 拆解后获取原料需求列表
- 查询当前库存
- 计算可用库存(当前库存 - 已预留)
- 比对需求与可用库存
- 生成采购需求(不足部分)
3.2 采购需求生成
需求规则:
- 库存不足自动生成采购需求
- 考虑安全库存
- 考虑采购周期
- 考虑最小采购量
4. 数据模型设计
4.1 配方(Recipe)
typescript
interface Recipe {
id: string;
dishId: string;
dishName: string;
version: string;
ingredients: Ingredient[];
status: 'draft' | 'approved' | 'archived';
createdAt: Date;
updatedAt: Date;
}4.2 原料需求(MaterialRequirement)
typescript
interface MaterialRequirement {
id: string;
orderId: string; // 订单ID
materialId: string; // 原料ID
materialName: string; // 原料名称
requiredQuantity: number; // 需求数量
availableQuantity: number; // 可用库存
shortageQuantity: number; // 缺货数量
unit: string; // 单位
status: 'sufficient' | 'insufficient';
createdAt: Date;
}5. 关键业务规则总结
5.1 拆解规则
- 多级拆解:菜品 → 配料 → 原料
- 数量计算:考虑损耗率
- 自动检查库存
5.2 配方规则
- 配方版本管理
- 配方审核流程
- 配方变更可追溯
5.3 采购规则
- 库存不足自动生成采购需求
- 考虑安全库存和采购周期
- 采购需求审批流程
下一步:开发资产
在开发资产阶段,我们将:
- 创建 Cursor Skills(业务规则、数据模型)
- 创建 PROMPT 模板(需求调研、方案设计)
- 创建代码模板(API 接口、前端组件)

