Mikhail Chusavitin f70cc680f7 fix: конфигуратор зависал на «Загрузка...», infinite retry при sync, UpsertByUUID
1. JS-конфигуратор: при загрузке сохранённой конфигурации item.category
   всегда undefined (в config.items хранится только lot_name/quantity/unit_price).
   Добавлено обогащение cart из allComponents после загрузки, все сравнения
   категорий переведены на ciStr() вместо .toUpperCase(), исправлены все 4
   точки построения ASSIGNED_CATEGORIES — устраняет TypeError и таб «Other»
   показывал компоненты с известными категориями.

2. RepairPendingChanges: repair-функции теперь возвращают (bool, error);
   attempts/last_error сбрасываются только при modified=true — устраняет
   бесконечный retry когда ошибка на стороне сервера, а не локальных данных.

3. UpsertByUUID: сброс project.ID=0 перед INSERT … ON DUPLICATE KEY UPDATE,
   чтобы конфликт шёл по уникальному uuid, а не по PK чужой строки —
   устраняет «record not found» при разрешении изменений проекта.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 10:27:29 +03:00
2026-06-26 08:54:23 +03:00
2026-03-01 16:57:50 +03:00
2026-03-01 16:57:50 +03:00
2026-01-22 17:29:47 +03:00
2026-02-18 07:02:17 +03:00

QuoteForge

Local-first desktop web app for server configuration, quotation, and project work.

Runtime model:

  • user work is stored in local SQLite;
  • MariaDB is used only for setup checks and background sync;
  • HTTP server binds to loopback only.

What the app does

  • configuration editor with price refresh from synced pricelists;
  • projects with variants and ordered configurations;
  • vendor BOM import and PN -> LOT resolution;
  • revision history with rollback;
  • rotating local backups.

Run

go run ./cmd/qfs

Useful commands:

go run ./cmd/qfs -migrate
go test ./...
go vet ./...
make build-release

On first run the app creates a minimal config.yaml, starts on http://127.0.0.1:8080, and opens /setup if DB credentials were not saved yet.

Documentation

bible-local/ is the source of truth for QuoteForge-specific architecture. If code changes behavior, update the matching file there in the same commit.

Repository map

cmd/                  entry points and migration tools
internal/             application code
web/                  templates and static assets
bible/                shared engineering rules
bible-local/          project architecture and contracts
releases/             packaged release artifacts and release notes
config.example.yaml   runtime config reference
Description
No description provided
Readme 228 MiB
2026-06-26 10:49:35 +03:00
Languages
Go 65.2%
HTML 34.1%
Shell 0.4%
Makefile 0.3%