# Ride Categories + Price Per Km

## Overview

Step 32 extends the existing `vehicle_categories` system with `pricePerKm` and uses it as a **server-side reference fare** input.

- Existing bidding remains unchanged:
  - Customer `proposedFare`
  - Driver `offeredFare`
  - Ride `finalFare` from selected offer
- New fare artifacts:
  - `pricePerKmSnapshot`
  - `estimatedDistanceKm`
  - `estimatedFare`

## Currency

- Currency is `USD` for ride request / ride APIs.
- Price per km is stored as `DECIMAL(10,2)`.

## Category APIs

Existing category APIs are reused.

- Admin create/update now accept `pricePerKm`.
- Public list includes `pricePerKm` per active category.

## Server-Controlled Fields

Clients cannot control:

- `pricePerKmSnapshot`
- `estimatedDistanceKm`
- `estimatedFare`
- `categoryNameSnapshot`

Values are always computed from database category + route distance at request creation.

## Snapshot Rule

Category prices can change later, but existing ride requests / rides keep snapshots captured at creation/selection time.
