docs(sprint3): P1-10 done

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
nns 2026-05-28 11:19:32 +05:00
parent 3db112cbee
commit 9795eeeafc

View file

@ -25,9 +25,12 @@ Multi-tenant: все запросы фильтруются по `OrganizationId`
Стоимость — последний `UnitCost` движения до даты + fallback на `Product.Cost`.
Edge'ы покрыты тестами: 5 интеграционных (today=current, before-first→empty,
future=current, future-supply исключается на «сегодня», tenant-изоляция).
3. [ ] **P1-10 Отчёт «Прибыль»**`/api/reports/profit` = выручка себестоимость
3. [x] **P1-10 Отчёт «Прибыль»**`/api/reports/profit` = выручка себестоимость
по периодам/группам/товарам. Cost-snapshot уже есть в `RetailSaleLine`
(через `UnitCost` movement'а). Защита от деления на ноль при нулевой выручке.
✅ Cost-snapshot — `Product.Cost` (скользящее среднее; точный FIFO потребует
партий и вынесен из scope). Margin = profit/revenue·100, при revenue=0
возвращаем 0. Возврат вычитает и выручку, и COGS симметрично. 3 интеграционных.
4. [ ] **P1-11 Отчёт «ABC-анализ»** — топ товаров по выручке за период,
классы A/B/C по Парето (A=80%, B=15%, C=5% накопительной выручки).
Параметр метрики (выручка/прибыль/маржа). Web с визуализацией.