a4457a0a2868b62654c84f7f9b09b1d1c1f44dbc
- Migrations 026-028: qt_partnumber_books + qt_partnumber_book_items tables; is_primary_pn on lot_partnumbers; version VARCHAR(30); description VARCHAR(10000) on items (required by QuoteForge sync) - Service: CreateSnapshot expands bundles, filters empty lot_name and ignored PNs, copies description, activates new book atomically, applies GFS retention (7d/5w/12m/10y) with explicit item deletion - Task type TaskTypePartnumberBookCreate; handlers ListPartnumberBooks and CreatePartnumberBook; routes GET/POST /api/admin/pricing/partnumber-books - UI: snapshot list + "Создать снапшот сопоставлений" button with progress polling on /vendor-mappings page - Bible: history, api, background-tasks, vendor-mapping updated Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PriceForge
Price and pricelist manager for MariaDB.
- Main UI: http://127.0.0.1:8084/admin/pricing
- Architecture docs:
bible/
Quick Start
cp config.example.yaml config.yaml
# Edit config.yaml: database.host, name, user, password
make run
Commands
make run # dev server
make build # local build
make build-release # release build
make build-all # cross-compile Linux/macOS/Windows
make test # run tests
go run ./cmd/pfs -migrate # run migrations
./bin/pfs -version # check version
./scripts/release.sh # build release archives
Requirements
- Go 1.22+
- MariaDB / MySQL
macOS Gatekeeper
xattr -d com.apple.quarantine /path/to/pfs-darwin-arm64
Description
Languages
Go
47.2%
CSS
25.1%
JavaScript
16%
HTML
11.3%
Makefile
0.2%
Other
0.2%