一份“库存健康”的周报,盖住了两种完全不同的销售
先把模拟场景的数据摊开(以下均为示例数据)。某球队主场球衣首批备货10000件,分布在四个位置:线上仓3500件、城市门店2000件、体育场商店2500件、区域总仓2000件。上线14天后,线上卖出3150件,城市门店卖出900件,体育场商店只卖出420件。合计售出4470件,整体售罄率约45%。按过去同类球衣的节奏,这个数字落在“正常偏好”的区间里,周报于是写下了“库存健康”。
如果按渠道拆开,画面就变了:线上的售罄率是90%,热门尺码几天内就会断货;体育场商店的售罄率不到17%,还剩2080件,而且这是已经经历了两场主场比赛之后的结果。总数平均下来看起来很健康,实际上一端在缺货,一端在积压。这是体育零售里最常见的错觉:用一个总库存数字,替代了四个位置各自的真实状况。
欧宝体育在做体育零售管理时,第一条原则就是不接受只有 Total Inventory 的判断。任何一件商品,至少要拆成 Online、Store、Stadium、Warehouse 四个库存位置来看,再叠加每个位置的需求来源和时间节奏。
线上用户是在“找”,体育场观众是在“遇到”
为什么同一件球衣在两个渠道表现差这么多?先看购买动机。线上用户多数是带着目的来的:搜索“主场球衣”、点进新品页、比较尺码、下单。他们在打开商城之前就已经想买,渠道只是把商品递到面前。影响线上转化的,主要是搜索曝光、页面位置、价格和物流时效。
体育场观众的购买发生在一段很窄的时间里,而且很少是提前计划好的。进场前他们想的是找座位,路过商店只是看一眼;中场休息只有十五分钟,买饮料、去洗手间和逛商店在抢同一段时间;比赛结束后,情绪决定他们会不会走进店里。影响现场销售的因素要复杂得多:
- 比赛结果与比赛过程:主队赢球、逆转、有球员打进关键进球,赛后进店率会明显上升;输球或者比赛沉闷,观众更倾向于直接离场。
- 情绪与身份:已经穿着旧款球衣来看球的老球迷,未必需要在现场再买一件;带孩子第一次来看球的家庭,反而更容易买儿童尺码。
- 时间窗口:赛前一小时、中场休息、赛后三十分钟,是三个完全不同的销售时段,客流方向和停留时长都不一样。
- 人流动线:商店是否在主要入口和地铁站之间的必经路线上,决定了有多少人“顺路”看到它。
- 门店位置与容量:收银台数量、试衣空间、排队长度,会直接截掉一部分本来愿意购买的人。
所以,线上卖得好只能说明“有人想要这件球衣”,并不能说明“体育场观众会在那个时间、那个位置买它”。两个渠道面对的是同一支球队的球迷,却处在不同的决策场景里。
同一座体育场里,三家商店也不是同一种店
继续拆模拟场景。体育场的2500件球衣分布在三处:东侧入口旗舰店1200件、主队看台下方的看台店800件、客队看台附近的临时摊位500件。两场主场比赛后的示例数据是:旗舰店卖出260件,看台店卖出150件,临时摊位只卖出10件。
临时摊位几乎不动并不奇怪:它离客队球迷区更近,路过的人里有相当比例并不支持主队。把500件主场球衣放在那里,本身就是一个位置错误。旗舰店和看台店的问题更细一些——旗舰店在入口处,赛前人流大,但观众急着进场;看台店离座位近,中场时间来得及,可店里只有两个收银台,中场高峰排队超过八分钟,不少人看了一眼就回座位了。
这意味着体育零售AI必须下沉到门店级别,甚至到门店内的陈列位置和时段。如果只知道“体育场渠道卖得慢”,给出的建议往往是“体育场降价”或“体育场少备货”,而真实的问题可能是某个摊位放错了商品、某家店收银能力不足。
城市门店也一样。示例数据中卖出的900件,有六成来自两家位于大型商圈、周末客流稳定的门店,另外几家社区店两周只卖出几十件。社区店的顾客更多是来买训练服和跑鞋的,主场球衣对他们来说是“看到了也不一定需要”的商品。把城市门店当成一个整体去补货,同样会把库存送到不需要它的地方。
按时段和比赛结果拆开销售,才看得到真实速度
体育场商店一个赛季可能只有二十来个主场比赛日,非比赛日客流很少。用“每天卖了多少”去衡量它,会得到一个很低、而且没有意义的平均数。更合理的度量是比赛日内的分时段销售速度(sales velocity):每十五分钟卖出多少件、每个尺码卖出多少件、进店人数和成交件数的比例。
在模拟数据中,旗舰店第一场主场比赛(主队赢球)的销售分布是:赛前一小时45件、中场35件、赛后三十分钟90件;第二场(主队输球)分别是50件、30件、10件。两场加起来260件,但赛后时段相差九倍。如果只看“两场平均每场130件”,就会错过最关键的信息:这家店对比赛结果高度敏感,赢球后的赛后窗口才是它的主力时段。怎样用实时销售速度判断补货时机,可以参考比赛现场商店的补货判断里更细的拆法。
| 渠道 | 主要驱动 | 合适的度量 | 容易误读的地方 |
|---|---|---|---|
| Online 线上商城 | 搜索、推荐位、价格、物流 | 日销量、转化率、尺码缺货率 | 把线上热度当作全渠道需求 |
| Store 城市门店 | 商圈客流、陈列、会员活动 | 周销量、坪效、库存周转天数 | 忽略不同商圈之间的差异 |
| Stadium 体育场商店 | 比赛结果、时段、动线、收银能力 | 比赛日分时段销售速度、进店转化 | 用日均销量衡量比赛日渠道 |
| Warehouse 仓库 | 调拨与补货能力 | 可调拨量、补货时效 | 把在库量当作可卖量 |
总库存的“健康”,常常是四个位置互相抵消的结果
回到库存。示例数据里,14天后四个位置的剩余量是:线上350件、城市门店1100件、体育场2080件、总仓2000件,合计5530件。按过去两周的整体速度,还够卖两周半左右,看起来并不紧张。但换成按位置计算的可售天数,结论完全不同:线上按每天约225件的速度,不到两天就会卖空;城市门店大约还能撑两周半;体育场如果按比赛日节奏计算,剩下的主场场次未必消化得完;总仓的2000件,则取决于能多快调到需要的地方。
更麻烦的是尺码。线上最先断货的是M码和L码,而体育场剩下的2080件里,M码和L码恰好占了六成。整体看,公司“有货”;从一个线上用户的角度看,他要的尺码已经没了。这种错配,在总库存报表里完全看不见。
因此欧宝体育的 Inventory Engine 记录库存时,以“商品 × 尺码 × 位置 × 可售状态”为最小单位:在途、锁定、展示样品、已经预留给会员活动的库存,都不算作可售库存。只有这样,Retail Analytics 算出的周转和缺货风险才有意义。
Channel + Store + Inventory + Demand + Event:一个判断要同时看五件事
把前面的拆解合起来,体育零售AI在回答“这件球衣要不要调整”时,至少要同时读五类信息:
- Channel:商品在 Online、Store、Stadium、Warehouse 各自的销售和库存是什么,渠道之间有没有明显的速度差。
- Store:同一渠道内哪些门店在拖后腿,是位置问题、商品组合问题,还是收银和陈列能力问题。
- Inventory:按尺码和位置算出的可售天数,哪些位置即将缺货、哪些位置正在积压。
- Demand:需求来自哪里——搜索增长、会员复购、新球迷首次购买,还是某位球员带来的短期关注。
- Event:未来两到四周有哪些主场比赛、对手是谁、有没有关键场次或纪念日,这些会改变体育场渠道的需求节奏。
五类信息里只看一类都会出错。只看 Channel,会得出“线上好、现场差”的粗糙结论;只看 Inventory,会觉得总量足够;只看 Demand,又容易把线上的搜索热度外推到所有渠道。它们需要放在同一张视图里互相校验:线上需求强、体育场库存高、但下周有一场关键主场比赛,这三条放在一起得出的结论,和分别看任何一条都不一样。
优化动作:调拨、换位、改时段,而不是简单降价
在模拟场景里,基于上面的判断,更合理的动作组合大致是:
- 先补线上尺码缺口:从总仓调出M码、L码补给线上,而不是等体育场的库存退回,因为总仓到线上仓的路径更短。
- 体育场内部换位:撤回客队区摊位的主场球衣,换成围巾、帽子等单价低、不强依赖主队身份的商品;主场球衣集中到旗舰店和看台店。
- 为赛后窗口准备人手:在赢球后的三十分钟里加开临时收银,而不是在整个比赛日平均增加人手。
- 有限度地回流:体育场剩余量中,超出后续主场比赛预计消化能力的部分,分批调往销售速度较快的城市门店。
这里并没有“把体育场库存全部调到线上”这一项。线上卖得快,不代表所有库存放到线上就最优:调拨有成本,线上和现场的价格与促销节奏不同,下一个主场比赛日体育场也需要足够的陈列量。这部分取舍,在线上卖得好为什么不能把库存全部调到线上一文中有更完整的讨论。
每一个动作执行之后,还要回头验证。换位之后,看台店和旗舰店的赛后销售速度有没有上升;加开收银之后,中场排队时长和放弃率有没有下降;回流到城市门店的球衣,两周内的售罄率是否高于留在体育场的部分。没有这一步,调整就只是换了一种猜法。
下一步该看的,不是总销量,而是三张拆开的表
如果一个体育零售团队想检验自己有没有掉进“总数健康”的陷阱,可以先做一件很简单的事:拿出最近一个赛季主推的三款商品,分别按渠道、按门店、按比赛日时段各拉一张表。只要其中任何一张表里出现“一端缺货、一端积压”,而总报表却一直是绿色,就说明管理口径太粗了。
体育零售管理不是只看总销量,而是理解商品在哪个渠道、哪个地点、什么时间卖得动。线上的热度是真实信号,但它回答的只是“有没有人想要”;体育场商店要回答的是“那个人会不会在那个时刻、那个位置买它”。在Sports Retail AI的框架里,前者是需求,后者才是销售,两者之间隔着渠道、门店、库存位置和比赛本身。