Расчёты
Замер: 2026-08-14 · чем проверено:
python3 scripts/docs/check_business_canon.py, DO-NOT-REGRESS, машинный канон Читать перед тем, как править любую бизнес-формулу.
Какой цели служит
Факты превращаются в ответы на вопросы, ради которых всё это затеяно: какой товар выгоден, не замораживаем ли мы деньги в остатках, что везти на склад площадки сейчас.
Для чего это нужно
Сами по себе продажи и остатки ничего не говорят: два товара с одинаковой выручкой могут быть один — удачей, другой — убытком. Рейтинг отвечает «что закупать», оборачиваемость — «не лежит ли товар мёртвым грузом», отгрузка — «что везти прямо сейчас». Всё остальное в системе — доставка данных к этим трём ответам.
Отдельное требование к ответам — они обязаны опираться на реальные продажи (выкуплено минус возвраты), а не на заказы и корзины: заказ ещё может быть отменён, и решение по нему — это решение по воздуху.
Что станет невозможным без этого
Планирование закупок и отгрузок: без рейтинга товар выбирается наугад, без отгрузки склад площадки пополняется по наитию. Отгрузка — рабочий инструмент, которым пользуются ежедневно, и потерять его нельзя.
Какой ценой это даётся
Формула — это упрощение реальности, закреплённое в каноне. Ошибка в формуле дороже ошибки в данных: она тиражируется во все витрины и в отгрузку сразу. Поэтому код сверяется с каноном, а не наоборот, и любые две денежные величины, которые нельзя складывать, обязаны оставаться разными колонками.
Что здесь работает, а что только объявлено
Рейтинг и оборачиваемость защищены проверками на реальные продажи за вычетом возвратов. Отгрузка работает и используется ежедневно, но в этой волне её не перепроверяли и не меняли: это неприкосновенная область.
Как это устроено
Канон — в machine-rules, правила по каждой величине — в business-rules. Код — блок «Расчёты» и блок «Ядро (ETL)».