Files
PriceForge/bible-local/api.md
Mikhail Chusavitin 5f8aec456b Unified Quote Journal (parts_log) v3
- New unified append-only quote log table parts_log replaces three
  separate log tables (stock_log, partnumber_log_competitors, lot_log)
- Migrations 042-049: extend supplier, create parts_log/import_formats/
  ignore_rules, rework qt_lot_metadata composite PK, add lead_time_weeks
  to pricelist_items, backfill data, migrate ignore rules
- New services: PartsLogBackfillService, ImportFormatService,
  UnifiedImportService; new world pricelist type (all supplier types)
- qt_lot_metadata PK changed to (lot_name, pricelist_type); all queries
  now filter WHERE pricelist_type='estimate'
- Fix pre-existing bug: qt_component_usage_stats column names
  quotes_last30d/quotes_last7d (no underscore) — added explicit gorm tags
- Bible: full table inventory, baseline schema snapshot, updated pricelist/
  data-rules/api/history/architecture docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 17:25:54 +03:00

5.3 KiB

API Endpoints

Web Pages

Method URL Handler Description
GET / Index Redirect → /admin/pricing
GET /admin/pricing AdminPricing Pricing admin (Estimate / Warehouse / Alerts tabs)
GET /lot Lot LOT management (LOT / Mappings tabs)
GET /pricelists Pricelists Pricelist listing
GET /pricelists/:id PricelistDetail Single pricelist view
GET /vendor-mappings VendorMappings Vendor mapping UI
GET /admin/competitors Competitors Competitor management UI
GET /partials/components ComponentsPartial Components partial
GET/POST /setup Setup DB connection setup

System

Method URL Description
GET /health Health check
GET /api/ping Ping
GET /api/db-status DB connection status (optional counts)
GET /api/current-user Current DB user info
POST /api/restart Graceful process restart
GET/POST /api/connection-settings DB config UI

Components

Method URL Description
GET /api/components Component list with search/filter
GET /api/components/:lot_name Component details
GET /api/categories Category list

Pricelists

Method URL Description
GET /api/pricelists List all pricelists
POST /api/pricelists Create pricelist (returns task_id)
GET /api/pricelists/:id Pricelist details
DELETE /api/pricelists/:id Delete pricelist
GET /api/pricelists/:id/items Pricelist items
GET /api/pricelists/:id/export-csv CSV export (streaming)
GET /api/pricelists/latest Latest pricelist per source

Pricing Admin (/api/admin/pricing/*)

Method URL Description
GET /api/admin/pricing/stats Statistics
GET /api/admin/pricing/components Components with pricing
POST /api/admin/pricing/recalculate-all Recalculate all prices (returns task_id)
GET /api/admin/pricing/lots LOT list
GET/POST /api/admin/pricing/stock-mappings Stock partnumber mappings
GET/POST/DELETE /api/admin/pricing/vendor-mappings Vendor partnumber mappings (DELETE removes mapping and seen-row from global list)
POST /api/admin/pricing/vendor-mappings/import-csv Import vendor mappings from CSV (;, UTF-8/BOM, columns: vendor;partnumber;lot_name;description;ignore; if ignore is set and lot_name empty → mark ignored)
GET /api/admin/pricing/vendor-mappings/export-unmapped-csv Export CSV template of unmapped vendor partnumbers for user filling (vendor;partnumber;lot_name;description;ignore)
GET /api/admin/pricing/alerts Alerts list
GET /api/admin/pricing/scheduler-runs Embedded scheduler job state (qt_scheduler_runs)
GET /api/admin/pricing/partnumber-books List all partnumber book snapshots with item counts
POST /api/admin/pricing/partnumber-books Create partnumber book snapshot (returns task_id)

Competitors (/api/competitors/*)

Method URL Description
GET /api/competitors List all competitors with unique p/n + total quote counts
POST /api/competitors Create competitor
GET /api/competitors/:id Get competitor by ID
PUT /api/competitors/:id Update competitor (name, delivery_basis, currency, discount, column_mapping)
DELETE /api/competitors/:id Delete competitor
PATCH /api/competitors/:id/active Set is_active
POST /api/competitors/:id/import Import Excel quote file (returns task_id, type: competitor_import)
POST /api/competitors/pricelist Rebuild combined competitor pricelist from all stored quotes (returns task_id)
POST /api/competitors/parse-headers Parse XLSX headers/preview for column mapping UI

Parts Log

Method URL Description
POST /api/parts-log/backfill Trigger backfill job manually (admin only) — resolves lot_name=NULL rows in parts_log

Import Formats

Method URL Description
GET /api/import-formats List all import formats
GET /api/import-formats/:code Get format by code
POST /api/import-formats Create or update import format
DELETE /api/import-formats/:code Delete import format

Ignore Rules

Method URL Description
GET /api/ignore-rules List all ignore rules
POST /api/ignore-rules Create ignore rule
DELETE /api/ignore-rules/:id Delete ignore rule

Tasks (polling)

Method URL Description
GET /api/tasks/:id Task status and result

Sync (diagnostics)

Method URL Description
GET /api/sync/status Sync status
GET /api/sync/info Sync info
POST /api/sync/components Pull components
POST /api/sync/pricelists Pull pricelists

Setup

Method URL Description
GET/POST /setup DB setup page
POST /setup/test Test DB connection
GET /setup/status Setup status