17 тысяч заказов из моего кабинета: карта того, как Wildberries латал сеть

Подмосковный склад теперь снабжает Урал и Кавказ

17 тысяч заказов из моего кабинета: карта того, как Wildberries латал сеть

Я производитель детской одежды, продавец на Wildberries и немного вайбкодер (пишу для себя свой сервис статистики по WB). Когда из логистики WB выпала половина моих складов, я построил матрицу «склад → округ» и увидел, как площадка переклеила сеть за две недели.

Причина

С 18 июля по 5 августа 2026 года беспилотники били по складам и логистическим центрам Wildberries. Из моей логистики выпало одиннадцать складов: Электросталь, Краснодар, Невинномысск, Шушары, Рязань, Пенза, Сарапул, Волгоград, Самара, Владимир и Тула. На них приходилось 62.4% всех моих отгрузок.

Гипотеза

Что срок доставки вырастет — очевидно, и это я уже посчитал: быстрая доставка (менее 2-х дней) схлопнулась с 20–27% до 0.7%. Но это ответ на скучный вопрос «стало ли хуже». Интереснее другой: как и на какие склады WB перебросил заказы на мои товары?

Если сеть — это граф, то выбивание узлов должно перестроить маршруты по какому-то принципу. По какому именно — из среднего срока не видно. Нужна матрица: строки — склады отгрузки, столбцы — округа доставки, в ячейке — насколько изменилась доля склада в снабжении округа.

Инструмент

Вопрос про матрицу возник через две недели после того, как я собрал данные. И построить её удалось только потому, что я храню сырые события, а не агрегаты.

Мой сервис статистики тянет /api/v1/supplier/orders — каждая строка это один заказ: srid, дата, warehouseName (склад отгрузки), oblastOkrugName и regionName (куда везут), isCancel. Один GET-запрос отдаёт всю историю за 90 дней, глубже WB не хранит. Всё это ложится в базу построчно.

Сама матрица считается так. Берём два окна: «до» — с 1 июня по 17 июля, «после» — с 25 июля по 4 августа. Внутри каждого округа считаем долю каждого склада в отгрузках. Вычитаем. Получаем изменение в процентных пунктах.

Четыре решения, которые пришлось принять по дороге.

Доли, а не штуки. Объём заказов гуляет по неделям — сезон, реклама, распродажи. Абсолютные числа смешают эффект перекладки с эффектом спроса. Доля внутри округа от этого свободна: она отвечает строго на вопрос «чем именно снабжается этот округ».

Порог отсечения. В матрице десятки складов с долей меньше процента — единичные заказы через сортировочные центры. Оставил только те пары «склад × округ», где доля хотя бы в одном периоде превышает 6%. Иначе таблица превращается в шум.

Выброшенная неделя. Между окнами разрыв: 18–24 июля не входит ни в «до», ни в «после». Это не потеря данных, а сознательное исключение переходного периода — в эти семь дней сеть была в процессе развала. Электросталь уже стояла на нуле с 18-го, а Краснодар ещё отгружал 6.1% и умер только 22-го. Отнести такую неделю к «до» — значит занести в базу уже случившиеся потери; отнести к «после» — разбавить итог складами, которые ещё работали.

Проверил, насколько выбор границы влияет на выводы. Если разрыв убрать и считать «после» прямо с 18 июля, картина сохраняется полностью: Коледино растёт в тех же семи округах из восьми и падает на Дальнем Востоке, Урал остаётся на первом месте. Меняются только величины — на Урале +13.5 пункта вместо +20.1, потому что переходная неделя разбавляет ещё не завершённой перекладкой. Знаки и порядок устойчивы.

Честность про окно «после». Оно захватывает 25 июля — 4 августа, а Самара и Владимир отгружали до 2 августа. В матрице они выглядят живыми, хотя уже мертвы. Это не баг, а ограничение: чистое «после» — это только 3–4 августа, а там всего 144 заказа, на матрицу не хватает. Так что читать надо как снимок процесса перекладки, а не как итоговое состояние.

Плюс одна цифра поверх матрицы — индекс Херфиндаля-Хиршмана (HHI). Берём долю каждого склада в процентах, возводим в квадрат, складываем. Один склад на 100% даёт 10 000, десять равных по 10% — 1000. Ниже 1500 сеть считается распределённой, выше 2500 — концентрированной. Стандартная мера из антимонопольного анализа, здесь она отвечает на вопрос «на скольких ногах стоит снабжение».

Интерпретация

17 тысяч заказов из моего кабинета: карта того, как Wildberries латал сеть

Матрица: изменение доли склада в отгрузках каждого федерального округа

Красные полосы — это выбитые узлы, и они непропорциональны. Краснодар держал 58.4% Юга и 46.5% Северного Кавказа. Электросталь — 36.3% Северо-Запада и четверть Центра. Один склад отвечал за больше половины округа. До удара это выглядело как эффективность: короткое плечо, дешёвая логистика, быстрая доставка. После удара это оказалось точкой отказа.

Коледино стало универсальным затыкателем дыр. Оно выросло в семи округах из восьми: +21.2 пункта на Урале, +15.8 на Кавказе, +12.4 на Юге, +12.3 в Поволжье, +9.3 в Сибири. Подмосковный склад теперь снабжает Урал и Северный Кавказ.

17 тысяч заказов из моего кабинета: карта того, как Wildberries латал сеть

Рост доли склада Коледино в отгрузках по округам

Вот здесь и прячется вся цена событий. Товар не исчез — WB его перераспределил, и с точки зрения наличия всё в порядке. Но плечо удлинилось на полстраны, и именно за это платит покупатель ожиданием, а продавец — отказами.

Екатеринбург — единственная строка, где красное и синее одновременно. Он потерял свои домашние округа (−26.7 Урал, −21.1 Сибирь), но прибавил в Центре и на Северо-Западе. Склад при этом жив и работает.

Это заставило меня уточнить, что вообще показывает матрица. Она показывает не логистику WB как таковую, а распределение моего товара по ней. «Склад выпал из округа» не значит, что склад не работает — значит, что мой товар туда больше не едет. Екатеринбург не ослаб: с него разъехались остатки, чтобы закрыть дыры в других регионах, а его собственные округа отдали Коледино. Матрица — это карта моего товара, а не карта чужих складов.

Цепная реакция читается по столбцу Северо-Запада. После гибели Электростали и Шушар округ ушёл на Владимир: +15.2 пункта. Владимир отгрузил последний заказ 2 августа и сгорел 3-го. Замена умерла следом за оригиналом.

С Самарой то же самое, только масштабнее: она подхватила нагрузку во всех восьми округах — и выгорела целиком 2 августа.

И третий раз подряд, уже пока я дописывал этот текст. Посмотрите строку Тулы в матрице: она добрала +8.6 пункта на Кавказе, +6.0 на Юге, +6.0 на Северо-Западе, +5.3 на Дальнем Востоке — то есть закрывала собой ровно те округа, которые осиротели после Краснодара, Невинномысска и Электростали. 5 августа Тулы не стало.

Логика здесь простая и неприятная: WB перебрасывает нагрузку на ближайшие живые склады, а удары приходятся по географическим кластерам. Значит, замена статистически оказывается в зоне следующего удара. Резервирование, построенное на близости, не резервирует — оно просто переносит риск на соседа и выигрывает несколько дней.

Самое контринтуитивное — кто пострадал сильнее.

17 тысяч заказов из моего кабинета: карта того, как Wildberries латал сеть

Доля доставок за 7 дней по округам до и после 18 июля

Юг просел вдвое сильнее Дальнего Востока: доля доставок за неделю упала с 46.6% до 26.2%, тогда как у Дальнего Востока с 14.5% до 12.5%. Матрица объясняет почему: Юг снабжался одним складом на 58.4%, и когда он выпал, заменять оказалось нечем — пришли Волгоград, Самара и Коледино, каждый по чуть-чуть. А Дальний Восток изначально ехал десять дней по магистрали, и смена склада отправления при таком плече не меняет почти ничего.

Вывод, который я бы раньше не сформулировал: уязвимость определяется концентрацией снабжения, а не расстоянием. Дальний Восток выглядел плохим регионом — самый долгий срок, самая дорогая логистика. Он оказался самым устойчивым. Юг выглядел отличным — три дня доставки, короткое плечо. Он оказался самым хрупким. Скорость и надёжность в этой сети — разные, местами противоположные вещи.

Итог по концентрации.

17 тысяч заказов из моего кабинета: карта того, как Wildberries латал сеть

Концентрация сети отгрузки до атак и после

До атак у меня было 29 точек отгрузки, крупнейшая занимала 16.0%, HHI = 940.

К 3–4 августа осталось пять складов на 93% отгрузок, HHI вырос до 2190. После потери Тулы остаётся четыре: Коледино 39.6%, Екатеринбург 28.0%, Казань 15.7%, Котовск 6.7% — вместе 90%. HHI ≈ 2680, то есть сеть перешагнула порог, за которым концентрация считается высокой.

Практический смысл прямой: каждая следующая потеря стоит дороже предыдущей. Когда выпадала Электросталь, её 15% разбирал десяток складов, и это почти не было заметно на общем сроке. Когда выпала Тула, разбирать было уже некому — её доля просто перетекла в Коледино, которое теперь отгружает почти сорок процентов всего моего товара. Если встанет оно, заменить будет нечем: у оставшихся трёх складов нет ни объёма, ни географии, чтобы закрыть страну.

Что с этим делать

Матрица подсказала метрику, которой мне не хватало. Все считают срок доставки — он в кабинете, он в каждом сервисе аналитики. Никто не считает, из скольких источников этот срок обеспечен.

Срок — следствие. Концентрация — причина. Если один склад закрывает больше половины региона, ваш прекрасный трёхдневный срок держится на одной точке, и вы узнаете об этом в тот день, когда точки не станет.

Все данные и посчитаны внутри своего сервиса аналитики, который довожу до беты для других продавцов. Данные — мой личный кабинет, период март–август 2026.

Хотите обсудить статью - добро пожаловать в коментарии.