Полная регрессия всех сценариев + 6 новых областей этой сессии (employees, roles, superadmin-console, platform-smtp, auth-password, security-edge). За день исправлено 4 бага: уволенный сотрудник логинится (P0), конкурентное проведение приёмки ломает инвариант (critical), refresh не гасится после ротации (high), change-owner принимал короткий reason (medium). Нереализованный по ТЗ функционал (отчёты/склад-документы/POS/permission-authz/login-ratelimit) зафиксирован как Logic gaps. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
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 нет.