# E2E report: reports-stats Запущен: 2026-05-26T07:02:56.545Z Длительность: 3.0с **Итог:** 5 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 5) ## ✓ Step step01_bootstrap: Орг A + товар + приёмка (остаток под продажи) Длительность: 1544мс | Тип | Проверка | Результат | |---|---|---| | api | Орг A с товаром и остатком готова | ✓ 168ac2c6-f257-4b71-b5e6-997ce6777abc | ## ✓ Step step02_stats_reflect_posted_sales: stats: RevenueToday/Transactions/AvgTicket = сумме проведённых чеков, серия непрерывна Длительность: 405мс | Тип | Проверка | Результат | |---|---|---| | api | Проведено 3 чека | ✓ totals=600,500,400 | | api | GET stats → 200 | ✓ status=200 | | api | RevenueToday == Σ проведённых чеков | ✓ today=1500 expected=1500 | | api | TransactionsToday == 3 | ✓ tx=3 | | api | RevenueThisMonth == RevenueToday (все чеки сегодня) | ✓ month=1500 | | api | AvgTicketThisMonth == Revenue/Transactions | ✓ avg=500 expected=500.00 | | api | Серия длиной 30 дней (default) | ✓ len=30 | | api | Последний бакет серии (сегодня) == RevenueToday | ✓ last={rev:1500,tx:3} | ## ✓ Step step03_draft_sale_excluded: Черновик чека (не проведён) не попадает в stats Длительность: 49мс | Тип | Проверка | Результат | |---|---|---| | api | Черновик чека создан (Status=Draft) | ✓ status=201 | | api | RevenueToday не изменился (черновик исключён) | ✓ today=1500 expected=1500 | | api | TransactionsToday остался 3 | ✓ tx=3 | ## ✓ Step step04_stats_tenant_isolated: stats орг A не видит продажи орг B и наоборот Длительность: 988мс | Тип | Проверка | Результат | |---|---|---| | api | Орг B готова | ✓ | | api | В орг B проведён 1 чек | ✓ total=600 | | api | stats орг A не включает продажу орг B | ✓ A.today=1500 A.tx=3 | | api | stats орг B == только её 1 чек | ✓ B.today=600 B.tx=1 | ## ✓ Step step05_days_param_and_gaps: Параметр days меняет длину серии; профит/ABC-отчёты отсутствуют (gap) Длительность: 24мс | Тип | Проверка | Результат | |---|---|---| | api | days=7 → серия длиной 7 | ✓ len=7 | | api | Отчётов /api/reports/* нет (ожидаемо 404) | ✓ profit=404 sales=404 | ## Summary - Passed: 5 - Failed: 0 - Warnings: 0 - Skipped: 0 ## Critical bugs Нет. ## Logic gaps - ТЗ 2.12: отчёт «прибыль» (выручка − себестоимость по Cost-снимку RetailSaleLine) не реализован — RetailSaleLine не хранит снимок себестоимости, /stats отдаёт только валовую выручку. - ТЗ 2.12: ABC-анализ, «остатки на дату» (SUM Movement до даты) и экспорт CSV/XLSX отсутствуют — отдельного ReportsController нет.