qwen_agent/skills/developing/store-replenishment-forecast/SKILL.md
2026-06-15 13:36:21 +08:00

175 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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(无促销) |
> 生鲜场景里**保质期/货架期至关重要**,尽量从商品主数据读到;读不到就保守假设一个短值
> (如 35 天)并明确告知用户这是假设。
读 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 计算**:按「预测方法」第 111 步,算出每个 SKU 的建议采购量与诊断指标。
3. **判风险**:按「风险标记」判定每个 SKU 的缺货/过期/积压/数据风险。
4. **成稿**:写「采购建议清单 + 预测解释 + 风险提醒」三段式报告。
## Examples
### 示例:三类典型 SKU
- **鲜牛奶**日均≈16.8,库存仅 8≈0.5天保质期5天箱规6
库存 < 再订货点 缺货风险覆盖期需求+安全库存库存45按箱取整为 48
订货后覆盖 3.3 < 保质期 5 安全。→ 列入「🔴 缺货」,建议采购 48
- **吐司**日均6.5库存 304.6天保质期3天曾有异常高峰
现有库存可售 4.6 > 保质期 3 天 → 过期风险 + 波动大;短保上限算出为 0 → 建议采购 0。
→ 列入「🟠 过期」,解释「现有库存已超过保质期内能卖完的量,本期不建议进货」。
- **可乐**日均≈20.5,库存 200≈9.7天,无保质期):
库存远高于覆盖期且无保质期 → 无风险,建议采购 0。→ 说明库存充足、暂不需补。
## Guidelines
- **生鲜底线**:保质期是硬约束,过期风险必须显著提醒,宁可小单勤补。
- 没有销量历史就**不要硬造预测**,直接说明缺数据并请用户补充。
- 缺失字段用默认参数兜底,但要在「预测解释」里**如实声明假设**,不要假装数据齐全。
- 读 Excel 先核对表头列含义,不要按列位置硬猜;列名中英文/带单位都可能出现。
- 结果要**可复现**:同样的数据与参数给同样的建议,便于回归与人工复核。
- 这是**辅助初算**,不替代采购/店长的最终判断;措辞用「建议/预计/需关注」,但建议量要具体可执行。