fix(data-quality): «без группы» — только служебный корень, не настоящие верхние категории
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
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

Раньше флагировались все товары в группах с ParentId==null (включая реальные
верхнеуровневые категории вроде «Молочные»). Теперь — только товары в служебной
группе «Все товары»/«Без группы». На seed-demo: было 50 (ложно), стало 3 (верно).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nns 2026-10-09 08:27:15 +05:00
parent bcd44af3a7
commit 592399f90e

View file

@ -37,10 +37,12 @@ public static HashSet<string> DisabledChecks(string? csv)
// ── Запрос «проблемных» товаров для простых проверок ──────────────────────── // ── Запрос «проблемных» товаров для простых проверок ────────────────────────
private IQueryable<Domain.Catalog.Product> ProblemQuery(string checkType) => checkType switch private IQueryable<Domain.Catalog.Product> ProblemQuery(string checkType) => checkType switch
{ {
// Товар в корневой группе или в «Без группы»/«Все товары» (нужно задать группу). // Товар в служебной «корневой» группе-каталоге «Все товары»/«Без группы»
// (не задана осмысленная группа). Обычные верхнеуровневые категории
// (напр. «Молочные продукты») НЕ считаем «без группы» — это настоящая группа.
"no-group" => from p in _db.Products "no-group" => from p in _db.Products
join g in _db.ProductGroups on p.ProductGroupId equals g.Id join g in _db.ProductGroups on p.ProductGroupId equals g.Id
where g.ParentId == null || g.Name == "Без группы" || g.Name == "Все товары" where g.Name == "Без группы" || g.Name == "Все товары"
select p, select p,
// Нет цены продажи > 0. // Нет цены продажи > 0.
"no-sale-price" => _db.Products.Where(p => !p.Prices.Any(pr => pr.Amount > 0m)), "no-sale-price" => _db.Products.Where(p => !p.Prices.Any(pr => pr.Amount > 0m)),