wip(mechanic): inflight damage-flow + vendor scheme + PhotoAnnotate + TT views

Маркер «вот где остановилась 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/.
This commit is contained in:
2026-05-20 11:16:21 +10:00
parent e0083b894f
commit 7e2cf0c9c8
132 changed files with 2823 additions and 106 deletions
+66
View File
@@ -0,0 +1,66 @@
{
"_meta": {
"source": "Ttc.dll #US heap, offsets 0x751c70x75a81 (consecutive UTF-16 LE strings)",
"confidence": "HIGH — 57 strings appear in exact sequential order in a single contiguous block, matching the 57 class IDs (0..56) in exterior_scheme_complete.svg",
"geographic_check": "confirmed: zone 0 (front bumper) at SVG Y=119 (top), zone 22 (rear bumper) at Y=1064 (bottom); left-side zones have small X, right-side zones have large X",
"note_typo": "zone 15 has a typo in the vendor binary: 'правй порог' (missing 'ы') — preserve as-is for matching but display as 'правый порог'",
"note_zones_34_57": "zones 3437 are fog lights (противотуманки), zones 3839 mirrors, 4043 disks, 4446 salon seats, 4748 rear sill extensions, 4956 bumper sub-parts and pillars"
},
"0": "передний бампер",
"1": "передняя правая фара",
"2": "передняя левая фара",
"3": "радиатор",
"4": "капот",
"5": "лобовое стекло",
"6": "переднее левое крыло",
"7": "переднее правое крыло",
"8": "заднее левое крыло",
"9": "заднее правое крыло",
"10": "передняя левая дверь",
"11": "передняя правая дверь",
"12": "задняя левая дверь",
"13": "задняя правая дверь",
"14": "левый порог",
"15": "правый порог",
"16": "крыша",
"17": "передняя правая резина",
"18": "передняя левая резина",
"19": "задняя правая резина",
"20": "задняя левая резина",
"21": "багажник",
"22": "задний бампер",
"23": "заднее стекло",
"24": "переднее левое стекло",
"25": "переднее правое стекло",
"26": "заднее левое стекло",
"27": "заднее правое стекло",
"28": "передняя левая форточка",
"29": "передняя правая форточка",
"30": "задняя правая форточка",
"31": "задняя левая форточка",
"32": "задняя правая фара",
"33": "задняя левая фара",
"34": "передняя правая противотуманка",
"35": "передняя левая противотуманка",
"36": "задняя правая противотуманка",
"37": "задняя левая противотуманка",
"38": "правое зеркало",
"39": "левое зеркало",
"40": "задний левый диск",
"41": "задний правый диск",
"42": "передний правый диск",
"43": "передний левый диск",
"44": "водительское сидение",
"45": "пассажирское сидение",
"46": "задний диван",
"47": "задний левый порог",
"48": "задний правый порог",
"49": "задняя левая часть бампера",
"50": "задняя правая часть бампера",
"51": "передняя левая часть бампера",
"52": "передняя правая часть бампера",
"53": "задняя левая стойка",
"54": "задняя правая стойка",
"55": "передняя левая стойка",
"56": "передняя правая стойка"
}