food-market/src/food-market.infrastructure
nns 1ee4b84e53
Some checks are pending
CI / POS (WPF, Windows) (push) Waiting to run
CI / Backend (.NET 8) (push) Successful in 28s
CI / Web (React + Vite) (push) Successful in 25s
Docker Images / API image (push) Successful in 39s
Docker Images / Web image (push) Successful in 5s
Docker Images / Deploy stage (push) Successful in 18s
feat(barcode-uniqueness): pre-check на Create/Update + warnings импорта + admin endpoint
Pre-check:
- ProductsController.FindBarcodeConflictAsync ищет штрихкоды,
  принадлежащие другим товарам организации; на Create/Update при
  конфликте возвращается 400 «Штрихкод 1234 уже используется
  товаром «Кока-кола 0.5л».» вместо 500 от unique index.

MoySklad-импорт:
- При попытке привязать уже занятый штрихкод — пишется warning
  «{товар}: штрихкод {код} уже занят, пропущен.» в errors[],
  товар остаётся, дубль не сохраняется.
- В конце импорта проходит финальный SELECT по дубликатам в БД
  (если есть исторические) — warnings типа «Внимание: штрихкод X
  привязан к нескольким товарам — почисти вручную.».

Admin-endpoint:
- GET /api/catalog/products/barcode-duplicates (Admin/Manager)
  возвращает массив { code, products: [{productId, productName,
  article}, ...] } для будущей UI-чистки.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 12:26:20 +05:00
..
Identity Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00
Integrations/MoySklad feat(barcode-uniqueness): pre-check на Create/Update + warnings импорта + admin endpoint 2026-04-25 12:26:20 +05:00
Inventory phase2a: stock foundation (Stock + StockMovement) + MoySklad counterparty import 2026-04-22 00:51:07 +05:00
Persistence feat(org-settings): AllowFractionalPrices — переключатель дробных цен 2026-04-25 12:21:04 +05:00
food-market.infrastructure.csproj Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00