Some checks failed
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
Docker Web / Build + push Web (push) Has been cancelled
Docker Web / Deploy Web on stage (push) Has been cancelled
1. Bulk-обновление товаров — Product.IsArchived + IsAvailableForSale
(Phase19a миграция), POST /api/catalog/products/bulk-update {ids, op, params}
с операциями price-adjust (% / абсолют), change-group, archive/unarchive,
toggle-sale. Одной транзакцией, multi-tenant через query-filter.
Frontend: checkbox-колонка, sticky bulk-bar, модалка.
2. SavedPresets — domain UserPreset (Phase19b: jsonb ConfigJson,
unique по OrgId+UserId+PageKey+Name). /api/user/presets CRUD per-user.
<SavedPresets> компонент с chip-bar и сохранением. Применено к /reports/
sales/stock/profit + /catalog/products.
3. QuickActionsPalette — Cmd+J открывает отдельную палитру с 14 действиями
+ история topa-10 в localStorage.fm.quickActions.recent. ↑↓/Enter/Esc
keyboard nav. Cmd+K (поиск) и Cmd+J (действия) — разные палитры.
4. Inline-edit цены — PATCH /api/catalog/products/{id}/price новый endpoint
с RoundIfNeeded. <InlinePriceCell> с dblclick → input, optimistic update
+ revert при ошибке.
5. CSV import товаров — POST /api/catalog/products/import-csv (rows[]).
Клиент парсит CSV (auto-detect разделитель ,/;), сервер commit'ит
транзакцией. autoCreateGroup для новых групп. <ProductsCsvImport>
модалка с preview и подсветкой ошибочных строк.
6. CSV/XLSX export — endpoint'ы /export на 5 контроллерах (products,
counterparties, stock, retail-sales, supplies). Reuse существующего
ReportExport.Csv/Xlsx. <ExportButton> dropdown с двумя форматами.
7. Keyboard-first nav в DataTable — ↑↓/Home/End/Enter/Space/Delete props
keyboardNav/onSelect/onDelete. Подсветка focused-строки. Документация
в src/help/keyboard-shortcuts.md + 2 новые HelpTopic'a.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
Sprint 19 — bulk-операции + сохранённые пресеты + power-user UX
Цель: розничный админ работает быстрее в 2-3 раза за счёт массовых операций, сохранённых пресетов фильтров, keyboard-first UX, inline-edit и CSV import/export.
Старт: 2026-06-07 (после Sprint 18). Исполнитель: Claude Opus 4.7.
Принципы
- Bulk-операции — одной транзакцией; multi-tenant guard в каждом endpoint'е.
- Пресеты — per-user в org (cross-org нельзя видеть).
- Inline-edit с optimistic update, fallback на revert + toast.
- НЕ трогать:
global.json, prod admin.food-market.kz, POS WPF.
Чек-лист
- 1. Bulk-обновление товаров — checkbox-колонка + sticky панель
на /catalog/products. Операции: «+%/+₸ к цене», «Сменить группу»,
«Архивировать», «Снять с продажи». Endpoint
POST /api/catalog/products/bulk-update {ids, op, params}— одна транзакция, query-filter гарантирует tenant-isolation. - 2. Сохранённые фильтры (presets) — domain
UserPreset(UserId+OrgId+PageKey+Name+ConfigJson).<SavedPresets>chips сверху списка. CRUD endpoint'ы. Применено к /reports/sales, /reports/stock, /reports/profit, /catalog/products. - 3. Quick-actions (Cmd+J) — отдельная палитра от Cmd+K. Меню недавних действий пользователя; хранится в localStorage per-user (по userId). Топ-10 пунктов.
- 4. Inline-edit в таблицах — dblclick по цене на
/catalog/products → input → Enter сохраняет (
PATCH /api/catalog/products/{id}/price). То же для остатка (admin only, черезenterкорректирующий). Optimistic + revert. - 5. Импорт CSV для товаров — модалка с upload, preview таблицы (валидация на клиенте + на сервере), коммит транзакцией. Колонки: name,price,unit,group,barcode. Ошибки строк показаны в preview.
- 6. Экспорт CSV/XLSX — кнопка «Экспорт» в списках: /catalog/products, /catalog/counterparties, /sales/retail, /purchases/supplies, /inventory/stock. CSV — серверная генерация с теми же фильтрами что и поиск.
- 7. Keyboard-first навигация по таблицам — ↑/↓/Enter/Delete/ Space в DataTable + документация на /help.
Журнал
2026-06-07 старт
Sprint 18 закрыт (7/7 ✓ + 1 hotfix). Поехали по power-user UX.