Pricing System Overview
Architecture
The pricing system provides flexible, multi-tier pricing with price lists, customer groups, and snapshot versioning.
Key Components
- Price Lists: Collections of prices for specific customer groups
- Customer Groups: Segmentation for pricing (e.g., VIP, Wholesale)
- Pricing Engine: Calculates effective prices based on rules
- Pricing Snapshots: Immutable price records for order history
- Drift Detection: Monitors price changes over time
Pricing Flow
Price Resolution
- Base Price: Product variant's base price
- Price List: Lookup price list for customer's group
- Override: Price list may override base price
- Final Price: Effective price returned
Features
- Multi-tier pricing (base, price list, customer group)
- Price list versioning
- Snapshot creation for orders
- Drift detection and reporting
- Redis caching for performance
Database Schema
price_lists
CREATE TABLE price_lists (
id UUID PRIMARY KEY,
name TEXT NOT NULL,
customer_group_id UUID REFERENCES customer_groups(id),
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP NOT NULL
);
price_list_items
CREATE TABLE price_list_items (
id UUID PRIMARY KEY,
price_list_id UUID REFERENCES price_lists(id),
variant_id UUID REFERENCES product_variants(id),
price DECIMAL(10,2) NOT NULL,
created_at TIMESTAMP NOT NULL
);
API Endpoints
GET /pricing/calculate- Calculate price for variantGET /admin/pricing/price-lists- List price listsPOST /admin/pricing/price-lists- Create price listGET /admin/pricing/drift-report- Get drift report
Caching Strategy
- Redis Cache: Price calculations cached with TTL
- Cache Key:
pricing:variant:{variantId}:group:{groupId} - Invalidation: On price list updates