f48615e8a9626fe855e4d5c41164c3db02ec4d46
Go refactoring: - Split handlers/pricing.go (2446→291 lines) into 5 focused files - Split services/stock_import.go (1334→~400 lines) into stock_mappings.go + stock_parse.go - Split services/sync/service.go (1290→~250 lines) into 3 files JS extraction: - Move all inline <script> blocks to web/static/js/ (6 files) - Templates reduced: admin_pricing 2873→521, lot 1531→304, vendor_mappings 1063→169, etc. Competitor pricelists (migrations 033-039): - qt_competitors + partnumber_log_competitors tables - Excel import with column mapping, dedup, bulk insert - p/n→lot resolution via weighted_median, discount applied - Unmapped p/ns written to qt_vendor_partnumber_seen - Quote counts (unique/total) shown on /admin/competitors - price_method="weighted_median", price_period_days=0 stored explicitly Fix price_method/price_period_days for warehouse items: - warehouse: weighted_avg, period=0 - competitor: weighted_median, period=0 - Removes misleading DB defaults (was: median/90) Update bible: architecture.md, pricelist.md, history.md 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%