Маркер «вот где остановилась mechanic-сессия» — не разбито по логическим коммитам,
зафиксировано целиком чтобы не потерять при отвлечении/чекаутах.
Modified:
- pages/InspectionEditor.tsx — расширение damage-flow внутри редактора
- pages/VehicleCard.tsx — vendor data + расширение карточки
- pages/InspectionReview.tsx — обновлённый review
- api/{auth,inspections,photos,vehicles}.ts — новые endpoints для TT + photo flow
- components/damage-flow/DamageClassifyDialog.tsx — multi-step UI
- components/vehicle-scheme/VendorVehicleScheme.tsx — SVG zone interaction
- data/damageVocabulary.ts — обновлённый словарь повреждений
- frontend index.html/manifest/icons — PWA-метаданные
New (untracked):
- components/damage-flow/PhotoAnnotateStep.tsx — новый шаг flow'а
- components/tt/ — vendor TT-state UI
- pages/TtStateDetail.tsx — экран осмотра вендора
- recon/findings/damage_model.md + damage_vocabulary.json + scheme/ — recon docs
Cleanup: удалены bash-garbage 'Last' и 'dict[str' из frontend/.
91 lines
3.3 KiB
JSON
91 lines
3.3 KiB
JSON
{
|
||
"_meta": {
|
||
"source": "Ttc.dll #US heap, contiguous block at offsets 0xc2e24–0xc3084",
|
||
"confidence": "HIGH — full block scanned; order is the binary storage order which matches app display order (repository pattern typically loads in definition order)",
|
||
"notes": [
|
||
"Items 0–12 are general exterior damage types (user-selectable for any zone)",
|
||
"Items 13–18 appear to be salon-specific (Грязный салон, Запах табака, etc.) — shown only for interior zones (44–46 seats, salon)",
|
||
"Установлено/Снято (19–20) and Контроль (21) are semi-system states used for equipment completeness zones (33–48 area)",
|
||
"Штат (25) appears to be a system/staff marker, not user-selectable",
|
||
"Порез, Прокол, Порвано are tire-specific damage types for zones 17–20",
|
||
"Есть/Нет повреждений found in binary (0x4599a/0x4597a) — likely used for salon damage yes/no toggle, not in the standard list"
|
||
]
|
||
},
|
||
"damage_types_ordered": [
|
||
"Вмятина",
|
||
"Царапина",
|
||
"Трещина",
|
||
"Повреждено",
|
||
"Скол",
|
||
"Отсутствует",
|
||
"Прожжено",
|
||
"Погнуто",
|
||
"Требуется мойка",
|
||
"Не работает",
|
||
"Порез",
|
||
"Прокол",
|
||
"Порвано",
|
||
"Пятна",
|
||
"Грязный салон",
|
||
"Запах табака",
|
||
"Повреждение салонных ковриков",
|
||
"Повреждение обшивки дверей",
|
||
"Сломанные ручки",
|
||
"Установлено",
|
||
"Снято",
|
||
"Контроль",
|
||
"Требуется химчистка",
|
||
"Затертость",
|
||
"Грыжа",
|
||
"Штат"
|
||
],
|
||
"exterior_selectable": [
|
||
"Вмятина",
|
||
"Царапина",
|
||
"Трещина",
|
||
"Повреждено",
|
||
"Скол",
|
||
"Отсутствует",
|
||
"Прожжено",
|
||
"Погнуто",
|
||
"Требуется мойка",
|
||
"Не работает",
|
||
"Порез",
|
||
"Прокол",
|
||
"Порвано",
|
||
"Пятна",
|
||
"Затертость",
|
||
"Грыжа"
|
||
],
|
||
"salon_selectable": [
|
||
"Вмятина",
|
||
"Царапина",
|
||
"Трещина",
|
||
"Повреждено",
|
||
"Скол",
|
||
"Отсутствует",
|
||
"Прожжено",
|
||
"Погнуто",
|
||
"Требуется мойка",
|
||
"Не работает",
|
||
"Пятна",
|
||
"Грязный салон",
|
||
"Запах табака",
|
||
"Повреждение салонных ковриков",
|
||
"Повреждение обшивки дверей",
|
||
"Сломанные ручки",
|
||
"Требуется химчистка",
|
||
"Затертость",
|
||
"Грыжа"
|
||
],
|
||
"severity_scale": {
|
||
"positions": 3,
|
||
"labels": ["Легкое", "Среднее", "Тяжелое"],
|
||
"values": [0, 1, 2],
|
||
"widget": "SeekBar (vehicleInspectionDegreeSelect / newDamageSeekBarDamageDegree)",
|
||
"api_field": "degree (lowercase, in JSON contract)",
|
||
"default": "Легкое (index 0)",
|
||
"source_note": "Легкое found at 0x59d79 (adjacent to 'Добавить повреждение' button label = default/initial value); Среднее+Тяжелое found together at 0xc39e8–0xc39f8 (loading state transitions)"
|
||
}
|
||
}
|