- Add glob pattern support (* and ?) for ignore rules stored in
qt_vendor_partnumber_seen (is_pattern flag, migration 041)
- Pattern matching applied in stock/competitor import, partnumber book
snapshot, and vendor mappings list (Go-side via NormalizeKey)
- BulkUpsertMappings: replace N+1 loop with two batch SQL upserts,
validating all lots in a single query (~1500 queries → 3-4)
- CSV import: multi-lot per PN via repeated rows, optional qty column
- CSV export: updated column format vendor;partnumber;lot_name;qty;description;ignore;notes
- UI: ignore patterns section with add/delete, import progress feedback
- Update bible-local/vendor-mapping.md with new CSV format
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Две ключевые исправления:
1. Потоковая отправка прогресса создания (SSE):
- Эндпоинт CreateWithProgress теперь отправляет Server-Sent Events
вместо возврата JSON с task_id
- Полирует статус задачи и отправляет обновления прогресса в реальном времени
- Отправляет финальное событие с данными прайслиста или ошибкой
- Фронтенд уже ожидал этого формата SSE
2. Исправление маппинга колонки lot_category:
- Добавлен явный тег column в поле Category модели PricelistItem
чтобы маппиться на колонку 'lot_category' в БД
- Категория теперь хранится как снимок в таблице pricelist_items
- Обновлены запросы репозитория для использования сохраненной
категории вместо динамических JOIN с таблицей lot
Это исправляет ошибки:
- "Создание прервано: не получен результат" (фронтенд ожидал streaming)
- "Unknown column 'category' in 'INSERT INTO'" (несоответствие схемы БД)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>