# E2E report: stage-catalog

Запущен: 2026-05-29T11:45:42.321Z
Длительность: 6.2с

**Итог:** 6 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 6)

## ✓ Step cat01_setup_two_orgs: Создаём 2 свежие org через signup → 2 admin токена для multi-tenant проверок

Длительность: 3478мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Org A создана, refs загружены | ✓ org=cb1c333d group=true price=true cur=true unit=true |
| api | Org B создана, refs загружены | ✓ org=41518f3a |
| api | Org A и Org B — разные organizationId | ✓ cb1c333d-fe72-454b-8d06-bf1623c50479 vs 41518f3a-7014-4780-8986-db02026561e8 |
| api | Корневая группа «Все товары» у org A и B — разные записи | ✓ A.root=6c3e8f44-3ce6-41c7-a543-d64f87b6e4b7 B.root=48b4385f-280f-42ba-9717-2200d970e88b |

## ✓ Step cat02_product_group_crud: Группы — создать корневую и дочернюю, обновить, удалить пустую, отказ на удалении с подгруппами

Длительность: 645мс

| Тип | Проверка | Результат |
|---|---|---|
| api | POST product-groups (root) → 201 | ✓ 201 {"id":"4f915396-6dda-45ec-885d-578d79034487","name":"Группа 1780055142321","parentId":null,"path":"Группа 1780055142321","sortOrder":10,"markupPercent":30,"organizationId":"cb1c333d-fe72-454b-8d06 |
| api | OrganizationId назначен автоматически (мультитенантность) | ✓ cb1c333d-fe72-454b-8d06-bf1623c50479 vs cb1c333d-fe72-454b-8d06-bf1623c50479 |
| api | POST product-groups (child) → 201, path "Группа .../Подгруппа A" | ✓ 201 path="Группа 1780055142321/Подгруппа A" |
| api | PUT product-groups child → 204 | ✓ 204  |
| api | DELETE root c подгруппой → 400 "Нельзя удалить группу с подгруппами" | ✓ 400 {"error":"Нельзя удалить группу с подгруппами"} |
| api | DELETE child (без товаров) → 204 | ✓ 204 |
| api | Cleanup DELETE root (теперь без детей) → 204 | ✓ 204 |

## ✓ Step cat03_product_crud: Товар — создать, обновить, прочитать, удалить; дубликат штрихкода → 400; дубликат артикула → 400

Длительность: 649мс

| Тип | Проверка | Результат |
|---|---|---|
| api | POST product → 201 | ✓ 201 {"id":"fef80e2d-59a1-4604-8d7d-ff187c28c983","name":"Product 1780055142321 A","article":"ART-1780055142321-A1","description":"тестовый","unitOfMeasureId":"e005c2ad-ea0b-43d6-b849-25b0f3c33618","un |
| api | GET product by id → 200 | ✓ 200 article=ART-1780055142321-A1 |
| api | PUT product → 204 | ✓ 204  |
| api | POST с дубликатом штрихкода → 400 "уже используется" | ✓ 400 {"error":"Штрихкод 2051464470012 уже используется товаром «Product 1780055142321 A (upd)»."} |
| api | POST с дубликатом article → 400 "Артикул уже занят" | ✓ 400 {"error":"Артикул «ART-1780055142321-A1» уже занят в этой организации."} |
| api | GET products?search возвращает наш product | ✓ 200 total=1 |

## ✓ Step cat04_counterparty_crud: Контрагент — создать (юрлицо + физлицо), валидация телефона, FK-защита при удалении использованного

Длительность: 371мс

| Тип | Проверка | Результат |
|---|---|---|
| api | POST counterparty (Legal) → 201 | ✓ 201 {"id":"205ba9d6-19d1-494d-a6a2-ec63e481cac4","name":"ТОО Тест 1780055142321","legalName":"ТОО Тест-Полное 1780055142321","type":1,"bin":"999888777666","iin":null,"taxNumber":null,"countryId":null, |
| api | POST counterparty (Individual) → 201 | ✓ 201 {"id":"5a5a224a-fbe4-4e8d-aac9-ebf7e57a13a6","name":"Иванов И.И. 1780055142321","legalName":null,"type":2,"bin":null,"iin":"880101300123","taxNumber":null,"countryId":null,"countryName":null,"addr |
| api | POST counterparty с кривым телефоном → 400 | ✓ 400 {"error":"Введите корректный номер Казахстана. Пример: +7 700 123 45 67"} |
| api | PUT counterparty → 204 | ✓ 204  |

## ✓ Step cat05_multi_tenant_isolation: Org A не видит товары/группы/контрагентов Org B и наоборот; GET by id чужой сущности → 404

Длительность: 532мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Org B GET /products НЕ содержит товар org A | ✓ org B total=0, seenA=false |
| api | Org B GET /counterparties НЕ содержит контрагента org A | ✓ org B total=0, seenA=false |
| api | Org B GET /products/{id-чужой} → 404 | ✓ 404 |
| api | Org B GET /counterparties/{id-чужой} → 404 | ✓ 404 |
| api | Org B PUT /products/{id-чужой} → 404 (нельзя угнать) | ✓ 404 {"type":"https://tools.ietf.org/html/rfc9110#section-15.5.5","title":"Not Found","status":404,"traceId":"00-6113d4f60b97b701f6123eb42e8c8d12-15dba5518572a51c-00"} |
| api | Org B DELETE /products/{id-чужой} → 404 | ✓ 404 |

## ✓ Step cat06_fk_protection_groups: Удаление группы с товаром → 400, удаление системной «Все товары» → 400

Длительность: 562мс

| Тип | Проверка | Результат |
|---|---|---|
| api | DELETE системной «Все товары» → 400 "Системную группу" | ✓ 400 {"error":"Системную группу удалить нельзя."} |
| api | PUT product → перевешиваем в новую группу | ✓ 204 |
| api | DELETE не-системной группы с привязанным товаром → 400 "товарами" | ✓ 400 {"error":"Нельзя удалить группу с товарами"} |
| api | DELETE product → 204 | ✓ 204 |
| api | DELETE пустой группы (после удаления товара) → 204 | ✓ 204 |

## Summary

- Passed: 6
- Failed: 0
- Warnings: 0
- Skipped: 0

## Critical bugs

Нет.
