御越 Data & AI

方法

Demo 看板方法

以下说明从同一套指标定义和方法面板生成,不另写第二套口径。页面可公开访问;仓库文档不是网站路由。

本项目使用完全合成的模拟数据,不源自任何真实企业、客户或个人,不代表真实经营结果。 数据集 v1.2.0 · 数据截止 2025-12-31 · checksum 0a0f2ef38a584669a3a8296e5c4462fa3ea9e665d7fe3c81f7a9d7b4bdcc632e

促销增量

问题
会员唤醒活动有没有带来可投放的增量利润?
粒度
活动 × 随机分组客户;分群按会员标签汇总。转化按人、按 ITT。
窗口
活动期 2025-09-01 至 2025-09-28。对照组不享受折扣,但仍计入曝光。
为什么选择这些图表
置信区间图同时给出 lift 与不确定性,避免只看 raw lift。经济性桥接只从增量毛利扣除触达成本,因为折扣已经进入净收入和毛利。行动矩阵把转化、利润和 CI 状态放在同一平面。
可以支持
判断哪些分群值得小范围测试或优先投放,哪些只是转化上升但利润为负。
不能据此结论
不能把整体负 ROI 包装成成功案例,也不能在 CI 跨 0 或样本不足时扩大投放。结果来自合成实验,不代表真实客户。

KPI 公式

  • 活动组转化率 treatment_conversion

    活动期内下单的 treatment 客户数 / treatment 曝光客户数

    按人转化,不按券核销;同一客户多笔订单仍计 1 次转化。

  • 对照组转化率 control_conversion

    活动期内下单的 control 客户数 / control 曝光客户数

    对照组不享受活动折扣,但仍计入曝光,用于意图治疗估计。

  • 绝对提升 absolute_lift

    treatment_conversion - control_conversion

    绝对提升是百分点,不是相对百分比。

  • 相对提升 relative_lift

    absolute_lift / control_conversion

    对照组转化接近 0 时相对提升不稳定。

  • 绝对提升 95% 置信区间 lift_ci

    Wald:(p_t - p_c) ± 1.96 × sqrt(p_t(1-p_t)/n_t + p_c(1-p_c)/n_c)

    区间覆盖 0 或任一组 n<400 时仅作方向性结果,不能作为投放决策。

  • 增量订单 incremental_orders

    absolute_lift × treatment 曝光客户数

    按转化客户近似增量订单,不把同一人的多笔订单重复计为增量。

  • 增量收入 incremental_revenue

    treatment 净收入 - treatment人数 × (control 净收入 / control人数)

    收入已扣折扣;不要再用标价计算增量。

  • 增量毛利 incremental_gross_profit

    treatment 毛利 - treatment人数 × (control 毛利 / control人数)

    折扣已体现在净收入中,不再从毛利重复扣减。

  • 活动成本 campaign_cost

    触达成本合计 + treatment 订单折扣合计

    对照组无折扣;触达成本对 treatment 与 control 均计提。

  • 增量利润 incremental_profit

    incremental_gross_profit - 全部触达成本

    折扣已进入毛利,故增量利润只再扣触达成本,避免重复扣优惠。

  • 触达成本 outreach_cost

    Σ campaign_exposures.outreach_cost

    经济性桥接只扣触达成本。折扣已进入净收入和毛利,不得把全部 campaign_cost 再从增量毛利扣一遍。

  • 投入回报率 roi

    incremental_profit / campaign_cost

    本 Demo 保留整体负 ROI,用于说明转化提升不等于利润提升。分群行动需结合 95% CI、样本量和增量利润,不能只看 raw lift。

经营原因

问题
2025-08 相对 2025-07,销售收入为什么变化?
粒度
已成交订单(demo_orders)按自然月汇总;缺货影响按周库存估计后再按日历日均摊。
窗口
2025-08 vs 2025-07。收入、订单、客户、客单价、毛利率均来自已确认销售。
为什么选择这些图表
只有两个时点,所以用加法 waterfall 而不是伪时间序列。门店条形图按变化额排序,并给出上月收入。缺货图是周估计均摊,不是日级趋势。促销贡献是占比,不进入加法分解。
可以支持
核对收入变化主要由 Volume 驱动,并查看哪些门店和缺货估计需要跟进。
不能据此结论
不能据此谈论流量或转化,因为本数据集没有这些字段。也不能把四周完整周当成完整自然月缺货观测。

KPI 公式

  • 销售收入 revenue

    Σ 订单净额

    使用已完成并确认收入的订单净额,不是标价。件数与库存 sold_qty 按周×门店×SKU 对账。

  • 订单数 orders

    COUNT(订单)

    取消订单未模拟,无需剔除。

  • 成交客户数 customers

    COUNT(DISTINCT customer_id)

    不是会员池规模。

  • 客单价 average_order_value

    销售收入 / 订单数

    按订单平均,不是按客户平均。

  • 毛利率 gross_margin_rate

    Σ 毛利 / Σ 净收入

    毛利已扣折扣,不再扣触达成本。

  • 新客 / 老客结构 new_returning_mix

    新客成交人数 / 成交客户数;老客 = 1 - 新客

    新客按模拟历史定义,不是CRM入会日期的运营口径。

  • 价格 / 销量 / 结构贡献 price_volume_mix

    价格=Σ(p1-p0)·q1;销量=(Q1-Q0)·(R0/Q0);结构=Q1·Σ(s1-s0)·p0。p 为品类收入/销量,s 为销量占比

    三项各自计算。某一期销量为 0 时,该期均价用另一期均价。

  • 促销贡献 promotion_contribution

    活动标记订单净额 / 当月净额

    这是活动期订单占比,不是增量贡献。

  • 缺货影响 stockout_impact

    Σ(周 stockout_qty × 该周落在当月的覆盖日占比 × 该 SKU 当月实际净售价;无成交回退标价)

    周级估计的额外未满足需求,不是把已成交订单改写成缺货。sold_qty 等于对应周已确认订单件数;stockout_qty 是销售之外的估计流失;demand_qty = sold_qty + stockout_qty。不是日级缺货观测,也不是四个完整周等于完整自然月。

经营汇总查询

SELECT
  to_char(o.order_date, 'YYYY-MM') AS month,
  round(sum(o.net_amount), 2) AS revenue,
  count(*) AS orders,
  count(DISTINCT o.customer_id) AS customers,
  round(sum(o.net_amount) / nullif(count(*), 0), 2) AS average_order_value,
  round(sum(o.gross_profit) / nullif(sum(o.net_amount), 0), 4) AS gross_margin_rate
FROM public.demo_orders AS o
WHERE o.dataset_version = 'v1.2.0'
  AND o.order_date >= '2025-07-01'
  AND o.order_date < '2025-09-01'
GROUP BY 1
ORDER BY 1;

定价与库存

问题
在运行日,哪些门店×SKU 应优先清仓、补货、调拨、测价或观察?
粒度
运行日 × 门店 × SKU。分布与矩阵覆盖全部建议行,不是 24 条样本。
窗口
运行日 2025-12-29;窗口为截至该日的最近 8 个周初周一,最后一周为部分周。库存 as-of 2025-12-29。
为什么选择这些图表
信号构成用水平条而不是饼图,便于比较数量。库存天数直方图保留 180+ 封顶组。决策矩阵展示全体组合的库存×毛利密度,24 条清单只是配额样本。
可以支持
把人工复核集中到清仓、补货和调拨信号,并解释封顶与未封顶库存天数不可混比。
不能据此结论
不能把 24 条称为全局 Top 24,也不能把 180 天读成真实库龄恰好 180 天。建议价格是规则输出,需人工复核。

KPI 公式

  • 毛利率 gross_margin_rate

    (近期售价 - 成本) / 近期售价

    清仓品可能售价接近或低于成本。

  • 库龄 inventory_age

    选定快照日的 inventory_age_days

    禁止跨日期把库存数量加总。

  • 库存周转天数 inventory_days

    closing_qty × 窗口覆盖天数 / 窗口 sold_qty;连锁级仅销量≥4 的组合做 ratio-of-sums 后再换算为天数

    库存只取一个日期。180 是右删失/封顶值,不代表真实库存恰好为 180 天。不得静默删除封顶记录后再算中位数。周均销量分母必须与实际覆盖天数一致,不能按 9 个快照或按 8 个完整周硬除。

  • 售罄率 sell_through_rate

    窗口销量 / (窗口第一周 opening_qty + 窗口内 inbound_qty)

    分母用窗口第一周 opening,不用最后一周 opening,也不把销量加进分母。

  • 缺货率 stockout_rate

    stockout_qty > 0 的周次数 / 周快照次数

    按周计数,不按日库存加总。stockout_qty 是已成交销售之外的估计未满足需求,不能把已确认订单改写成缺货。

  • 滞销率 slow_moving_rate

    库龄≥60 且 8 周售罄率<0.25 的 SKU-门店数 / 全部 SKU-门店数

    滞销阈值是演示假设,不是行业标准。

  • 价差 price_gap

    (标价 - 近期成交价) / 标价

    正价差表示成交低于标价。

  • 预期需求变化 expected_demand_change

    -price_elasticity × (recommended_mid / recent_price - 1)

    公式与 lib/demo-data/formulas.ts 的 expectedDemandChange 一致。仅用于排序。

  • 建议价格区间 recommended_price_range

    按毛利、库龄和售罄率把标价约束在 70%–115%

    区间是规则引擎输出,需人工复核后再改价。

  • 全体组合封顶库存天数中位数 inventory_days_capped_median

    对全部门店×SKU 的 capped inventory_days 取中位数,含 180 封顶记录

    180 是右删失/封顶,不是真实库存恰好 180 天。

  • 全体组合封顶库存天数 P75 inventory_days_capped_p75

    对全部门店×SKU 的 capped inventory_days 取 75 分位,含 180 封顶记录

    与中位数同一口径,包含全部封顶记录。

  • 有动销组合未封顶库存天数中位数 inventory_days_moving_uncapped_median

    窗口 sold_qty>0 的组合,用 closing × 覆盖天数 / sold 取中位数,不封顶

    无动销组合没有未封顶天数。可大于 180。

  • 有动销组合未封顶库存天数 P75 inventory_days_moving_uncapped_p75

    窗口 sold_qty>0 的组合未封顶周转天数的 75 分位

    与有动销中位数同一口径。