Перейти к основному содержимому

Расчёты

Замер: 2026-08-14 · чем проверено: python3 scripts/docs/check_business_canon.py, DO-NOT-REGRESS, машинный канон Читать перед тем, как править любую бизнес-формулу.

Какой цели служит

Факты превращаются в ответы на вопросы, ради которых всё это затеяно: какой товар выгоден, не замораживаем ли мы деньги в остатках, что везти на склад площадки сейчас.

Для чего это нужно

Сами по себе продажи и остатки ничего не говорят: два товара с одинаковой выручкой могут быть один — удачей, другой — убытком. Рейтинг отвечает «что закупать», оборачиваемость — «не лежит ли товар мёртвым грузом», отгрузка — «что везти прямо сейчас». Всё остальное в системе — доставка данных к этим трём ответам.

Отдельное требование к ответам — они обязаны опираться на реальные продажи (выкуплено минус возвраты), а не на заказы и корзины: заказ ещё может быть отменён, и решение по нему — это решение по воздуху.

Что станет невозможным без этого

Планирование закупок и отгрузок: без рейтинга товар выбирается наугад, без отгрузки склад площадки пополняется по наитию. Отгрузка — рабочий инструмент, которым пользуются ежедневно, и потерять его нельзя.

Какой ценой это даётся

Формула — это упрощение реальности, закреплённое в каноне. Ошибка в формуле дороже ошибки в данных: она тиражируется во все витрины и в отгрузку сразу. Поэтому код сверяется с каноном, а не наоборот, и любые две денежные величины, которые нельзя складывать, обязаны оставаться разными колонками.

Что здесь работает, а что только объявлено

Рейтинг и оборачиваемость защищены проверками на реальные продажи за вычетом возвратов. Отгрузка работает и используется ежедневно, но в этой волне её не перепроверяли и не меняли: это неприкосновенная область.

Как это устроено

Канон — в machine-rules, правила по каждой величине — в business-rules. Код — блок «Расчёты» и блок «Ядро (ETL)».