{
"make": "Alfa Romeo",
"model": "Giulia",
"year": null,
"generation": "952",
"body_type": "sedan",
"note": null,
"source": "ai_candidate_unmapped"
}
{
"primary_model": "gpt-4.1-mini",
"fallback_model": "gpt-4.1",
"used_model": "gpt-4.1-mini",
"attempt_label": "primary",
"is_fallback_attempt": false,
"fallback_reason": null,
"duration_ms": 30968,
"http_status": 200,
"response": {
"id": "resp_01955288f4358375006a042a98e330819a8a5df0e0f6315038",
"object": "response",
"created_at": 1778657945,
"status": "completed",
"background": false,
"billing": {
"payer": "developer"
},
"completed_at": 1778657973,
"error": null,
"frequency_penalty": 0,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"max_tool_calls": null,
"model": "gpt-4.1-mini-2025-04-14",
"moderation": null,
"output": [
{
"id": "msg_01955288f4358375006a042aa93e90819ab63e40c356f26049",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"annotations": [],
"logprobs": [],
"text": "{\"vehicle\":{\"top_candidate\":{\"make\":\"Alfa Romeo\",\"model\":\"Giulia\",\"generation\":\"952\",\"year_from\":2015,\"year_to\":null,\"body_type\":\"sedan\",\"confidence\":0.95},\"candidates\":[{\"make\":\"Alfa Romeo\",\"model\":\"Giulia\",\"generation\":\"952\",\"year_from\":2015,\"year_to\":null,\"body_type\":\"sedan\",\"confidence\":0.95}],\"needs_user_confirmation\":true},\"detected_parts\":[{\"raw_part_name\":\"front bumper\",\"normalized_part_name\":\"bumper\",\"category_key\":\"bumper\",\"side\":\"left\",\"position\":\"front\",\"image_role\":\"front\",\"damage_type\":\"broken/cracked\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"left headlight\",\"normalized_part_name\":\"headlight\",\"category_key\":\"lighting\",\"side\":\"left\",\"position\":\"front\",\"image_role\":\"front\",\"damage_type\":\"broken\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"left front fender\",\"normalized_part_name\":\"fender\",\"category_key\":\"fender\",\"side\":\"left\",\"position\":\"front\",\"image_role\":\"front\",\"damage_type\":\"crushed/dented\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left front door\",\"normalized_part_name\":\"front door\",\"category_key\":\"door\",\"side\":\"left\",\"position\":\"side\",\"image_role\":\"left\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"left rear door\",\"normalized_part_name\":\"rear door\",\"category_key\":\"door\",\"side\":\"left\",\"position\":\"side\",\"image_role\":\"left\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left rear fender quarter panel\",\"normalized_part_name\":\"rear quarter panel\",\"category_key\":\"fender\",\"side\":\"left\",\"position\":\"rear\",\"image_role\":\"left\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left mirror\",\"normalized_part_name\":\"side mirror\",\"category_key\":\"mirror\",\"side\":\"left\",\"position\":\"side\",\"image_role\":\"left\",\"damage_type\":\"missing broken\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"roof\",\"normalized_part_name\":\"roof\",\"category_key\":\"body\",\"side\":\"center\",\"position\":\"upper\",\"image_role\":\"damage_detail\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left rocker panel\",\"normalized_part_name\":\"rocker panel\",\"category_key\":\"body\",\"side\":\"left\",\"position\":\"lower\",\"image_role\":\"damage_detail\",\"damage_type\":\"damaged bent\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"front windshield\",\"normalized_part_name\":\"windshield\",\"category_key\":\"glass\",\"side\":\"center\",\"position\":\"front\",\"image_role\":\"damage_detail\",\"damage_type\":\"cracked shattered\",\"damage_severity\":\"severe\",\"confidence\":0.9}],\"image_quality\":{\"front\":\"good\",\"rear\":\"good\",\"left\":\"good\",\"right\":\"good\"},\"warnings\":[\"Molimo potvrdite točnost identificiranih dijelova i stupanj oštećenja.\"],\"questions_for_user\":[\"Jesu li na vozilu dodatna oštećenja koja nisu jasno vidljiva na slikama?\",\"Je li točan model i godina vozila Alfa Romeo Giulia (gen. 952) od 2015. nadalje?\"],\"overall_confidence\":0.9,\"needs_user_confirmation\":true}"
}
],
"role": "assistant"
}
],
"parallel_tool_calls": true,
"presence_penalty": 0,
"previous_response_id": null,
"prompt_cache_key": null,
"prompt_cache_retention": "in_memory",
"reasoning": {
"effort": null,
"summary": null
},
"safety_identifier": null,
"service_tier": "default",
"store": true,
"temperature": 1,
"text": {
"format": {
"type": "json_schema",
"description": null,
"name": "ai_vehicle_analysis",
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"vehicle",
"detected_parts",
"image_quality",
"warnings",
"questions_for_user",
"overall_confidence",
"needs_user_confirmation"
],
"properties": {
"vehicle": {
"type": "object",
"additionalProperties": false,
"required": [
"top_candidate",
"candidates",
"needs_user_confirmation"
],
"properties": {
"top_candidate": {
"type": "object",
"additionalProperties": false,
"required": [
"make",
"model",
"generation",
"year_from",
"year_to",
"body_type",
"confidence"
],
"properties": {
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"generation": {
"type": "string"
},
"year_from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"year_to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"body_type": {
"type": "string"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"make",
"model",
"generation",
"year_from",
"year_to",
"body_type",
"confidence"
],
"properties": {
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"generation": {
"type": "string"
},
"year_from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"year_to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"body_type": {
"type": "string"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
}
},
"needs_user_confirmation": {
"type": "boolean"
}
}
},
"detected_parts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"raw_part_name",
"normalized_part_name",
"category_key",
"side",
"position",
"image_role",
"damage_type",
"damage_severity",
"confidence"
],
"properties": {
"raw_part_name": {
"type": "string"
},
"normalized_part_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"category_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"side": {
"type": "string",
"enum": [
"left",
"right",
"center",
"both",
"unknown",
"not_applicable"
]
},
"position": {
"type": "string",
"enum": [
"front",
"rear",
"side",
"upper",
"lower",
"interior",
"unknown"
]
},
"image_role": {
"type": "string",
"enum": [
"front",
"rear",
"left",
"right",
"extra",
"damage_detail",
"unknown"
]
},
"damage_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"damage_severity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
}
},
"image_quality": {
"type": "object",
"additionalProperties": false,
"required": [
"front",
"rear",
"left",
"right"
],
"properties": {
"front": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"rear": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"left": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"right": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
}
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"questions_for_user": {
"type": "array",
"items": {
"type": "string"
}
},
"overall_confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"needs_user_confirmation": {
"type": "boolean"
}
}
},
"strict": true
},
"verbosity": "medium"
},
"tool_choice": "auto",
"tools": [],
"top_logprobs": 0,
"top_p": 1,
"truncation": "disabled",
"usage": {
"input_tokens": 21848,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 754,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 22602
},
"user": null,
"metadata": []
},
"ai_response": {
"vehicle": {
"top_candidate": {
"make": "Alfa Romeo",
"model": "Giulia",
"generation": "952",
"year_from": 2015,
"year_to": null,
"body_type": "sedan",
"confidence": 0.9499999999999999555910790149937383830547332763671875
},
"candidates": [
{
"make": "Alfa Romeo",
"model": "Giulia",
"generation": "952",
"year_from": 2015,
"year_to": null,
"body_type": "sedan",
"confidence": 0.9499999999999999555910790149937383830547332763671875
}
],
"needs_user_confirmation": true
},
"detected_parts": [
{
"raw_part_name": "front bumper",
"normalized_part_name": "bumper",
"category_key": "bumper",
"side": "left",
"position": "front",
"image_role": "front",
"damage_type": "broken/cracked",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "left headlight",
"normalized_part_name": "headlight",
"category_key": "lighting",
"side": "left",
"position": "front",
"image_role": "front",
"damage_type": "broken",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "left front fender",
"normalized_part_name": "fender",
"category_key": "fender",
"side": "left",
"position": "front",
"image_role": "front",
"damage_type": "crushed/dented",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left front door",
"normalized_part_name": "front door",
"category_key": "door",
"side": "left",
"position": "side",
"image_role": "left",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "left rear door",
"normalized_part_name": "rear door",
"category_key": "door",
"side": "left",
"position": "side",
"image_role": "left",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left rear fender quarter panel",
"normalized_part_name": "rear quarter panel",
"category_key": "fender",
"side": "left",
"position": "rear",
"image_role": "left",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left mirror",
"normalized_part_name": "side mirror",
"category_key": "mirror",
"side": "left",
"position": "side",
"image_role": "left",
"damage_type": "missing broken",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "roof",
"normalized_part_name": "roof",
"category_key": "body",
"side": "center",
"position": "upper",
"image_role": "damage_detail",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left rocker panel",
"normalized_part_name": "rocker panel",
"category_key": "body",
"side": "left",
"position": "lower",
"image_role": "damage_detail",
"damage_type": "damaged bent",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "front windshield",
"normalized_part_name": "windshield",
"category_key": "glass",
"side": "center",
"position": "front",
"image_role": "damage_detail",
"damage_type": "cracked shattered",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
}
],
"image_quality": {
"front": "good",
"rear": "good",
"left": "good",
"right": "good"
},
"warnings": [
"Molimo potvrdite točnost identificiranih dijelova i stupanj oštećenja."
],
"questions_for_user": [
"Jesu li na vozilu dodatna oštećenja koja nisu jasno vidljiva na slikama?",
"Je li točan model i godina vozila Alfa Romeo Giulia (gen. 952) od 2015. nadalje?"
],
"overall_confidence": 0.90000000000000002220446049250313080847263336181640625,
"needs_user_confirmation": true
},
"parse_error": null
}
ai_candidate_unmapped,
ready_for_search=true,
product_search_ready=false,
search_mode=disabled/inquiry_only
| analysis_id | 35 |
|---|---|
| public_token | 148017b112374cf07111436f391f47e7 |
| status | confirmed |
| image_count | 9 |
| OPENAI_API_KEY_CONFIGURED | true |
| OPENAI_VISION_MODEL | gpt-4.1-mini |
| OPENAI_VISION_FALLBACK_MODEL | gpt-4.1 |
| last_ai_raw_log_id | 103 |
| last_ai_status | vision_response |
| last_model_used | gpt-4.1-mini |
| raw_vehicle_candidates_count | 2 |
|---|---|
| saved_vehicle_candidates_count | 1 |
| raw_part_candidates_count | 10 |
| saved_part_candidates_count | 10 |
| mapped_vehicle_candidates_count | 0 |
| mapped_part_candidates_count | 0 |
| selected_vehicle_candidate_id | 48 |
| selected_part_candidate_ids | [175,176,177,178,179,180,181,182,183,184] |
| Rank | Naziv | Godiste | Sigurnost | Mapirano | Status | Akcija |
|---|---|---|---|---|---|---|
| 1 | Alfa Romeo Giulia 952 | 2015 - | 0.9500 (Visoka sigurnost) |
make: 3 model: null gen: null Nije mapirano na internu bazu vozila. |
top odabrano (korisnik/admin) nije mapirano | Dodaj vehicle alias |
| Rank | Dio | Strana/Pozicija | Image | Kategorija | Sigurnost | Status | Akcija |
|---|---|---|---|---|---|---|---|
| 1 |
front bumper front branik |
left / front | front |
id: null key: bumper Nije mapirano na internu kategoriju. |
0.9000 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 2 |
left headlight left far |
left / front | front |
id: null key: lighting Nije mapirano na internu kategoriju. |
0.9000 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 3 |
left front fender left front blatobran |
left / front | front |
id: null key: fender Nije mapirano na internu kategoriju. |
0.8500 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 4 |
left front door left front vrata |
left / side | left |
id: null key: door Nije mapirano na internu kategoriju. |
0.9000 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 5 |
left rear door left rear vrata |
left / side | left |
id: null key: door Nije mapirano na internu kategoriju. |
0.8500 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 6 |
left rear fender quarter panel left rear blatobran quarter panel |
left / rear | left |
id: null key: fender Nije mapirano na internu kategoriju. |
0.8500 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 7 |
left mirror left mirror |
left / side | left |
id: null key: mirror Nije mapirano na internu kategoriju. |
0.9000 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 8 |
roof roof |
center / upper | damage_detail |
id: null key: body Nije mapirano na internu kategoriju. |
0.8500 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 9 |
left rocker panel left prag |
left / lower | damage_detail |
id: null key: body Nije mapirano na internu kategoriju. |
0.9000 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
| 10 |
front windshield front windshield |
center / front | damage_detail |
id: null key: glass Nije mapirano na internu kategoriju. |
0.9000 (Visoka sigurnost) | odabrano needs confirm | Dodaj part alias |
{
"selected_part_candidate_ids": [
175,
177,
176,
179,
178,
181,
184,
182,
183,
180
]
}
{
"unmapped_part_candidate_ids": [
175,
177,
176,
179,
178,
181,
184,
182,
183,
180
]
}
{
"vehicle_source": "ai_candidate_unmapped",
"make_id": 3,
"model_id": null,
"generation_id": null,
"year_from": 2015,
"year_to": 2015,
"confirmed_vehicle_label": "ALFA ROMEO",
"manual_make": "Alfa Romeo",
"manual_model": "Giulia",
"manual_year": null,
"manual_generation": "952",
"manual_body_type": "sedan",
"manual_note": null,
"parts": [
{
"category_id": null,
"category_key": "bumper",
"side": "left",
"position": "front",
"raw_part_name": "front bumper",
"manual_note": null
},
{
"category_id": null,
"category_key": "fender",
"side": "left",
"position": "front",
"raw_part_name": "left front fender",
"manual_note": null
},
{
"category_id": null,
"category_key": "lighting",
"side": "left",
"position": "front",
"raw_part_name": "left headlight",
"manual_note": null
},
{
"category_id": null,
"category_key": "door",
"side": "left",
"position": "side",
"raw_part_name": "left rear door",
"manual_note": null
},
{
"category_id": null,
"category_key": "door",
"side": "left",
"position": "side",
"raw_part_name": "left front door",
"manual_note": null
},
{
"category_id": null,
"category_key": "mirror",
"side": "left",
"position": "side",
"raw_part_name": "left mirror",
"manual_note": null
},
{
"category_id": null,
"category_key": "glass",
"side": "center",
"position": "front",
"raw_part_name": "front windshield",
"manual_note": null
},
{
"category_id": null,
"category_key": "body",
"side": "center",
"position": "upper",
"raw_part_name": "roof",
"manual_note": null
},
{
"category_id": null,
"category_key": "body",
"side": "left",
"position": "lower",
"raw_part_name": "left rocker panel",
"manual_note": null
},
{
"category_id": null,
"category_key": "fender",
"side": "left",
"position": "rear",
"raw_part_name": "left rear fender quarter panel",
"manual_note": null
}
],
"needs_manual_category_mapping": true,
"product_search_ready": false,
"ready_for_search": true
}
| ID | Vrijeme | broj_rezultata | kliknuti_proizvod_id | Filter JSON |
|---|---|---|---|---|
| Nema search logova. | ||||
{
"primary_model": "gpt-4.1-mini",
"fallback_model": "gpt-4.1",
"used_model": "gpt-4.1-mini",
"attempt_label": "primary",
"is_fallback_attempt": false,
"fallback_reason": null,
"duration_ms": 30968,
"http_status": 200,
"request": {
"model": "gpt-4.1-mini",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "You analyze vehicle photos for an inquiry-only auto parts workflow.\nReturn only JSON that matches the provided schema.\nDo not suggest product IDs, OEM numbers, prices, or compatibility claims.\nAlways provide realistic confidence 0..1 values.\nVehicle candidates must describe make/model/generation when visible.\nDetected parts should only include visible parts likely related to the damage.\nIf uncertain, lower confidence and add warnings/questions_for_user.\nBusiness rule: always treat result as needs user confirmation.\nDamage detail photos are included; detected_parts should not be empty when visible damage exists.\nUI language for warnings/questions: hr."
},
{
"type": "input_text",
"text": "Image role: front"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: rear"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: left"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: right"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: damage_detail"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: damage_detail"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: damage_detail"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: damage_detail"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
},
{
"type": "input_text",
"text": "Image role: extra"
},
{
"type": "input_image",
"image_url": "[image data redacted, length=47]",
"detail": "auto"
}
]
}
],
"text": {
"format": {
"type": "json_schema",
"name": "ai_vehicle_analysis",
"strict": true,
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"vehicle",
"detected_parts",
"image_quality",
"warnings",
"questions_for_user",
"overall_confidence",
"needs_user_confirmation"
],
"properties": {
"vehicle": {
"type": "object",
"additionalProperties": false,
"required": [
"top_candidate",
"candidates",
"needs_user_confirmation"
],
"properties": {
"top_candidate": {
"type": "object",
"additionalProperties": false,
"required": [
"make",
"model",
"generation",
"year_from",
"year_to",
"body_type",
"confidence"
],
"properties": {
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"generation": {
"type": "string"
},
"year_from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"year_to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"body_type": {
"type": "string"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"make",
"model",
"generation",
"year_from",
"year_to",
"body_type",
"confidence"
],
"properties": {
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"generation": {
"type": "string"
},
"year_from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"year_to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"body_type": {
"type": "string"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
}
},
"needs_user_confirmation": {
"type": "boolean"
}
}
},
"detected_parts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"raw_part_name",
"normalized_part_name",
"category_key",
"side",
"position",
"image_role",
"damage_type",
"damage_severity",
"confidence"
],
"properties": {
"raw_part_name": {
"type": "string"
},
"normalized_part_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"category_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"side": {
"type": "string",
"enum": [
"left",
"right",
"center",
"both",
"unknown",
"not_applicable"
]
},
"position": {
"type": "string",
"enum": [
"front",
"rear",
"side",
"upper",
"lower",
"interior",
"unknown"
]
},
"image_role": {
"type": "string",
"enum": [
"front",
"rear",
"left",
"right",
"extra",
"damage_detail",
"unknown"
]
},
"damage_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"damage_severity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
}
},
"image_quality": {
"type": "object",
"additionalProperties": false,
"required": [
"front",
"rear",
"left",
"right"
],
"properties": {
"front": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"rear": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"left": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"right": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
}
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"questions_for_user": {
"type": "array",
"items": {
"type": "string"
}
},
"overall_confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"needs_user_confirmation": {
"type": "boolean"
}
}
}
}
}
}
}
{
"primary_model": "gpt-4.1-mini",
"fallback_model": "gpt-4.1",
"used_model": "gpt-4.1-mini",
"attempt_label": "primary",
"is_fallback_attempt": false,
"fallback_reason": null,
"duration_ms": 30968,
"http_status": 200,
"response": {
"id": "resp_01955288f4358375006a042a98e330819a8a5df0e0f6315038",
"object": "response",
"created_at": 1778657945,
"status": "completed",
"background": false,
"billing": {
"payer": "developer"
},
"completed_at": 1778657973,
"error": null,
"frequency_penalty": 0,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"max_tool_calls": null,
"model": "gpt-4.1-mini-2025-04-14",
"moderation": null,
"output": [
{
"id": "msg_01955288f4358375006a042aa93e90819ab63e40c356f26049",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"annotations": [],
"logprobs": [],
"text": "{\"vehicle\":{\"top_candidate\":{\"make\":\"Alfa Romeo\",\"model\":\"Giulia\",\"generation\":\"952\",\"year_from\":2015,\"year_to\":null,\"body_type\":\"sedan\",\"confidence\":0.95},\"candidates\":[{\"make\":\"Alfa Romeo\",\"model\":\"Giulia\",\"generation\":\"952\",\"year_from\":2015,\"year_to\":null,\"body_type\":\"sedan\",\"confidence\":0.95}],\"needs_user_confirmation\":true},\"detected_parts\":[{\"raw_part_name\":\"front bumper\",\"normalized_part_name\":\"bumper\",\"category_key\":\"bumper\",\"side\":\"left\",\"position\":\"front\",\"image_role\":\"front\",\"damage_type\":\"broken/cracked\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"left headlight\",\"normalized_part_name\":\"headlight\",\"category_key\":\"lighting\",\"side\":\"left\",\"position\":\"front\",\"image_role\":\"front\",\"damage_type\":\"broken\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"left front fender\",\"normalized_part_name\":\"fender\",\"category_key\":\"fender\",\"side\":\"left\",\"position\":\"front\",\"image_role\":\"front\",\"damage_type\":\"crushed/dented\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left front door\",\"normalized_part_name\":\"front door\",\"category_key\":\"door\",\"side\":\"left\",\"position\":\"side\",\"image_role\":\"left\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"left rear door\",\"normalized_part_name\":\"rear door\",\"category_key\":\"door\",\"side\":\"left\",\"position\":\"side\",\"image_role\":\"left\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left rear fender quarter panel\",\"normalized_part_name\":\"rear quarter panel\",\"category_key\":\"fender\",\"side\":\"left\",\"position\":\"rear\",\"image_role\":\"left\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left mirror\",\"normalized_part_name\":\"side mirror\",\"category_key\":\"mirror\",\"side\":\"left\",\"position\":\"side\",\"image_role\":\"left\",\"damage_type\":\"missing broken\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"roof\",\"normalized_part_name\":\"roof\",\"category_key\":\"body\",\"side\":\"center\",\"position\":\"upper\",\"image_role\":\"damage_detail\",\"damage_type\":\"dented/scratched\",\"damage_severity\":\"severe\",\"confidence\":0.85},{\"raw_part_name\":\"left rocker panel\",\"normalized_part_name\":\"rocker panel\",\"category_key\":\"body\",\"side\":\"left\",\"position\":\"lower\",\"image_role\":\"damage_detail\",\"damage_type\":\"damaged bent\",\"damage_severity\":\"severe\",\"confidence\":0.9},{\"raw_part_name\":\"front windshield\",\"normalized_part_name\":\"windshield\",\"category_key\":\"glass\",\"side\":\"center\",\"position\":\"front\",\"image_role\":\"damage_detail\",\"damage_type\":\"cracked shattered\",\"damage_severity\":\"severe\",\"confidence\":0.9}],\"image_quality\":{\"front\":\"good\",\"rear\":\"good\",\"left\":\"good\",\"right\":\"good\"},\"warnings\":[\"Molimo potvrdite točnost identificiranih dijelova i stupanj oštećenja.\"],\"questions_for_user\":[\"Jesu li na vozilu dodatna oštećenja koja nisu jasno vidljiva na slikama?\",\"Je li točan model i godina vozila Alfa Romeo Giulia (gen. 952) od 2015. nadalje?\"],\"overall_confidence\":0.9,\"needs_user_confirmation\":true}"
}
],
"role": "assistant"
}
],
"parallel_tool_calls": true,
"presence_penalty": 0,
"previous_response_id": null,
"prompt_cache_key": null,
"prompt_cache_retention": "in_memory",
"reasoning": {
"effort": null,
"summary": null
},
"safety_identifier": null,
"service_tier": "default",
"store": true,
"temperature": 1,
"text": {
"format": {
"type": "json_schema",
"description": null,
"name": "ai_vehicle_analysis",
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"vehicle",
"detected_parts",
"image_quality",
"warnings",
"questions_for_user",
"overall_confidence",
"needs_user_confirmation"
],
"properties": {
"vehicle": {
"type": "object",
"additionalProperties": false,
"required": [
"top_candidate",
"candidates",
"needs_user_confirmation"
],
"properties": {
"top_candidate": {
"type": "object",
"additionalProperties": false,
"required": [
"make",
"model",
"generation",
"year_from",
"year_to",
"body_type",
"confidence"
],
"properties": {
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"generation": {
"type": "string"
},
"year_from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"year_to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"body_type": {
"type": "string"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"make",
"model",
"generation",
"year_from",
"year_to",
"body_type",
"confidence"
],
"properties": {
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"generation": {
"type": "string"
},
"year_from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"year_to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"body_type": {
"type": "string"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
}
},
"needs_user_confirmation": {
"type": "boolean"
}
}
},
"detected_parts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"raw_part_name",
"normalized_part_name",
"category_key",
"side",
"position",
"image_role",
"damage_type",
"damage_severity",
"confidence"
],
"properties": {
"raw_part_name": {
"type": "string"
},
"normalized_part_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"category_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"side": {
"type": "string",
"enum": [
"left",
"right",
"center",
"both",
"unknown",
"not_applicable"
]
},
"position": {
"type": "string",
"enum": [
"front",
"rear",
"side",
"upper",
"lower",
"interior",
"unknown"
]
},
"image_role": {
"type": "string",
"enum": [
"front",
"rear",
"left",
"right",
"extra",
"damage_detail",
"unknown"
]
},
"damage_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"damage_severity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
}
},
"image_quality": {
"type": "object",
"additionalProperties": false,
"required": [
"front",
"rear",
"left",
"right"
],
"properties": {
"front": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"rear": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"left": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
},
"right": {
"type": "string",
"enum": [
"good",
"medium",
"poor",
"unknown"
]
}
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"questions_for_user": {
"type": "array",
"items": {
"type": "string"
}
},
"overall_confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"needs_user_confirmation": {
"type": "boolean"
}
}
},
"strict": true
},
"verbosity": "medium"
},
"tool_choice": "auto",
"tools": [],
"top_logprobs": 0,
"top_p": 1,
"truncation": "disabled",
"usage": {
"input_tokens": 21848,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 754,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 22602
},
"user": null,
"metadata": []
},
"ai_response": {
"vehicle": {
"top_candidate": {
"make": "Alfa Romeo",
"model": "Giulia",
"generation": "952",
"year_from": 2015,
"year_to": null,
"body_type": "sedan",
"confidence": 0.9499999999999999555910790149937383830547332763671875
},
"candidates": [
{
"make": "Alfa Romeo",
"model": "Giulia",
"generation": "952",
"year_from": 2015,
"year_to": null,
"body_type": "sedan",
"confidence": 0.9499999999999999555910790149937383830547332763671875
}
],
"needs_user_confirmation": true
},
"detected_parts": [
{
"raw_part_name": "front bumper",
"normalized_part_name": "bumper",
"category_key": "bumper",
"side": "left",
"position": "front",
"image_role": "front",
"damage_type": "broken/cracked",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "left headlight",
"normalized_part_name": "headlight",
"category_key": "lighting",
"side": "left",
"position": "front",
"image_role": "front",
"damage_type": "broken",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "left front fender",
"normalized_part_name": "fender",
"category_key": "fender",
"side": "left",
"position": "front",
"image_role": "front",
"damage_type": "crushed/dented",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left front door",
"normalized_part_name": "front door",
"category_key": "door",
"side": "left",
"position": "side",
"image_role": "left",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "left rear door",
"normalized_part_name": "rear door",
"category_key": "door",
"side": "left",
"position": "side",
"image_role": "left",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left rear fender quarter panel",
"normalized_part_name": "rear quarter panel",
"category_key": "fender",
"side": "left",
"position": "rear",
"image_role": "left",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left mirror",
"normalized_part_name": "side mirror",
"category_key": "mirror",
"side": "left",
"position": "side",
"image_role": "left",
"damage_type": "missing broken",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "roof",
"normalized_part_name": "roof",
"category_key": "body",
"side": "center",
"position": "upper",
"image_role": "damage_detail",
"damage_type": "dented/scratched",
"damage_severity": "severe",
"confidence": 0.84999999999999997779553950749686919152736663818359375
},
{
"raw_part_name": "left rocker panel",
"normalized_part_name": "rocker panel",
"category_key": "body",
"side": "left",
"position": "lower",
"image_role": "damage_detail",
"damage_type": "damaged bent",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
},
{
"raw_part_name": "front windshield",
"normalized_part_name": "windshield",
"category_key": "glass",
"side": "center",
"position": "front",
"image_role": "damage_detail",
"damage_type": "cracked shattered",
"damage_severity": "severe",
"confidence": 0.90000000000000002220446049250313080847263336181640625
}
],
"image_quality": {
"front": "good",
"rear": "good",
"left": "good",
"right": "good"
},
"warnings": [
"Molimo potvrdite točnost identificiranih dijelova i stupanj oštećenja."
],
"questions_for_user": [
"Jesu li na vozilu dodatna oštećenja koja nisu jasno vidljiva na slikama?",
"Je li točan model i godina vozila Alfa Romeo Giulia (gen. 952) od 2015. nadalje?"
],
"overall_confidence": 0.90000000000000002220446049250313080847263336181640625,
"needs_user_confirmation": true
},
"parse_error": null
}
{
"session_id": "anon_d1b51d57c1327922404792ea",
"language_code": "hr",
"client_ip": "86.33.71.113",
"uploaded_image_roles": [
"front",
"rear",
"left",
"right",
"damage_detail",
"damage_detail",
"damage_detail",
"damage_detail",
"extra"
],
"missing_image_roles": [],
"uploaded_count": 9,
"max_total_images": 10
}