docs(sprint3): P1-8 done

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
nns 2026-05-28 11:10:05 +05:00
parent ac77849901
commit 76380d86bf

View file

@ -9,10 +9,14 @@ Multi-tenant: все запросы фильтруются по `OrganizationId`
## Чек-лист
1. [ ] **P1-8 Отчёт «Продажи»**`/api/reports/sales` с группировкой по период
1. [x] **P1-8 Отчёт «Продажи»**`/api/reports/sales` с группировкой по период
(день/неделя/месяц), товар, кассир, касса, способ оплаты; фильтры
(от/до, магазин, группа товаров). Web `/reports/sales`: фильтр периода,
табы по группировкам, экспорт CSV+XLSX.
✅ Реализация: проекция в плоский ряд на сервере + агрегация в C#
(EF8 не переводит «distinct count» в group-проекции с nullable-ключами).
`CsvHelper` + `ClosedXML`. Bonus: исправлен баг `RetailSalesController.Update`
(DbUpdateConcurrency на свеже-созданном возврате). 5 интеграционных тестов.
2. [ ] **P1-9 Отчёт «Остатки на дату»**`/api/reports/stock` восстанавливает
остатки на произвольную дату через журнал `StockMovement` (Σ движений до
даты по продукту). Web `/reports/stock`: выбор даты, фильтр магазин/группа,