2.5 KiB
QuoteForge v2.21
Дата релиза: 2026-06-25
Тег: v2.21
Что нового
Исправление: сбой синхронизации при дублях lot_name в прайслисте
При загрузке нового прайслиста (W-2026-06-25-001) синхронизация прерывалась с ошибкой UNIQUE constraint failed: local_pricelist_items.pricelist_id, local_pricelist_items.lot_name — в серверной таблице qt_pricelist_items оказались дубли lot_name для одного прайслиста. QF теперь дедуплицирует позиции при загрузке и пропускает повторные вхождения с предупреждением в лог.
Исправление: race condition при параллельном запуске синхронизации
Если фоновый тикер и ручной запуск «Синхронизировать» срабатывали одновременно, оба потока пытались записать items в одну таблицу, что приводило к UNIQUE constraint ошибке. SyncPricelists() теперь защищена тем же мьютексом, что и фоновый SyncPricelistsIfNeeded().
Улучшение: ошибки отправки изменений попадают в лог синхронизации
PushPendingChanges теперь записывает результат в sync_log (тип changes) — ошибки отправки конфигураций и проектов на сервер видны в диалоге «Информация о синхронизации» и в support bundle.
Улучшение: состояние клиента всегда отправляется на сервер после синхронизации
reportClientSchemaState теперь вызывается по завершении синхронизации через defer — актуальное состояние (включая ошибки) уходит на сервер независимо от того, завершился sync успехом или сбоем.
Запуск на macOS
Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
После этого бинарник запустится без предупреждения Gatekeeper.