Files
mechanic-pwa/mechanic-pwa/frontend/src/lib/inspectionSlots.ts
T
tremble7681andClaude Opus 4.8 2c02d15a10 repairs(pwa): восстановлены детали/правка/лента с деньгами + слияние со складом
Прод mechanic-pwa собирался с ветки feat/driver-pwa, а main отставал на 18
коммитов (24.05→10.06). Сборка от 29.07 ушла в прод с main — из приложения
пропали разделы. Вернул содержимое ветки и заново наложил работу 29.07.

Возвращено:
- лента: сумма за месяц, разделители по дням с итогом дня, цена в строке,
  бейдж «с улицы»;
- карточка ремонта /repairs/:id (ссылка из ленты вела в никуда);
- правка ремонта /repairs/:id/edit (окно 1 час);
- ремонт «с улицы» /repairs/new-external;
- блок «Механики» — делёж оплаты 1/N;
- vitest-харнесс и вынесенные в lib/ тестируемые хелперы.

Поверх наложено (работа 29.07): несколько замен масла за заезд, запчасти из
складского каталога вместо свободного текста.

Дополнительно:
- пикер деталей вынесен в общий PartsPickerModal (создание + правка). Без
  этого правка ремонта отправляла детали без part_id и сверка склада
  возвращала всё списанное на остаток;
- форма правки знает про 1:N масла — раньше схлопнула бы вторую запись;
- карточка ремонта показывает артикул детали и все замены масла.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 11:53:02 +10:00

38 lines
2.0 KiB
TypeScript

/**
* Слоты фото осмотра авто. Вынесены из InspectionEditor, чтобы быть покрытыми
* тестами. Все типы осмотров (приёмка/выдача/плановый/ad-hoc) показывают один
* набор — фидбек: общее состояние машины фиксируем всегда.
*
* ВАЖНО: `side` — стабильный ключ слота (часть S3-ключа фото и значение
* PhotoSide на бэке). Подпись (`label`) менять можно, ключ — нет, иначе уже
* снятые фото осиротеют. Поэтому «Салон перед» имеет ключ `interior` (бывш. «Салон»).
*/
export interface InspectionSlot {
side: string;
label: string;
}
export const SLOTS_GENERAL: InspectionSlot[] = [
{ side: "front", label: "Перед" },
{ side: "rear", label: "Зад" },
{ side: "left", label: "Левый бок" },
{ side: "right", label: "Правый бок" },
{ side: "vin", label: "VIN" },
{ side: "odometer", label: "Одометр" },
{ side: "interior", label: "Салон перед" },
{ side: "interior-rear", label: "Салон зад" },
{ side: "trunk", label: "Багажник" },
{ side: "free", label: "Свободное" },
];
export const SLOT_JACK: InspectionSlot = { side: "jack", label: "Домкрат" };
// Шильдик замены масла — отдельный слот при выдаче/приёмке. Фото нужно как для
// сверки текущего пробега со следующим ТО, так и для контроля что водитель не
// клеит свой стикер.
export const SLOT_OIL_STICKER: InspectionSlot = { side: "oil-sticker", label: "Шильдик замены масла" };
export function slotsForType(_type: string): InspectionSlot[] {
return [...SLOTS_GENERAL, SLOT_JACK, SLOT_OIL_STICKER];
}