• v3.40 d7d4ea74b6

    mchus released this 2026-09-01 09:02:01 +03:00 | 8 commits to main since this release

    Ключевые изменения

    • артикул: категория LOT для сегмента берётся из component universe (world ∪ estimate), а не из привязанного к конфигурации прайслиста — LOT, который есть только в world (напр. GPU_NV_RTX_PRO_6000D_SERVER_84GB_PCIE), больше не выпадает из артикула;
    • артикул: нераспознанный токен больше не пишется как UNK — в артикул идёт категория LOT (4xGPU, 2xCPU), сегмент помечается как нераспознанный;
    • конфигуратор подсвечивает нераспознанные части артикула (amber) и выводит список предупреждений с именами LOT; сохранение конфигурации пишет WARN в лог;
    • POST /api/configs/preview-article возвращает разбор артикула по сегментам (segments[]);
    • parseGPUModel сохраняет буквенный суффикс в номере модели (6000DRTX6000D), раньше терял его и схлопывал до RTX.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v3.39 681ec15e2b

    QuoteForge v3.39 Pre-Release

    mchus released this 2026-08-31 18:19:07 +03:00 | 10 commits to main since this release

    Ключевые изменения

    • новый режим индикаторов без цветовой кодировки (переключатель на странице «Настройки»): всё, что раньше передавалось только цветом, переходит на форму и текст — качество цены рисуется значком-«сигналом» из 5 столбиков вместо цветной точки/числа, на вкладке «Ценообразование» вместо заливки строк появляется отдельная колонка-индикатор слева, цены-заглушки из прайслиста WORLD помечаются буквой «W», а «загрязнённый» итог — значком «⚠» вместо красного цвета; подходит при нарушениях цветовосприятия, обычный цветовой режим остаётся по умолчанию;
    • страница «Настройки» переустроена: два блока («Подключение к базе данных» и «Индикаторы») в две колонки одной высоты, добавлена кнопка «Вернуться в приложение», поправлен заголовок вкладки браузера;
    • версия приложения теперь показывается в шапке рядом с логотипом (убрано дублирование «vv» и хардкод «v1.0» на странице настройки БД);
    • исправлена ошибка JavaScript из-за повторного объявления функции экранирования HTML.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v3.37 639fe98945

    mchus released this 2026-08-24 18:36:28 +03:00 | 15 commits to main since this release

    Ключевые изменения

    • исправлен баг конфигуратора: при изменении количества в таблицах с несколькими компонентами (диски, RAID-контроллеры и т.п.) поле «Кол-во» затиралось суммой в долларах, а «Стоимость» переставала пересчитываться корректно;
    • заодно ужесточён поиск строки в таблице при обновлении количества — теперь строго по LOT-коду, без риска задеть соседнюю строку с похожим названием.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v3.34 4d7b0e13ef

    QuoteForge v3.34 Pre-Release

    mchus released this 2026-08-10 20:14:57 +03:00 | 22 commits to main since this release

    Ключевые изменения

    • CSV-экспорт цены продажи (DDP): колонка Estimate игнорировала пользовательский коэффициент «Аплифт к estimate» и всегда экспортировалась с x1,3 — фронтенд не передавал значение поля в бэкенд, а applyDDPMarkup применял один и тот же множитель ко всем трём колонкам сразу; теперь Estimate масштабируется по аплифту, Склад/Конкуренты — фиксированным x1,3;
    • рефакторинг дублирующегося кода без изменения поведения: в Go-хендлерах устранены повторяющиеся switch-конструкции обработки ошибок и bind-логика (cmd/qfs/main.go, internal/handlers, internal/appstate, internal/article); во фронтенде сведены в общие функции пять идентичных обработчиков клавиатурной навигации автокомплита и четыре функции сборки нового элемента корзины.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v3.33 a321dab448

    mchus released this 2026-07-30 18:21:16 +03:00 | 25 commits to main since this release

    Ключевые изменения

    • новые категории прайслиста (например SYS), не входящие ни в одну известную вкладку конфигуратора, больше не пропадают из «Прочее» — устранены три места самоотравления ASSIGNED_CATEGORIES, сведены в одну функцию;
    • фоновая синхронизация qt_settings (tab_config, config_types, required_categories, поддержка) подключена к воркеру — раньше была мёртвым кодом, и правки в центральной таблице не доезжали до клиентов;
    • детерминированная сортировка при постраничной выдаче конфигураций (ListAll).

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v3.32 513faaf9a4

    mchus released this 2026-07-24 17:13:12 +03:00 | 30 commits to main since this release

    Ключевые изменения

    • колонка «PN code» в таблице импорта BOM: HPE-спецификации хранят партномер в двух столбцах (базовый P/N и код опции), теперь они склеиваются в канонический вид P52534-B21#B19 прямо в интерфейсе — раньше это приходилось делать через CONCATENATE в Excel. Склеенное значение сохраняется в vendor_partnumber и сравнивается с книгой партномеров как есть, а при повторном открытии конфигурации разбирается обратно на две колонки; схема БД не менялась;
    • список допустимых LOT конфигуратора собирается из объединения прайслистов world и estimate, а не только из estimate. Прежняя область видимости молча теряла сопоставления BOM: резолвер находил LOT по книге партномеров, которая про прайслисты ничего не знает, а фронт отбрасывал всё, чего нет в estimate — при этом в корзину такой LOT всё равно попадал, и строка BOM оставалась с «н/д». Дедупликация по имени LOT без учёта регистра, при совпадении выигрывает запись из estimate; позиции, найденные только в world, показываются с качеством цены 0 (самый красный);
    • LOT, сопоставленный по книге партномеров, сохраняется в спецификации, даже если его нет ни в одном прайслисте — раньше такое сопоставление пропадало без предупреждения. LOT, введённые руками, по-прежнему проверяются по списку;
    • кнопка «Пересопоставить» на вкладке BOM — заново прогоняет строки через актуальную книгу партномеров. При открытии конфигурации сопоставления намеренно остаются такими, какими были сохранены, поэтому записи, добавленные в книгу позже, подхватываются только этой кнопкой;
    • вкладка «Ценообразование»: убраны звёздочки у итогов (переносились на отдельную строку и разъезжались). Итог по столбцам Estimate, Склад и Конкуренты подсвечивается красным тогда и только тогда, когда часть суммы посчитана по ценам-заглушкам из прайслиста world; при наведении всплывает подсказка с точной долей таких цен и с покрытием по позициям;
    • колонка «PN вендора» на вкладке «Ценообразование» больше не переносит партномер на две строки;
    • индикатор качества цены показывается во всех таблицах конфигуратора, а не только на вкладке Base; колонка-индикатор везде без текстового заголовка, только с тултипом.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v3.31 ee92c3b392

    QuoteForge v3.31 Pre-Release

    mchus released this 2026-07-22 19:08:58 +03:00 | 35 commits to main since this release

    Ключевые изменения

    • поддержка импорта CSV из customer-facing формата pricing-экспорта (не только из round-trip формата) — колонки резолвятся по имени;
    • список вариантов конфигурации в выпадающем меню нумеруется и сортируется по дате создания (старый сверху);
    • новая вкладка «Аренда» в конфигураторе (для проектов с флагом rental_enabled): расчёт разового и еженедельного платежа по регламенту платного тестирования/аренды GPU-серверов, с колонками Estimate/Цена продажи и чекбоксом «БУ»;
    • техподдержка (support_code) на вкладке Base теперь добавляется как обычный LOT через autocomplete-пикер вместо выпадающего списка;
    • прайслисты: local_pricelist_items получает lot_description напрямую из qt_pricelist_items.lot_description (вместо устаревших неиспользуемых available_qty/partnumbers) — описание LOT теперь берётся из одного места везде в проекте, включая экспорт цен (там раньше подстановка описания молча не работала);
    • добавлено price_quality — качество цены LOT (0-9), проставляется внешней утилитой ценообразования; показывается цветным индикатором (градиент красный → жёлтый → зелёный) в прайслисте, в поиске компонентов конфигуратора, в таблице конфигуратора и на вкладке «Ценообразование» (подсветка строки);
    • из контракта прайслиста убраны неиспользуемые в клиенте поля (price_method, price_period_days, price_coefficient, manual_price, meta_prices) — сами колонки в базе не тронуты, оставлены для обратной совместимости с внешним движком ценообразования.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v2.30 472333a47e

    mchus released this 2026-07-14 14:13:24 +03:00 | 42 commits to main since this release

    • fix: в CSV-экспорте колонка «Заглушка (world)» больше не упоминает прайслисты (Estimate/Stock/Конкуренты), не отмеченные галочкой при выгрузке.
    Downloads
  • v2.29 95556624e5

    QuoteForge v2.29 Pre-Release

    mchus released this 2026-07-10 10:26:51 +03:00 | 45 commits to main since this release

    Дата релиза: 2026-07-10
    Тег: v2.29

    Предыдущий релиз: v2.28

    Ключевые изменения

    • world-прайслист используется как заглушка: где для позиции нет цены в estimate/склад/конкуренты, подставляется цена из world;
    • подставленные из world цены выделяются цветом (amber) в таблицах «Цена покупки» и «Цена продажи», участвуют в «Итого» и убирают красную звёздочку неполного покрытия;
    • в CSV-экспорт добавлена колонка «Заглушка (world)» с перечнем столбцов, где сработал фолбэк;
    • устранён потенциальный дедлок при резолве прайслистов внутри транзакции (single-connection пул) — добавлены транзакционные варианты выборки прайслистов.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v2.28 498cbf5490

    mchus released this 2026-07-03 07:34:07 +03:00 | 47 commits to main since this release

    Дата релиза: 2026-07-03
    Тег: v2.28

    Предыдущий публичный релиз: v2.25

    Ключевые изменения

    • fix: приложение больше не подвисает на секунды при недоступном сервере — проверка соединения с MySQL ушла в фон и никогда не блокирует интерфейс (/health и другие запросы отвечают мгновенно даже офлайн);
    • fix: устранён SQLITE_BUSY при клонировании конфигурации вариантов (сериализация записи через единственное соединение + busy_timeout);
    • fix: лоты без категории или отсутствующие в прайслисте больше не блокируют сборку артикула — просто пропускаются, а не обрывают сохранение конфига;
    • fix: если прайслист конфига удалён с сервера, автоматически выбирается последний активный;
    • feat: в таблицах конфигураций появилась иконка глаза — показывает, что конфигурацию сейчас открыл другой пользователь; при наведении виден список имён;
    • refactor: удалён мёртвый код qt_lot_metadata.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads