feat(rates): last-mile rate rules with bulk per-ton-km and container distance bands

- rates: min_km/max_km columns, PER_TON_KM unit, ETB|USD currency for last mile
- extend UQ_rates_pattern with band start; overlap + shape validation
- shared last-mile charge resolver; approve-dialog price estimate endpoint
- delivery-fee invoice prices via rules, falls back to vehicle price/km
- backoffice: last-mile rate form (mode, container type, band, currency)
This commit is contained in:
Hagernesh
2026-08-05 22:12:40 +00:00
parent 6125f644b1
commit 5c8c68e990
25 changed files with 880 additions and 20 deletions

View File

@@ -160,6 +160,8 @@ export const QUERY_KEYS = {
list: (filter?: Record<string, unknown>) =>
["last-mile-requests", "list", filter ?? {}] as const,
freeTruckCount: ["last-mile-requests", "free-truck-count"] as const,
priceEstimate: (id: string) =>
["last-mile-requests", "price-estimate", id] as const,
},
RULE_ENGINE: {

View File

@@ -711,6 +711,7 @@ export const URL_CONSTANTS = {
BASE: "/last-mile-requests",
BY_ID: (id: string) => `/last-mile-requests/${id}`,
FREE_TRUCK_COUNT: "/last-mile-requests/free-truck-count",
PRICE_ESTIMATE: (id: string) => `/last-mile-requests/${id}/price-estimate`,
APPROVE: (id: string) => `/last-mile-requests/${id}/approve`,
REJECT: (id: string) => `/last-mile-requests/${id}/reject`,
},