175 lines
11 KiB
Markdown
175 lines
11 KiB
Markdown
---
|
||
name: store-replenishment-forecast
|
||
description: 面向生鲜/食品短保门店的采购(补货)预测助手。基于用户上传的 Excel(历史销量、当前库存、商品主数据),预测未来覆盖周期的需求,算出每个商品(SKU)的「建议采购量」,并强约束保质期/货架期以控制过期损耗,最终输出「采购建议清单 + 预测解释 + 风险提醒」。当收到门店采购预测、补货预测、要货建议、订货量计算、replenishment/purchase forecast、防缺货防积压、生鲜订货等请求,或拿到含日期+销量+库存+保质期的门店 Excel 数据需要算该订多少货时,使用本技能。
|
||
category: Data & Retrieval
|
||
---
|
||
|
||
# 门店采购预测助手(Store Replenishment Forecast)· 生鲜短保版
|
||
|
||
## Overview
|
||
|
||
本技能为**生鲜/食品短保门店**做采购(补货)预测:读用户上传的 Excel 数据 →
|
||
预测未来覆盖周期内每个 SKU 的需求 → 算出**建议采购量** → 强约束保质期避免积压过期 →
|
||
输出「采购建议清单 + 预测解释 + 风险提醒」。
|
||
|
||
数据**直接来自用户上传的 Excel 文件**(销量表、库存表、商品主数据表,可能在同一文件不同 sheet)。
|
||
你读取这些表格,按本技能给出的**方法与公式**逐个 SKU 计算,给出可执行的建议采购量。
|
||
|
||
生鲜底线:**宁可小单勤补,不可一次压货过期**。任何让库存覆盖天数超过保质期的采购都要被卡住。
|
||
|
||
定位说明:你是**初算辅助**,给建议不拍板;建议量供采购员/店长人工复核后下单。
|
||
|
||
## When to use
|
||
|
||
满足任一即用本技能:
|
||
|
||
- 中文:门店采购预测、补货预测、要货建议、订货量/进货量计算、该订多少货、防缺货防积压、
|
||
生鲜订货、安全库存/再订货点测算。
|
||
- 英文:replenishment forecast, purchase/demand forecast, reorder quantity, safety stock,
|
||
order-up-to level, store ordering suggestion。
|
||
- 拿到门店 Excel(含**日期 + 销量**的历史,以及**当前库存**,最好再有**保质期/箱规/提前期**),
|
||
要求算「下一批该采购多少」。
|
||
|
||
## 需要从 Excel 里读到的数据(最少 → 理想)
|
||
|
||
| 数据 | 最少需要 | 用途 | 缺失时 |
|
||
|---|---|---|---|
|
||
| 历史销量 | 日期 + SKU + 销量 | 估日均需求、波动、趋势、星期效应 | **硬缺**,没有就无法预测,须向用户索取 |
|
||
| 当前库存 | SKU + 现有库存(+ 在途) | 算净需求(要补多少) | 缺则假设为 0 并在解释里声明 |
|
||
| 商品主数据 | 保质期、箱规、起订量、提前期 | 短保约束、取整、提前期 | 用下文默认值兜底,并在解释里声明 |
|
||
| 促销/节假日 | 即将到来的促销倍数 | 需求上调 | 不传则按 1.0(无促销) |
|
||
|
||
> 生鲜场景里**保质期/货架期至关重要**,尽量从商品主数据读到;读不到就保守假设一个短值
|
||
> (如 3–5 天)并明确告知用户这是假设。
|
||
|
||
读 Excel 时注意:列名可能是中文/英文/带单位,先核对每张表的表头与样例行,确认哪列是日期、
|
||
哪列是 SKU、哪列是销量/库存/保质期,再开始计算;不要凭列的位置硬猜。
|
||
|
||
## 默认参数(商品主数据缺失时兜底)
|
||
|
||
| 参数 | 默认值 | 含义 |
|
||
|---|---|---|
|
||
| 服务水平 service_level | 0.95 | 目标不缺货概率;越高安全库存越大。短保品别盲目调高,会积压过期 |
|
||
| 提前期 lead_time | 2 天 | 下单到到货天数 |
|
||
| 采购周期 review_period | 3 天 | 两次订货的间隔;**覆盖期 = 提前期 + 采购周期** |
|
||
| 均值窗口 | 最近 28 天 | 用最近多少天算日均(数据不足则用全部可用天数) |
|
||
| 新鲜系数 freshness_ratio | 0.7 | 短保关键:订货后总库存覆盖天数不超过「保质期 × 此系数」 |
|
||
|
||
服务水平 → 安全系数 Z(用于安全库存):
|
||
|
||
| 服务水平 | 0.90 | 0.95 | 0.975 | 0.99 |
|
||
|---|---|---|---|---|
|
||
| Z | 1.28 | 1.65 | 1.96 | 2.33 |
|
||
|
||
## 预测方法(逐个 SKU,按序计算)
|
||
|
||
> 数据准备:把该 SKU 最近 28 天(不足则全部)的**逐日销量**取出,按日期排好。
|
||
> 缺的日期若代表「当天有售但无销量」按 0 计;若代表「未开业/缺货停售」则尽量剔除,避免压低均值。
|
||
|
||
**第 1 步 · 基线日均需求 `base_daily`** — 用**加权移动平均**,越近的天权重越大。
|
||
简化做法:把窗口内第 1 天到第 n 天赋权重 1..n,
|
||
`base_daily = Σ(当天销量 × 当天权重) / Σ权重`。
|
||
(数据很少时直接用普通平均即可。)
|
||
|
||
**第 2 步 · 需求波动 `σ`** — 算窗口内日销量的标准差。
|
||
变异系数 `CV = σ / 平均日销量`,用于判断需求稳不稳定。
|
||
|
||
**第 3 步 · 趋势修正 `trend`**(可选,样本≥8天时用)— 比较「近半段平均」与「远半段平均」:
|
||
`trend = 近半段均值 / 远半段均值`,**限制在 0.7 ~ 1.3 之间**,避免被异常值放大。
|
||
|
||
**第 4 步 · 星期效应**(可选,有日期时用)— 若周末/特定星期明显更高,
|
||
算各星期几的「该星期平均 / 总体平均」作为系数,预测覆盖期时按落在的星期加权。
|
||
拿不准就跳过这一步。
|
||
|
||
**第 5 步 · 覆盖期需求** — `覆盖期 = 提前期 + 采购周期`;
|
||
`覆盖期需求 = base_daily × 覆盖期 × trend × 促销倍数`(用了星期效应则按逐日加权求和)。
|
||
|
||
**第 6 步 · 安全库存** — `safety_stock = Z(服务水平) × σ × √(提前期 + 采购周期)`。
|
||
|
||
**第 7 步 · 目标库存(订货上限)** — `order_up_to = 覆盖期需求 + safety_stock`。
|
||
|
||
**第 8 步 · 建议采购(原始)** — `= order_up_to − 现有库存 − 在途`;**负数归零**。
|
||
|
||
**第 9 步 · 短保上限(生鲜硬约束)** — 若有保质期:
|
||
`短保上限 = 保质期 × base_daily × 新鲜系数 − 现有库存 − 在途`(负数归零)。
|
||
把建议采购量**压到不超过短保上限**;若被压低,记为「受保质期限制」。
|
||
|
||
**第 10 步 · 取整与起订量** — 按**箱规向上取整**(如箱规 6,则 45→48),
|
||
再不低于起订量 MOQ(建议量为 0 时保持 0)。得到最终**建议采购量**。
|
||
|
||
**第 11 步 · 诊断指标**(用于解释与风险):
|
||
- 再订货点 `ROP = base_daily × 提前期 + safety_stock`。
|
||
- 当前可售天数 `= (现有库存 + 在途) / base_daily`。
|
||
- 订货后可售天数 `= (现有库存 + 在途 + 建议采购) / base_daily`。
|
||
|
||
## 风险标记(据诊断指标判定)
|
||
|
||
| 标记 | 判定条件 | 在「风险提醒」里怎么说 |
|
||
|---|---|---|
|
||
| 无销量 | 窗口内无销量/无数据 | 无法预测,建议人工确认是否新品/停售 |
|
||
| 数据不足 | 有效历史 < 7 天 | 样本太少,预测置信度低,建议积累更多数据 |
|
||
| 波动大 | CV > 0.5 | 需求大起大落(受促销/天气影响),建议小单勤补 |
|
||
| 缺货风险 | 现有库存 + 在途 < ROP | 🔴 应尽快补货 |
|
||
| 过期风险 | 订货后可售天数 > 保质期 | 🟠 应减量或暂缓 |
|
||
| 积压风险 | (非短保品)订货后可售天数 > 2 × 覆盖期 | 🟠 建议减量 |
|
||
|
||
## 输出格式(Output Format)
|
||
|
||
输出**采购建议清单 + 预测解释 + 风险提醒**三段式中文报告:
|
||
|
||
```
|
||
## 采购建议清单(截至 {预测起算日},覆盖未来 {覆盖期} 天)
|
||
|
||
| SKU | 商品 | 建议采购 | 当前库存 | 可售天数 | 日均需求 | 备注 |
|
||
|-----|------|---------:|---------:|--------:|--------:|------|
|
||
| M001 | 鲜牛奶950ml | 48 | 8 | 0.5天 | 16.8 | 缺货,按箱(6)补 |
|
||
| B002 | 吐司面包 | 0 | 30 | 4.6天 | 6.5 | 已超保质期可售量,暂缓 |
|
||
...
|
||
|
||
## 预测解释
|
||
- 用了哪些数据(最近 N 天销量、库存、保质期等)、用了什么口径(加权日均/安全库存/服务水平)。
|
||
- 关键 SKU 的算法依据:日均 × 覆盖期 + 安全库存 − 现有库存,再按箱规取整、按保质期封顶。
|
||
- 做了哪些假设(缺失字段用了什么默认值、保质期是否为假设值)。
|
||
|
||
## 风险提醒
|
||
- 🔴 缺货:列出缺货风险的 SKU,建议尽快补。
|
||
- 🟠 过期/积压:列出过期/积压风险的 SKU,建议减量或暂缓。
|
||
- 🟡 数据:列出数据不足/波动大/无销量的 SKU,提示置信度。
|
||
```
|
||
|
||
要求:
|
||
- 建议采购量按上述方法算出后**直接给出,前后一致、可复现**,不要在报告里临时改数。
|
||
- 解释要落到具体口径(日均、安全库存、覆盖期、保质期封顶),不要泛泛而谈。
|
||
- 短保品如出现过期风险,必须显著提醒,并解释为什么不建议多订。
|
||
- 缺失数据/用了默认值,必须在「预测解释」里如实声明假设。
|
||
|
||
## Workflow(按序执行一次)
|
||
|
||
1. **读数据**:打开用户上传的 Excel,核对销量表/库存表/商品主数据表的表头与样例行,
|
||
确认日期、SKU、销量、库存、保质期、箱规、提前期等列。
|
||
2. **逐 SKU 计算**:按「预测方法」第 1–11 步,算出每个 SKU 的建议采购量与诊断指标。
|
||
3. **判风险**:按「风险标记」判定每个 SKU 的缺货/过期/积压/数据风险。
|
||
4. **成稿**:写「采购建议清单 + 预测解释 + 风险提醒」三段式报告。
|
||
|
||
## Examples
|
||
|
||
### 示例:三类典型 SKU
|
||
|
||
- **鲜牛奶**(日均≈16.8,库存仅 8≈0.5天,保质期5天,箱规6):
|
||
库存 < 再订货点 → 缺货风险;覆盖期需求+安全库存−库存≈45,按箱取整为 48,
|
||
订货后覆盖 3.3 天 < 保质期 5 天,安全。→ 列入「🔴 缺货」,建议采购 48。
|
||
- **吐司**(日均≈6.5,库存 30≈4.6天,保质期3天,曾有异常高峰):
|
||
现有库存可售 4.6 天 > 保质期 3 天 → 过期风险 + 波动大;短保上限算出为 0 → 建议采购 0。
|
||
→ 列入「🟠 过期」,解释「现有库存已超过保质期内能卖完的量,本期不建议进货」。
|
||
- **可乐**(日均≈20.5,库存 200≈9.7天,无保质期):
|
||
库存远高于覆盖期且无保质期 → 无风险,建议采购 0。→ 说明库存充足、暂不需补。
|
||
|
||
## Guidelines
|
||
|
||
- **生鲜底线**:保质期是硬约束,过期风险必须显著提醒,宁可小单勤补。
|
||
- 没有销量历史就**不要硬造预测**,直接说明缺数据并请用户补充。
|
||
- 缺失字段用默认参数兜底,但要在「预测解释」里**如实声明假设**,不要假装数据齐全。
|
||
- 读 Excel 先核对表头列含义,不要按列位置硬猜;列名中英文/带单位都可能出现。
|
||
- 结果要**可复现**:同样的数据与参数给同样的建议,便于回归与人工复核。
|
||
- 这是**辅助初算**,不替代采购/店长的最终判断;措辞用「建议/预计/需关注」,但建议量要具体可执行。
|