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
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>
40 lines
4 KiB
Markdown
40 lines
4 KiB
Markdown
# Фоновая «Проверка данных» — прогресс
|
||
|
||
Идея владельца (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/себестоимость — отдельная тема.
|