food-market/docs/data-quality-progress.md
nns 261a720b52
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
feat(data-quality): фоновая «Проверка данных» — бэкенд (п.1,3,4)
Hangfire DataQualityJob (ночью 02:20 UTC) считает по орг. счётчики проблем: без группы
(корень/«Без группы»), без цены продажи, без штрихкода (кроме услуг), дубль штрихкода,
возможный дубль имя+единица; товары в минусе — ссылкой на центр (не дублируем). Результаты
в data_quality_results (Phase43), живые детальные списки — по запросу.
API /api/data-quality: сводка, {check}/products, recompute, dismiss («это разные товары»),
bulk set-group/set-price/generate-barcodes, PUT settings (отключение проверок). unknown-cost
отложен до FIFO; PLU убран (поправка владельца). Integration-тест: счётчики/список/bulk/dismiss.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-09 08:11:57 +05:00

40 lines
4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Фоновая «Проверка данных» — прогресс
Идея владельца (08.10): «система в фоне не спеша должна выявлять товары без группы и
выводить это как предупреждение, что необходимо задать им группу». Расширяем на основные
проблемы данных. Правило: минимум как у МойСклада, где можно — лучше.
Легенда: [x] готово · [~] частично · [ ] не начато.
## Сверка с МойСкладом
- У МойСклада **нет отдельного дашборда «проверка данных»**. Есть фильтры в списке
ассортимента: по папке/группе (можно отобрать «без папки»), по архивности; отчёт
«Остатки» с фильтром отрицательных. Поиск дублей штрихкодов/названий как встроенной
фичи у них **нет** (ловится только при вводе дубля штрихкода — ошибка).
- **Делаем лучше:** выделенная панель «Проверка данных» со счётчиками по каждой проблеме,
фоновый расчёт (не грузит БД в часы продаж), массовое исправление из списка, детект
дублей (штрихкод; имя+единица «возможно, дубль») с «это разные товары», отключение
проверок, ненавязчивый бейдж, то же через API для iOS.
## Проверки (поправка: PLU убран; без-штрихкода — для старых/импорта)
- `no-group` — товар в корневой группе / «Без группы» (нужно задать группу).
- `no-sale-price` — нет цены продажи (продать нельзя).
- `no-barcode` — нет штрихкода (кроме услуг; новые получают автоматически — это для старых/импорта).
- `dup-barcode` — один штрихкод у разных товаров.
- `dup-name-unit` — одинаковое название+единица у разных товаров («возможно, дубль»).
- `negative-stock` — товары в минусе: НЕ дублируем уведомления, ссылаемся на центр (задача 01b34).
- `unknown-cost` — ОТЛОЖЕНО до FIFO (себестоимость «неизвестна», а не «0»).
## План / статус
1. [ ] Hangfire-задача: лёгкая, низкий приоритет, по организациям; ночной полный проход +
recompute по запросу. Считает счётчики по каждой проверке (с учётом «это разные товары»).
2. [ ] Админка: панель «Проверка данных» (счётчики + детальные списки), бейдж на главной/каталоге,
время последней проверки; iOS — те же API.
3. [ ] Массовое исправление: «Задать группу», «Задать цену», «Сгенерировать штрихкоды»; дубли —
«Это разные товары» / открыть оба.
4. [ ] Отключение отдельных проверок в настройках; предупреждение исчезает при исправлении.
5. [ ] Тесты (unit/integration/e2e), деплой, скриншоты; реальные числа на витрине/Демо.
## Что НЕ трогаем
Прод, shared-postgres, global.json, gateway nginx, sklad. FIFO/себестоимость — отдельная тема.