--- 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 先核对表头列含义,不要按列位置硬猜;列名中英文/带单位都可能出现。 - 结果要**可复现**:同样的数据与参数给同样的建议,便于回归与人工复核。 - 这是**辅助初算**,不替代采购/店长的最终判断;措辞用「建议/预计/需关注」,但建议量要具体可执行。