food-market/tests/e2e/scenarios
nns 97d5ae5eb0
Some checks are pending
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
fix(reports): 3 фикса по итогам stage-тестирования
1. **DateTime Kind=Unspecified → UTC** в ResolveRange / AsUtc.
   ASP.NET парсит 'from=2026-05-29' с Kind=Unspecified, Npgsql 8
   отказывается слать такие в timestamp with time zone (500).
   Принудительно конвертим Unspecified→UTC (трактуем как полночь
   UTC), Local→ToUniversalTime. Применено к Sales/Profit/ABC/Stock.

2. **Enter.Post теперь пересчитывает Product.Cost** по той же
   формуле скользящего среднего что Supply.Post. Без этого товары,
   попавшие в систему через Оприходование (а не через Supply),
   имели Cost=0 — Profit/ABC-отчёты показывали cost=0 и неверную
   маржу. Воспроизведение: Enter 100@30 + RetailSale 10@500 →
   Profit-отчёт показывал revenue=5000, cost=0 (должно cost=300).

3. **ABC report: Парето-граница по cumBefore (а не cumAfter).**
   Единственный товар с cumShare=100% валился в класс C, хотя
   полностью покрывает Парето — должен быть A. Чиним: товар
   принадлежит классу A если он нужен чтобы пересечь порог
   80% (cumBefore < 80%). Стандартный Парето-алгоритм.

stage-reports (8 шагов): Sales/Stock/Profit/ABC + CSV/XLSX
export + edge — все зелёные.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 17:35:31 +05:00
..
auth-edge.steps.ts test(e2e): scenarios auth-edge, catalog-edge, stock-invariant-deep 2026-05-26 11:03:47 +05:00
auth-edge.yml test(e2e): scenarios auth-edge, catalog-edge, stock-invariant-deep 2026-05-26 11:03:47 +05:00
auth-password.steps.ts test(e2e): scenarios platform-smtp + auth-password 2026-05-26 11:56:29 +05:00
auth-password.yml test(e2e): scenarios platform-smtp + auth-password 2026-05-26 11:56:29 +05:00
catalog-edge.steps.ts test(e2e): scenarios auth-edge, catalog-edge, stock-invariant-deep 2026-05-26 11:03:47 +05:00
catalog-edge.yml test(e2e): scenarios auth-edge, catalog-edge, stock-invariant-deep 2026-05-26 11:03:47 +05:00
documents-edge.steps.ts test(e2e): scenario documents-edge — критичные edge-кейсы посту 2026-05-23 12:33:51 +05:00
documents-edge.yml test(e2e): scenario documents-edge — критичные edge-кейсы посту 2026-05-23 12:33:51 +05:00
employees.steps.ts test(e2e): scenario employees — CRUD, увольнение гасит логин, tenant-изоляция 2026-05-26 11:47:57 +05:00
employees.yml test(e2e): scenario employees — CRUD, увольнение гасит логин, tenant-изоляция 2026-05-26 11:47:57 +05:00
full-cycle.steps.ts test(e2e): починка контрактов supply/sale + EAN-13 + bug-hunt + full-pass отчёт 2026-05-08 11:01:56 +05:00
full-cycle.yml feat(e2e): infrastructure + first full-cycle scenario + baseline report 2026-05-08 00:05:52 +05:00
moysklad-import.steps.ts test(e2e): scenario moysklad-import + mock-сервер MoySklad 2026-05-26 11:27:16 +05:00
moysklad-import.yml test(e2e): scenario moysklad-import + mock-сервер MoySklad 2026-05-26 11:27:16 +05:00
multi-tenant-isolation.steps.ts test(e2e): scenario multi-tenant-isolation — 12 шагов проверки изоляции 2026-05-23 12:25:05 +05:00
multi-tenant-isolation.yml test(e2e): scenario multi-tenant-isolation — 12 шагов проверки изоляции 2026-05-23 12:25:05 +05:00
platform-smtp.steps.ts test(e2e): scenarios platform-smtp + auth-password 2026-05-26 11:56:29 +05:00
platform-smtp.yml test(e2e): scenarios platform-smtp + auth-password 2026-05-26 11:56:29 +05:00
reports-stats.steps.ts test(e2e): scenario reports-stats — дашбордная выручка + tenant-изоляция 2026-05-26 11:18:54 +05:00
reports-stats.yml test(e2e): scenario reports-stats — дашбордная выручка + tenant-изоляция 2026-05-26 11:18:54 +05:00
roles.steps.ts test(e2e): roles step08 проверяет permission-enforcement + rate-limit конфигурируем 2026-05-27 02:41:52 +05:00
roles.yml test(e2e): roles step08 проверяет permission-enforcement + rate-limit конфигурируем 2026-05-27 02:41:52 +05:00
security-edge.steps.ts test(e2e): scenario security-edge — auth-гейт, traversal, SQLi, tenant, CORS 2026-05-26 11:58:54 +05:00
security-edge.yml test(e2e): scenario security-edge — auth-гейт, traversal, SQLi, tenant, CORS 2026-05-26 11:58:54 +05:00
stage-catalog.steps.ts fix(catalog): EF8 nav-collection bug в Products.Update + unique IX на Article 2026-05-29 16:46:10 +05:00
stage-catalog.yml fix(catalog): EF8 nav-collection bug в Products.Update + unique IX на Article 2026-05-29 16:46:10 +05:00
stage-customer-return.steps.ts test(stage): пункт 7 — CustomerReturn 6/6 ✓ (создание из чека+walk-in+overreturn+multi-tenant) 2026-05-29 17:10:08 +05:00
stage-customer-return.yml test(stage): пункт 7 — CustomerReturn 6/6 ✓ (создание из чека+walk-in+overreturn+multi-tenant) 2026-05-29 17:10:08 +05:00
stage-demand.steps.ts test(stage): пункт 9 — Demand 8/8 ✓ (Cash + Credit + post + multi-tenant) 2026-05-29 17:23:03 +05:00
stage-demand.yml test(stage): пункт 9 — Demand 8/8 ✓ (Cash + Credit + post + multi-tenant) 2026-05-29 17:23:03 +05:00
stage-enter.steps.ts fix(docs): EF8 nav-collection bug в Enters/Losses/Transfers/SupplierReturns/Inventories.Update 2026-05-29 16:57:48 +05:00
stage-enter.yml fix(docs): EF8 nav-collection bug в Enters/Losses/Transfers/SupplierReturns/Inventories.Update 2026-05-29 16:57:48 +05:00
stage-inventory.steps.ts test(stage): пункт 6 — Inventory 8/8 ✓ + logic gap по CSV-импорту 2026-05-29 17:05:28 +05:00
stage-inventory.yml test(stage): пункт 6 — Inventory 8/8 ✓ + logic gap по CSV-импорту 2026-05-29 17:05:28 +05:00
stage-loss.steps.ts test(stage): пункт 4 — Loss 8/8 ✓ (CRUD+Post+Unpost+multi-tenant) 2026-05-29 16:59:56 +05:00
stage-loss.yml test(stage): пункт 4 — Loss 8/8 ✓ (CRUD+Post+Unpost+multi-tenant) 2026-05-29 16:59:56 +05:00
stage-reports.steps.ts fix(reports): 3 фикса по итогам stage-тестирования 2026-05-29 17:35:31 +05:00
stage-reports.yml fix(reports): 3 фикса по итогам stage-тестирования 2026-05-29 17:35:31 +05:00
stage-smoke.steps.ts test(stage): smoke + signup на test.admin.food-market.kz 2026-05-29 16:29:04 +05:00
stage-smoke.yml test(stage): smoke + signup на test.admin.food-market.kz 2026-05-29 16:29:04 +05:00
stage-supplier-return.steps.ts test(stage): пункт 8 — SupplierReturn 8/8 ✓ (CRUD+Post+Unpost+ref validation+multi-tenant) 2026-05-29 17:21:30 +05:00
stage-supplier-return.yml test(stage): пункт 8 — SupplierReturn 8/8 ✓ (CRUD+Post+Unpost+ref validation+multi-tenant) 2026-05-29 17:21:30 +05:00
stage-transfer.steps.ts test(stage): пункт 5 — Transfer 7/7 ✓ (CRUD+atomic post+unpost+multi-tenant) 2026-05-29 17:01:48 +05:00
stage-transfer.yml test(stage): пункт 5 — Transfer 7/7 ✓ (CRUD+atomic post+unpost+multi-tenant) 2026-05-29 17:01:48 +05:00
stock-concurrency.steps.ts test(e2e): scenario stock-concurrency — конкурентное проведение приёмок 2026-05-26 11:16:11 +05:00
stock-concurrency.yml test(e2e): scenario stock-concurrency — конкурентное проведение приёмок 2026-05-26 11:16:11 +05:00
stock-invariant-deep.steps.ts test(e2e): scenarios auth-edge, catalog-edge, stock-invariant-deep 2026-05-26 11:03:47 +05:00
stock-invariant-deep.yml test(e2e): scenarios auth-edge, catalog-edge, stock-invariant-deep 2026-05-26 11:03:47 +05:00
superadmin-console.steps.ts test(e2e): scenario superadmin-console — архив/восстановление/владелец/удаление 2026-05-26 11:53:32 +05:00
superadmin-console.yml test(e2e): scenario superadmin-console — архив/восстановление/владелец/удаление 2026-05-26 11:53:32 +05:00