# 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 нет.
