Утверждённый справочник: hour, shift, day, month, trip, km.
machinery_categories.code — внутреннее обозначение типа транспорта, не прав. Категория прав — поле license_category той же строки (например B), либо пусто.
Исполнитель не выбирает тариф из полного списка мира: только из типов, разрешённых категории его транспорта. Связь хранится в таблице category_pricing_types.
pricing_types| code | Название |
|---|---|
hour |
Час |
shift |
Смена |
day |
Сутки |
month |
Месяц |
trip |
Рейс |
km |
Километр |
week и callout в справочник не входят.
trip и km — это тариф на перемещение груза/машины (эвакуация, рейс самосвала).
Кран, экскаватор, погрузчик работают на точке: их считают часом, сменой, сутками, месяцем. Рейс для крана как единица работы не используется.
В рыночных прайсах у автокрана иногда есть «₽/км за МКАД». Это надбавка за доставку на объект. В каталог тарифов не выносим: заказчик задаёт количество по выбранному тарифу, сумма = ставка × количество.
| Группа | Смысл | Разрешённые тарифы |
|---|---|---|
on_site |
Работа на объекте | hour, shift, day, month |
haulage |
Перевозка / эвакуация | hour, shift, day, month, trip, km |
mixed |
И на точке, и рейсом | hour, shift, day, month, trip, km |
Источник истины — строки в category_pricing_types, не хардкод в клиенте. Ниже — начальное наполнение.
| category.code | Название | Группа | hour | shift | day | month | trip | km |
|---|---|---|---|---|---|---|---|---|
tow_truck |
Эвакуатор | haulage | да | да | да | да | да | да |
dump_truck |
Самосвал | haulage | да | да | да | да | да | да |
manipulator |
Манипулятор | mixed | да | да | да | да | да | да |
crane |
Кран | on_site | да | да | да | да | нет | нет |
excavator |
Экскаватор | on_site | да | да | да | да | нет | нет |
loader |
Погрузчик | on_site | да | да | да | да | нет | нет |
bulldozer |
Бульдозер | on_site | да | да | да | да | нет | нет |
aerial_platform |
Автовышка | on_site | да | да | да | да | нет | нет |
Новая категория добавляется строкой в machinery_categories (code — системное обозначение типа, name_ru — текст UI, license_category — категория прав или пусто) + набор строк в category_pricing_types. JSON-конфига лицензий нет.
pricing_type, которого нет в связи с категорией (400 PRICING_TYPE_NOT_ALLOWED_FOR_CATEGORY).