{"timestamp": "2025-12-10 13:13:20,158", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:20.157780Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-10 13:13:20,158", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:20.158141Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-10 13:13:20,159", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:20.159056Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-10 13:13:20,159", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:20.159168Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-10 13:13:20,159", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:20.159259Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-10 13:13:20,159", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:20.159333Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-10 13:13:20,164", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:20.164682Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-10 13:13:26,235", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"filename\": \"9.jpg\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.235492Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-10 13:13:26,236", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"filename\": \"9.jpg\", \"content_type\": \"image/jpeg\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.236005Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-10 13:13:26,236", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"filename\": \"9.jpg\", \"size_bytes\": 85771, \"size_kb\": 83.76, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.236308Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-10 13:13:26,236", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.236560Z\"}", "module": "routes", "function": "insert_menu_items", "line": 101}
{"timestamp": "2025-12-10 13:13:26,236", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"city\": \"sofia\", \"filename\": \"9.jpg\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.236818Z\"}", "module": "routes", "function": "insert_menu_items", "line": 121}
{"timestamp": "2025-12-10 13:13:26,237", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"city\": \"sofia\", \"filename\": \"9.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.237372Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-10 13:13:26,237", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"image_size_bytes\": 85771, \"mime_type\": \"image/jpeg\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.237580Z\"}", "module": "service", "function": "process_menu_upload", "line": 62}
{"timestamp": "2025-12-10 13:13:26,237", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.237819Z\"}", "module": "service", "function": "extract_menu", "line": 52}
{"timestamp": "2025-12-10 13:13:26,238", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.238229Z\"}", "module": "service", "function": "_process_batch", "line": 109}
{"timestamp": "2025-12-10 13:13:26,251", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:26.251930Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-10 13:13:38,559", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-10 13:13:38,566", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 48714, \"output_tokens\": 559, \"total_tokens\": 49273, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.127375, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.566408Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-10 13:13:38,567", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 2, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.567013Z\"}", "module": "service", "function": "_process_batch", "line": 147}
{"timestamp": "2025-12-10 13:13:38,568", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 2, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.568071Z\"}", "module": "service", "function": "extract_menu", "line": 83}
{"timestamp": "2025-12-10 13:13:38,568", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"response_data\": {\"menu\": {\"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"categories\": [{\"name\": \"\\u041f\\u0438\\u0432\\u0430\", \"description\": \"Beers / Birre\", \"items\": [{\"name\": \"Lav\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Lav\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Erdinger\", \"description\": null, \"price\": \"450\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Erdinger\", \"description\": null, \"price\": \"550\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Lav Twist\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Kvas\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Grimbergen Blond\", \"description\": null, \"price\": \"300\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Tuborg\", \"description\": null, \"price\": \"290\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Tuborg\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Budweisser to\\u010deni\", \"description\": null, \"price\": \"260\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Budweisser to\\u010deni\", \"description\": null, \"price\": \"350\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Carlsberg\", \"description\": null, \"price\": \"290\", \"currency\": \"MKD\", \"serving_size\": \"0,25 \\u043b\", \"notes\": null}, {\"name\": \"Carlsberg\", \"description\": null, \"price\": \"220\", \"currency\": \"MKD\", \"serving_size\": \"0,4 \\u043b\", \"notes\": null}]}, {\"name\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"description\": \"Somersby / Somersby\", \"items\": [{\"name\": \"Apple cider\", \"description\": null, \"price\": \"380\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Blackberry\", \"description\": null, \"price\": \"380\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Pear cider\", \"description\": null, \"price\": \"380\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o-mini\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.568467Z\"}", "module": "service", "function": "process_menu_upload", "line": 84}
{"timestamp": "2025-12-10 13:13:38,569", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"categories_count\": 2, \"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"model_used\": \"gpt-4o-mini\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.569768Z\"}", "module": "service", "function": "process_menu_upload", "line": 103}
{"timestamp": "2025-12-10 13:13:38,570", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"categories_to_transform\": 2, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.569987Z\"}", "module": "service", "function": "process_menu_upload", "line": 120}
{"timestamp": "2025-12-10 13:13:38,570", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 2, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.570277Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-10 13:13:38,571", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 2, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.571518Z\"}", "module": "adapter", "function": "transform", "line": 52}
{"timestamp": "2025-12-10 13:13:38,572", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"payload\": {\"city\": \"sofia\", \"token\": \"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\", \"menu\": [{\"name\": \"\\u041f\\u0438\\u0432\\u0430\", \"name_uk\": \"\\u041f\\u0438\\u0432\\u0430\", \"description\": \"Beers / Birre\", \"description_uk\": \"Beers / Birre\", \"items\": [{\"name\": \"Lav\", \"name_uk\": \"Lav\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Lav\", \"name_uk\": \"Lav\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Erdinger\", \"name_uk\": \"Erdinger\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 450.0}]}, {\"name\": \"Erdinger\", \"name_uk\": \"Erdinger\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 550.0}]}, {\"name\": \"Lav Twist\", \"name_uk\": \"Lav Twist\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Kvas\", \"name_uk\": \"Kvas\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Grimbergen Blond\", \"name_uk\": \"Grimbergen Blond\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 300.0}]}, {\"name\": \"Tuborg\", \"name_uk\": \"Tuborg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 290.0}]}, {\"name\": \"Tuborg\", \"name_uk\": \"Tuborg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Budweisser to\\u010deni\", \"name_uk\": \"Budweisser to\\u010deni\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 260.0}]}, {\"name\": \"Budweisser to\\u010deni\", \"name_uk\": \"Budweisser to\\u010deni\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 350.0}]}, {\"name\": \"Carlsberg\", \"name_uk\": \"Carlsberg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 290.0}]}, {\"name\": \"Carlsberg\", \"name_uk\": \"Carlsberg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 220.0}]}]}, {\"name\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"name_uk\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"description\": \"Somersby / Somersby\", \"description_uk\": \"Somersby / Somersby\", \"items\": [{\"name\": \"Apple cider\", \"name_uk\": \"Apple cider\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}, {\"name\": \"Blackberry\", \"name_uk\": \"Blackberry\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}, {\"name\": \"Pear cider\", \"name_uk\": \"Pear cider\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:13:38.571962Z\"}", "module": "service", "function": "process_menu_upload", "line": 134}
{"timestamp": "2025-12-10 13:13:38,574", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"error\": \"local variable 'total_items' referenced before assignment\", \"error_type\": \"UnboundLocalError\", \"event\": \"STEP_2_FAILED: Adapter transformation error\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-10T12:13:38.574416Z\"}", "module": "service", "function": "process_menu_upload", "line": 163}
{"timestamp": "2025-12-10 13:13:38,575", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-10T12:13:38.575055Z\"}", "module": "service", "function": "process_menu_upload", "line": 258}
{"timestamp": "2025-12-10 13:13:38,575", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"61d54aab-7086-4403-afbc-75c2aa4f44cc\", \"city\": \"sofia\", \"filename\": \"9.jpg\", \"error_stage\": \"unknown\", \"error\": \"local variable 'total_items' referenced before assignment\", \"error_type\": \"UnboundLocalError\", \"processing_time_seconds\": 12.34, \"status\": \"FAILED\", \"event\": \"MENU_UPLOAD_PROCESSING_FAILED\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-10T12:13:38.575375Z\"}", "module": "service", "function": "process_menu_upload", "line": 261}
{"timestamp": "2025-12-10 13:13:38,575", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-10T12:13:38.575904Z\"}", "module": "service", "function": "process_menu_upload", "line": 272}
{"timestamp": "2025-12-10 13:16:59,782", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:16:59.781940Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-10 13:16:59,783", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:16:59.783836Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-10 13:17:00,373", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:00.372932Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-10 13:17:00,373", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:00.373309Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-10 13:17:00,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:00.373524Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-10 13:17:00,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:00.373616Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-10 13:17:00,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:00.373700Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-10 13:17:00,373", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:00.373771Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-10 13:17:00,405", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:00.405038Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-10 13:17:14,449", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.449334Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-10 13:17:14,449", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.449621Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-10 13:17:14,900", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.900011Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-10 13:17:14,900", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.900468Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-10 13:17:14,900", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.900726Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-10 13:17:14,900", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.900883Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-10 13:17:14,901", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.900995Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-10 13:17:14,901", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.901080Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-10 13:17:14,907", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:17:14.907140Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-10 13:20:21,541", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:21.540858Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-10 13:20:21,542", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:21.542089Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-10 13:20:31,831", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:31.830893Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-10 13:20:31,831", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:31.831261Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-10 13:20:31,831", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:31.831466Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-10 13:20:31,831", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:31.831558Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-10 13:20:31,831", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:31.831648Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-10 13:20:31,831", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:31.831725Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-10 13:20:31,836", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:31.836841Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-10 13:20:37,841", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"filename\": \"9.jpg\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.840908Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-10 13:20:37,841", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"filename\": \"9.jpg\", \"content_type\": \"image/jpeg\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.841437Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-10 13:20:37,841", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"filename\": \"9.jpg\", \"size_bytes\": 85771, \"size_kb\": 83.76, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.841764Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-10 13:20:37,842", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.842062Z\"}", "module": "routes", "function": "insert_menu_items", "line": 101}
{"timestamp": "2025-12-10 13:20:37,842", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"city\": \"sofia\", \"filename\": \"9.jpg\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.842372Z\"}", "module": "routes", "function": "insert_menu_items", "line": 121}
{"timestamp": "2025-12-10 13:20:37,843", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"city\": \"sofia\", \"filename\": \"9.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.843009Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-10 13:20:37,843", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"image_size_bytes\": 85771, \"mime_type\": \"image/jpeg\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.843267Z\"}", "module": "service", "function": "process_menu_upload", "line": 62}
{"timestamp": "2025-12-10 13:20:37,843", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.843547Z\"}", "module": "service", "function": "extract_menu", "line": 52}
{"timestamp": "2025-12-10 13:20:37,844", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.844025Z\"}", "module": "service", "function": "_process_batch", "line": 109}
{"timestamp": "2025-12-10 13:20:37,858", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:37.858361Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-10 13:20:50,241", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-10 13:20:50,247", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 48714, \"output_tokens\": 559, \"total_tokens\": 49273, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.127375, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.247231Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-10 13:20:50,247", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 2, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.247789Z\"}", "module": "service", "function": "_process_batch", "line": 147}
{"timestamp": "2025-12-10 13:20:50,248", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 2, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.248657Z\"}", "module": "service", "function": "extract_menu", "line": 83}
{"timestamp": "2025-12-10 13:20:50,249", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"response_data\": {\"menu\": {\"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"categories\": [{\"name\": \"\\u041f\\u0438\\u0432\\u0430\", \"description\": \"Beers / Birre\", \"items\": [{\"name\": \"Lav\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Lav\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Erdinger\", \"description\": null, \"price\": \"450\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Erdinger\", \"description\": null, \"price\": \"550\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Lav Twist\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Kvas\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Grimbergen Blond\", \"description\": null, \"price\": \"300\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Tuborg\", \"description\": null, \"price\": \"290\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Tuborg\", \"description\": null, \"price\": \"240\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Budweisser to\\u010deni\", \"description\": null, \"price\": \"260\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Budweisser to\\u010deni\", \"description\": null, \"price\": \"350\", \"currency\": \"MKD\", \"serving_size\": \"0,5 \\u043b\", \"notes\": null}, {\"name\": \"Carlsberg\", \"description\": null, \"price\": \"290\", \"currency\": \"MKD\", \"serving_size\": \"0,25 \\u043b\", \"notes\": null}, {\"name\": \"Carlsberg\", \"description\": null, \"price\": \"220\", \"currency\": \"MKD\", \"serving_size\": \"0,4 \\u043b\", \"notes\": null}]}, {\"name\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"description\": \"Somersby / Somersby\", \"items\": [{\"name\": \"Apple cider\", \"description\": null, \"price\": \"380\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Blackberry\", \"description\": null, \"price\": \"380\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}, {\"name\": \"Pear cider\", \"description\": null, \"price\": \"380\", \"currency\": \"MKD\", \"serving_size\": \"0,33 \\u043b\", \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o-mini\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.249006Z\"}", "module": "service", "function": "process_menu_upload", "line": 84}
{"timestamp": "2025-12-10 13:20:50,250", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"categories_count\": 2, \"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"model_used\": \"gpt-4o-mini\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.250353Z\"}", "module": "service", "function": "process_menu_upload", "line": 103}
{"timestamp": "2025-12-10 13:20:50,250", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"categories_to_transform\": 2, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.250607Z\"}", "module": "service", "function": "process_menu_upload", "line": 120}
{"timestamp": "2025-12-10 13:20:50,250", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 2, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.250879Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-10 13:20:50,251", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 2, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.251944Z\"}", "module": "adapter", "function": "transform", "line": 52}
{"timestamp": "2025-12-10 13:20:50,252", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"payload\": {\"city\": \"sofia\", \"token\": \"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\", \"menu\": [{\"name\": \"\\u041f\\u0438\\u0432\\u0430\", \"name_uk\": \"\\u041f\\u0438\\u0432\\u0430\", \"description\": \"Beers / Birre\", \"description_uk\": \"Beers / Birre\", \"items\": [{\"name\": \"Lav\", \"name_uk\": \"Lav\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Lav\", \"name_uk\": \"Lav\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Erdinger\", \"name_uk\": \"Erdinger\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 450.0}]}, {\"name\": \"Erdinger\", \"name_uk\": \"Erdinger\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 550.0}]}, {\"name\": \"Lav Twist\", \"name_uk\": \"Lav Twist\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Kvas\", \"name_uk\": \"Kvas\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Grimbergen Blond\", \"name_uk\": \"Grimbergen Blond\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 300.0}]}, {\"name\": \"Tuborg\", \"name_uk\": \"Tuborg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 290.0}]}, {\"name\": \"Tuborg\", \"name_uk\": \"Tuborg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Budweisser to\\u010deni\", \"name_uk\": \"Budweisser to\\u010deni\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 260.0}]}, {\"name\": \"Budweisser to\\u010deni\", \"name_uk\": \"Budweisser to\\u010deni\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 350.0}]}, {\"name\": \"Carlsberg\", \"name_uk\": \"Carlsberg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 290.0}]}, {\"name\": \"Carlsberg\", \"name_uk\": \"Carlsberg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 220.0}]}]}, {\"name\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"name_uk\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"description\": \"Somersby / Somersby\", \"description_uk\": \"Somersby / Somersby\", \"items\": [{\"name\": \"Apple cider\", \"name_uk\": \"Apple cider\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}, {\"name\": \"Blackberry\", \"name_uk\": \"Blackberry\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}, {\"name\": \"Pear cider\", \"name_uk\": \"Pear cider\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.252405Z\"}", "module": "service", "function": "process_menu_upload", "line": 137}
{"timestamp": "2025-12-10 13:20:50,255", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"categories_count\": 2, \"total_items\": 16, \"target_city\": \"sofia\", \"event\": \"STEP_2_COMPLETED: Menu data transformation successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.255079Z\"}", "module": "service", "function": "process_menu_upload", "line": 157}
{"timestamp": "2025-12-10 13:20:50,255", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"city\": \"sofia\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"categories_count\": 2, \"total_items\": 16, \"event\": \"STEP_3_START: Calling external createMenu.php API\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.255370Z\"}", "module": "service", "function": "process_menu_upload", "line": 174}
{"timestamp": "2025-12-10 13:20:50,266", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"attempt\": 1, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3078, \"categories_count\": 2, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.265869Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 291}
{"timestamp": "2025-12-10 13:20:50,266", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"attempt\": 1, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\", \"menu\": [{\"name\": \"\\u041f\\u0438\\u0432\\u0430\", \"name_uk\": \"\\u041f\\u0438\\u0432\\u0430\", \"description\": \"Beers / Birre\", \"description_uk\": \"Beers / Birre\", \"items\": [{\"name\": \"Lav\", \"name_uk\": \"Lav\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Lav\", \"name_uk\": \"Lav\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Erdinger\", \"name_uk\": \"Erdinger\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 450.0}]}, {\"name\": \"Erdinger\", \"name_uk\": \"Erdinger\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 550.0}]}, {\"name\": \"Lav Twist\", \"name_uk\": \"Lav Twist\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Kvas\", \"name_uk\": \"Kvas\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Grimbergen Blond\", \"name_uk\": \"Grimbergen Blond\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 300.0}]}, {\"name\": \"Tuborg\", \"name_uk\": \"Tuborg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 290.0}]}, {\"name\": \"Tuborg\", \"name_uk\": \"Tuborg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 240.0}]}, {\"name\": \"Budweisser to\\u010deni\", \"name_uk\": \"Budweisser to\\u010deni\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 260.0}]}, {\"name\": \"Budweisser to\\u010deni\", \"name_uk\": \"Budweisser to\\u010deni\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 350.0}]}, {\"name\": \"Carlsberg\", \"name_uk\": \"Carlsberg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 290.0}]}, {\"name\": \"Carlsberg\", \"name_uk\": \"Carlsberg\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 220.0}]}]}, {\"name\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"name_uk\": \"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\", \"description\": \"Somersby / Somersby\", \"description_uk\": \"Somersby / Somersby\", \"items\": [{\"name\": \"Apple cider\", \"name_uk\": \"Apple cider\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}, {\"name\": \"Blackberry\", \"name_uk\": \"Blackberry\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}, {\"name\": \"Pear cider\", \"name_uk\": \"Pear cider\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 1, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 0, \"cena\": 380.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.266236Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 303}
{"timestamp": "2025-12-10 13:20:50,267", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u041f\\u0438\\u0432\\u0430\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0432\\u0430\\\", \\\"description\\\": \\\"Beers / Birre\\\", \\\"description_uk\\\": \\\"Beers / Birre\\\", \\\"items\\\": [{\\\"name\\\": \\\"Lav\\\", \\\"name_uk\\\": \\\"Lav\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 240.0}]}, {\\\"name\\\": \\\"Lav\\\", \\\"name_uk\\\": \\\"Lav\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 240.0}]}, {\\\"name\\\": \\\"Erdinger\\\", \\\"name_uk\\\": \\\"Erdinger\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 450.0}]}, {\\\"name\\\": \\\"Erdinger\\\", \\\"name_uk\\\": \\\"Erdinger\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 550.0}]}, {\\\"name\\\": \\\"Lav Twist\\\", \\\"name_uk\\\": \\\"Lav Twist\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 240.0}]}, {\\\"name\\\": \\\"Kvas\\\", \\\"name_uk\\\": \\\"Kvas\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 240.0}]}, {\\\"name\\\": \\\"Grimbergen Blond\\\", \\\"name_uk\\\": \\\"Grimbergen Blond\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 300.0}]}, {\\\"name\\\": \\\"Tuborg\\\", \\\"name_uk\\\": \\\"Tuborg\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 290.0}]}, {\\\"name\\\": \\\"Tuborg\\\", \\\"name_uk\\\": \\\"Tuborg\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 240.0}]}, {\\\"name\\\": \\\"Budweisser to\\u010deni\\\", \\\"name_uk\\\": \\\"Budweisser to\\u010deni\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 260.0}]}, {\\\"name\\\": \\\"Budweisser to\\u010deni\\\", \\\"name_uk\\\": \\\"Budweisser to\\u010deni\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 350.0}]}, {\\\"name\\\": \\\"Carlsberg\\\", \\\"name_uk\\\": \\\"Carlsberg\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 290.0}]}, {\\\"name\\\": \\\"Carlsberg\\\", \\\"name_uk\\\": \\\"Carlsberg\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 220.0}]}]}, {\\\"name\\\": \\\"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\\\", \\\"name_uk\\\": \\\"\\u0421\\u043e\\u043c\\u0435\\u0440\\u0441\\u0431\\u0438\\\", \\\"description\\\": \\\"Somersby / Somersby\\\", \\\"description_uk\\\": \\\"Somersby / Somersby\\\", \\\"items\\\": [{\\\"name\\\": \\\"Apple cider\\\", \\\"name_uk\\\": \\\"Apple cider\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 380.0}]}, {\\\"name\\\": \\\"Blackberry\\\", \\\"name_uk\\\": \\\"Blackberry\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 380.0}]}, {\\\"name\\\": \\\"Pear cider\\\", \\\"name_uk\\\": \\\"Pear cider\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 380.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:50.267536Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 349}
{"timestamp": "2025-12-10 13:20:51,158", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-10 13:20:51,160", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"attempt\": 1, \"status_code\": 200, \"full_response\": \"{\\\"success\\\":true}\", \"event\": \"CREATE_MENU_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:51.160097Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 367}
{"timestamp": "2025-12-10 13:20:51,160", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"response_data\": {\"success\": true}, \"event\": \"CREATE_MENU_RESPONSE_PARSED\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:51.160690Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 389}
{"timestamp": "2025-12-10 13:20:51,161", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"attempt\": 1, \"status_code\": 200, \"response_length\": 16, \"event\": \"API_REQUEST_SUCCESS\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:51.160997Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 406}
{"timestamp": "2025-12-10 13:20:51,161", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"city\": \"sofia\", \"event\": \"STEP_3_COMPLETED: External API call successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:51.161698Z\"}", "module": "service", "function": "process_menu_upload", "line": 185}
{"timestamp": "2025-12-10 13:20:51,162", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:51.162045Z\"}", "module": "service", "function": "process_menu_upload", "line": 202}
{"timestamp": "2025-12-10 13:20:51,162", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"f7b57627-ecb3-46e7-aa80-4c7bc82ddffd\", \"city\": \"sofia\", \"filename\": \"9.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"categories_count\": 2, \"total_items\": 16, \"processing_time_seconds\": 13.32, \"status\": \"SUCCESS\", \"event\": \"MENU_UPLOAD_PROCESSING_COMPLETED_SUCCESSFULLY\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:51.162311Z\"}", "module": "service", "function": "process_menu_upload", "line": 205}
{"timestamp": "2025-12-10 13:20:51,162", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:20:51.162551Z\"}", "module": "service", "function": "process_menu_upload", "line": 217}
{"timestamp": "2025-12-10 13:24:25,720", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:24:25.720787Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-10 13:24:25,723", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-10T12:24:25.723463Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:18:27,569", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:18:27.569327Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:18:27,569", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:18:27.569957Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:18:27,570", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:18:27.570260Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:18:27,570", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:18:27.570355Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:18:27,570", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:18:27.570439Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:18:27,570", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:18:27.570507Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:18:27,575", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:18:27.575893Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:19:52,939", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:19:52.939289Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 10:19:52,940", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:19:52.940342Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 10:19:52,940", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:19:52.940494Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 10:19:52,964", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:19:52.964543Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 10:20:11,220", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 10:20:11,229", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26080, \"output_tokens\": 814, \"total_tokens\": 26894, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.07334, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:20:11.228972Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 10:20:11,229", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:20:11.229270Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 10:20:11,229", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:20:11.229606Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 10:20:11,229", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:20:11.229702Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 10:36:19,744", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:19.744686Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:36:19,748", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:19.748282Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:36:21,885", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:21.885532Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:36:21,885", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:21.885906Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:36:21,886", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:21.886127Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:36:21,886", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:21.886222Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:36:21,886", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:21.886306Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:36:21,886", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:21.886382Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:36:21,892", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:21.892135Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:36:24,729", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:24.729359Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 10:36:24,730", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:24.730148Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 10:36:24,730", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:24.730318Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 10:36:24,746", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:24.746683Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 10:36:47,342", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 10:36:47,348", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26080, \"output_tokens\": 815, \"total_tokens\": 26895, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.07335, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:47.348092Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 10:36:47,348", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:47.348714Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 10:36:47,350", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:47.350234Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 10:36:47,350", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:36:47.350724Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 10:37:21,478", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:21.478243Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:37:21,479", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:21.479560Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:37:22,018", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:22.018352Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:37:22,018", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:22.018708Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:37:22,018", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:22.018920Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:37:22,019", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:22.019014Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:37:22,019", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:22.019097Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:37:22,019", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:22.019167Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:37:22,024", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:22.024270Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:37:25,756", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:25.756380Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 10:37:25,757", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:25.757153Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 10:37:25,757", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:25.757280Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 10:37:25,772", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:25.772799Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 10:37:47,786", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 10:37:47,791", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26080, \"output_tokens\": 793, \"total_tokens\": 26873, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.07313, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:47.791434Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 10:37:47,792", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:47.792088Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 10:37:47,793", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:47.793360Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 10:37:47,793", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:37:47.793760Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 10:39:48,478", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:48.478907Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:39:48,479", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:48.479730Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:39:49,079", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:49.079156Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:39:49,079", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:49.079548Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:39:49,079", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:49.079775Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:39:49,079", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:49.079875Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:39:49,079", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:49.079961Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:39:49,080", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:49.080033Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:39:49,085", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:49.085563Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:39:57,981", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:57.981756Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:39:57,982", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:57.982138Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:39:58,472", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:58.472141Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:39:58,472", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:58.472538Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:39:58,472", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:58.472767Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:39:58,472", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:58.472882Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:39:58,473", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:58.473017Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:39:58,473", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:58.473100Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:39:58,479", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:39:58.479148Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:40:34,398", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:34.398048Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 10:40:34,398", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:34.398958Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 10:40:34,399", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:34.399149Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 10:40:34,412", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:34.412764Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 10:40:56,305", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 10:40:56,311", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26113, \"output_tokens\": 845, \"total_tokens\": 26958, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.073733, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:56.311213Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 10:40:56,311", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:56.311619Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 10:40:56,312", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:56.312290Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 10:40:56,312", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:40:56.312696Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 10:42:18,297", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.296964Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:42:18,298", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.298188Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:42:18,906", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.905847Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:42:18,906", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.906246Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:42:18,906", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.906471Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:42:18,906", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.906569Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:42:18,906", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.906657Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:42:18,906", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.906732Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:42:18,913", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:18.912978Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:42:28,520", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:28.520699Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:42:28,520", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:28.520924Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:42:29,021", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:29.020829Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:42:29,021", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:29.021238Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:42:29,021", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:29.021455Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:42:29,021", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:29.021552Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:42:29,021", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:29.021638Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:42:29,021", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:29.021705Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:42:29,027", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:42:29.027398Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:55:57,601", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:57.601711Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:55:57,603", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:57.603430Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:55:58,211", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:58.211546Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:55:58,211", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:58.211947Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:55:58,212", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:58.212205Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:55:58,212", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:58.212328Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:55:58,212", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:58.212424Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:55:58,212", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:58.212500Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:55:58,218", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:55:58.218418Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:56:09,850", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:09.850908Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:56:09,851", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:09.851186Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:56:10,492", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:10.492160Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:56:10,492", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:10.492883Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:56:10,493", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:10.493197Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:56:10,493", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:10.493341Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:56:10,493", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:10.493438Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:56:10,493", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:10.493541Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:56:10,504", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:10.504351Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:56:22,574", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:22.574626Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:56:22,574", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:22.574959Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:56:23,064", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:23.064069Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:56:23,064", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:23.064467Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:56:23,064", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:23.064690Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:56:23,064", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:23.064790Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:56:23,064", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:23.064875Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:56:23,064", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:23.064943Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:56:23,071", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:23.071246Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:56:29,743", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:29.743535Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 10:56:29,744", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:29.744807Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 10:56:33,543", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:33.543620Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 10:56:33,543", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:33.543974Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 10:56:33,544", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:33.544179Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 10:56:33,544", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:33.544268Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 10:56:33,544", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:33.544352Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 10:56:33,544", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:33.544423Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 10:56:33,549", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:33.549572Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 10:56:36,978", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:36.978797Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 10:56:36,979", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:36.979712Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 10:56:36,979", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:36.979888Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 10:56:36,995", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:56:36.995718Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 10:57:03,304", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /chat/completions in 0.815565 seconds", "module": "_base_client", "function": "_retry_request", "line": 1638}
{"timestamp": "2025-12-11 10:57:23,102", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 10:57:23,115", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26080, \"output_tokens\": 645, \"total_tokens\": 26725, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.07165, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:57:23.114999Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 10:57:23,115", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 3, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:57:23.115377Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 10:57:23,116", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 3, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:57:23.116090Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 10:57:23,116", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 3, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T09:57:23.116390Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 11:00:35,245", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.245554Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:00:35,247", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.247666Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:00:35,818", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.818429Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:00:35,818", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.818822Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:00:35,819", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.819040Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:00:35,819", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.819135Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:00:35,819", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.819217Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:00:35,819", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.819285Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:00:35,825", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:35.825097Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:00:52,905", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:52.905490Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:00:52,905", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:52.905831Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:00:53,414", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:53.414311Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:00:53,414", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:53.414875Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:00:53,415", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:53.415101Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:00:53,415", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:53.415210Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:00:53,415", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:53.415295Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:00:53,415", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:53.415364Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:00:53,420", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:00:53.420852Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:01:18,812", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:18.812491Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:01:18,812", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:18.812753Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:01:19,290", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:19.290324Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:01:19,290", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:19.290745Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:01:19,290", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:19.290961Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:01:19,291", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:19.291054Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:01:19,291", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:19.291143Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:01:19,291", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:19.291213Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:01:19,296", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:19.296671Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:01:29,501", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.501499Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:01:29,501", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.501857Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:01:29,942", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.942391Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:01:29,942", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.942769Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:01:29,943", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.942997Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:01:29,943", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.943096Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:01:29,943", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.943184Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:01:29,943", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.943255Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:01:29,948", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:29.948854Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:01:41,273", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.272978Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:01:41,273", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.273642Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:01:41,725", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.725407Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:01:41,725", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.725778Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:01:41,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.725988Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:01:41,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.726078Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:01:41,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.726163Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:01:41,726", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.726231Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:01:41,731", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:01:41.731661Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:45:16,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:16.017321Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:45:16,020", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:16.019988Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:45:17,966", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:17.965793Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:45:17,966", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:17.966164Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:45:17,966", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:17.966372Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:45:17,966", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:17.966463Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:45:17,966", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:17.966545Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:45:17,966", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:17.966612Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:45:17,971", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:17.971668Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:45:34,832", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:34.831977Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 11:45:34,832", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:34.832919Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 11:45:34,833", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:34.833110Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 11:45:34,848", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:34.848404Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 11:45:57,568", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 11:45:57,573", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26198, \"output_tokens\": 785, \"total_tokens\": 26983, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.073345, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:57.573651Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 11:45:57,574", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:57.574171Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 11:45:57,575", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:57.575299Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 11:45:57,575", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:45:57.575638Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 11:50:34,013", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.012944Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:50:34,014", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.014695Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:50:34,579", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.579221Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:50:34,579", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.579607Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:50:34,579", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.579832Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:50:34,579", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.579928Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:50:34,580", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.580013Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:50:34,580", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.580082Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:50:34,585", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:34.585414Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:50:49,641", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:49.641884Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:50:49,642", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:49.642176Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:50:50,173", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:50.173015Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:50:50,173", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:50.173410Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:50:50,173", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:50.173636Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:50:50,173", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:50.173733Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:50:50,173", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:50.173821Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:50:50,173", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:50.173890Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:50:50,179", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:50:50.179490Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:51:09,298", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.298252Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:51:09,298", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.298490Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:51:09,874", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.874187Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:51:09,874", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.874590Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:51:09,874", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.874822Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:51:09,874", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.874917Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:51:09,875", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.875002Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:51:09,875", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.875072Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:51:09,883", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:09.883722Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:51:19,002", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.001997Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:51:19,002", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.002256Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:51:19,622", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.622248Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:51:19,622", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.622663Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:51:19,622", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.622895Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:51:19,623", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.622991Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:51:19,623", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.623076Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:51:19,623", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.623146Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:51:19,629", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:19.629236Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:51:29,631", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:29.631141Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:51:29,631", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:29.631675Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:51:30,070", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:30.070564Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:51:30,071", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:30.070989Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:51:30,071", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:30.071221Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:51:30,071", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:30.071315Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:51:30,071", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:30.071398Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:51:30,071", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:30.071468Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:51:30,076", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:51:30.076959Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:52:34,575", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:34.575333Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 11:52:34,576", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:34.576076Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 11:52:34,576", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:34.576226Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 11:52:34,590", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:34.590921Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 11:52:56,497", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 11:52:56,503", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26405, \"output_tokens\": 614, \"total_tokens\": 27019, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.072153, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:56.502968Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 11:52:56,503", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 3, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:56.503503Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 11:52:56,504", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 3, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:56.504432Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 11:52:56,505", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 3, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:52:56.505062Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 11:55:10,878", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:10.878677Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:55:10,879", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:10.879088Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:55:11,453", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:11.452807Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:55:11,453", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:11.453201Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:55:11,453", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:11.453430Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:55:11,453", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:11.453529Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:55:11,453", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:11.453613Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:55:11,453", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:11.453684Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:55:11,459", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:11.459205Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:55:20,358", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.357942Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 11:55:20,358", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.358203Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 11:55:20,809", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.808821Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 11:55:20,809", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.809284Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 11:55:20,809", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.809536Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 11:55:20,809", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.809635Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 11:55:20,809", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.809734Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 11:55:20,809", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.809806Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 11:55:20,815", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:55:20.815866Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 11:58:08,344", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:08.344440Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 11:58:08,346", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:08.346317Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 11:58:08,346", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:08.346593Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 11:58:08,363", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:08.363674Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 11:58:31,134", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 11:58:31,140", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26438, \"output_tokens\": 884, \"total_tokens\": 27322, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.074935, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:31.140378Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 11:58:31,141", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:31.141153Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 11:58:31,142", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:31.142108Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 11:58:31,142", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T10:58:31.142413Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 12:01:40,583", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:40.583829Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 12:01:40,585", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:40.585530Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 12:01:41,168", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:41.167688Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 12:01:41,169", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:41.169041Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 12:01:41,169", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:41.169312Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 12:01:41,169", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:41.169544Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 12:01:41,169", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:41.169684Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 12:01:41,169", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:41.169768Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 12:01:41,177", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:41.176986Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 12:01:51,597", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:51.597411Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 12:01:51,597", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:51.597943Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 12:01:52,165", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:52.165577Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 12:01:52,165", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:52.165975Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 12:01:52,166", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:52.166198Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 12:01:52,166", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:52.166294Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 12:01:52,166", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:52.166377Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 12:01:52,166", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:52.166448Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 12:01:52,171", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:01:52.171836Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 12:02:12,782", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:12.782724Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 12:02:12,783", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:12.783017Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 12:02:13,243", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:13.243564Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 12:02:13,243", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:13.243947Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 12:02:13,244", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:13.244167Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 12:02:13,244", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:13.244258Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 12:02:13,244", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:13.244345Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 12:02:13,244", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:13.244625Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 12:02:13,250", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:13.250787Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 12:02:18,506", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.506161Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 12:02:18,506", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.506386Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 12:02:18,964", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.963770Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 12:02:18,964", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.964510Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 12:02:18,965", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.965175Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 12:02:18,965", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.965538Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 12:02:18,965", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.965688Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 12:02:18,965", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.965773Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 12:02:18,973", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:02:18.973758Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 12:04:01,137", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:01.137552Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 12:04:01,138", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:01.138833Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 12:04:01,139", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:01.139219Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 12:04:01,156", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:01.156484Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 12:04:22,761", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 12:04:22,765", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26429, \"output_tokens\": 747, \"total_tokens\": 27176, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.073543, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:22.765713Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 12:04:22,766", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 3, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:22.766203Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 12:04:22,767", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 3, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:22.767565Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 12:04:22,768", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 3, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:04:22.768200Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 12:05:05,822", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:05.822274Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 12:05:05,823", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:05.822968Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 12:05:05,823", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:05.823377Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 12:05:05,831", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:05.831517Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 12:05:19,179", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 12:05:19,181", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 26429, \"output_tokens\": 493, \"total_tokens\": 26922, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.071003, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:19.181875Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 12:05:19,182", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:19.182401Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 12:05:19,182", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:19.182904Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 12:05:19,183", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:05:19.183210Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 12:10:41,748", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:41.748038Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-11 12:10:41,750", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:41.750736Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 12:10:41,753", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:41.753092Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 12:10:41,758", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:41.758259Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 12:10:56,916", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 12:10:56,918", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 49097, \"output_tokens\": 667, \"total_tokens\": 49764, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.129413, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:56.918710Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 12:10:56,919", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:56.919363Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 12:10:56,920", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:56.920004Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 12:10:56,920", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:10:56.920216Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-11 12:13:53,184", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.184849Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 12:13:53,186", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.186264Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 12:13:53,742", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.742129Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 12:13:53,742", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.742508Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 12:13:53,742", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.742746Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 12:13:53,742", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.742875Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 12:13:53,742", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.742974Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 12:13:53,743", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.743047Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 12:13:53,749", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:13:53.749026Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 12:15:53,687", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:53.687575Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 12:15:53,689", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:53.689622Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-11 12:15:59,657", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:59.657106Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-11 12:15:59,657", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:59.657466Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-11 12:15:59,657", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:59.657673Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-11 12:15:59,657", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:59.657768Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-11 12:15:59,657", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:59.657851Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-11 12:15:59,657", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:59.657920Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-11 12:15:59,663", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:15:59.663144Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-11 12:16:28,976", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"filename\": \"1.jpg\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.976026Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-11 12:16:28,976", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"filename\": \"1.jpg\", \"content_type\": \"image/jpeg\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.976803Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-11 12:16:28,977", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"filename\": \"1.jpg\", \"size_bytes\": 102256, \"size_kb\": 99.86, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.977103Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-11 12:16:28,977", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.977337Z\"}", "module": "routes", "function": "insert_menu_items", "line": 101}
{"timestamp": "2025-12-11 12:16:28,977", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"city\": \"sofia\", \"filename\": \"1.jpg\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.977596Z\"}", "module": "routes", "function": "insert_menu_items", "line": 121}
{"timestamp": "2025-12-11 12:16:28,978", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"city\": \"sofia\", \"filename\": \"1.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.978274Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-11 12:16:28,978", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"image_size_bytes\": 102256, \"mime_type\": \"image/jpeg\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.978518Z\"}", "module": "service", "function": "process_menu_upload", "line": 62}
{"timestamp": "2025-12-11 12:16:28,978", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.978817Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-11 12:16:28,979", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.979240Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-11 12:16:28,992", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:28.992081Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-11 12:16:41,597", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 12:16:41,602", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 49097, \"output_tokens\": 664, \"total_tokens\": 49761, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.129383, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.602006Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-11 12:16:41,602", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.602439Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-11 12:16:41,603", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.603155Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-11 12:16:41,603", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"response_data\": {\"menu\": {\"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u043c\\u0438\\u0440\\u0430\", \"categories\": [{\"name\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description\": null, \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"Combread / Tradizionale con farina di mais\", \"price\": \"50.00\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"Flatbread / Focaccia\", \"price\": \"80.00\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"Bread / Pane\", \"price\": \"30.00\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": null, \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"description\": \"Beef smoked ham / Prosciutto di manzo\", \"price\": \"8000.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041d\\u0435\\u0433\\u0443\\u0448\\u043a\\u0438 \\u043f\\u0440\\u0448\\u0443\\u0442\", \"description\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"price\": \"8000.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0430\", \"description\": \"Air-dried cured meat / Prosciutto di pecora\", \"price\": \"8000.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"Smoked meat / Came affumicata\", \"price\": \"4500.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0421\\u0432\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"description\": \"Pork ham / Prosciutto di maiale\", \"price\": \"8000.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": null, \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Cow cheese / Formaggio di mucca\", \"price\": \"2500.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"price\": \"6000.00\", \"serving_size\": \"\\u043f\\u043e\\u0440\\u0446\\u0438\\u0458\\u0430\", \"measure\": null, \"notes\": null}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Goat cheese / Formaggio di capra\", \"price\": \"3500.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"Serbian clotted cream / Kajmak\", \"price\": \"3500.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Sheep's cheese / Formaggio di pecora\", \"price\": \"3500.00\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": null, \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"Aspic / Aspic salato\", \"price\": \"350.00\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o-mini\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.603444Z\"}", "module": "service", "function": "process_menu_upload", "line": 84}
{"timestamp": "2025-12-11 12:16:41,605", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"categories_count\": 4, \"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u043c\\u0438\\u0440\\u0430\", \"model_used\": \"gpt-4o-mini\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.605046Z\"}", "module": "service", "function": "process_menu_upload", "line": 103}
{"timestamp": "2025-12-11 12:16:41,605", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"categories_to_transform\": 4, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.605298Z\"}", "module": "service", "function": "process_menu_upload", "line": 120}
{"timestamp": "2025-12-11 12:16:41,605", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 4, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.605573Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-11 12:16:41,606", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 4, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.606514Z\"}", "module": "adapter", "function": "transform", "line": 52}
{"timestamp": "2025-12-11 12:16:41,607", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"payload\": {\"city\": \"sofia\", \"token\": \"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\", \"menu\": [{\"name\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"name_uk\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"name_uk\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"Combread / Tradizionale con farina di mais\", \"description_uk\": \"Combread / Tradizionale con farina di mais\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 50.0}]}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"name_uk\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"Flatbread / Focaccia\", \"description_uk\": \"Flatbread / Focaccia\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 80.0}]}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"Bread / Pane\", \"description_uk\": \"Bread / Pane\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 30.0}]}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"name_uk\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"name_uk\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"description\": \"Beef smoked ham / Prosciutto di manzo\", \"description_uk\": \"Beef smoked ham / Prosciutto di manzo\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u041d\\u0435\\u0433\\u0443\\u0448\\u043a\\u0438 \\u043f\\u0440\\u0448\\u0443\\u0442\", \"name_uk\": \"\\u041d\\u0435\\u0433\\u0443\\u0448\\u043a\\u0438 \\u043f\\u0440\\u0448\\u0443\\u0442\", \"description\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"description_uk\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0430\", \"name_uk\": \"\\u0421\\u0442\\u0435\\u043b\\u0430\", \"description\": \"Air-dried cured meat / Prosciutto di pecora\", \"description_uk\": \"Air-dried cured meat / Prosciutto di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"name_uk\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"Smoked meat / Came affumicata\", \"description_uk\": \"Smoked meat / Came affumicata\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 4500.0}]}, {\"name\": \"\\u0421\\u0432\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"name_uk\": \"\\u0421\\u0432\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"description\": \"Pork ham / Prosciutto di maiale\", \"description_uk\": \"Pork ham / Prosciutto di maiale\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"name_uk\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Cow cheese / Formaggio di mucca\", \"description_uk\": \"Cow cheese / Formaggio di mucca\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 2500.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"description_uk\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 6000.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Goat cheese / Formaggio di capra\", \"description_uk\": \"Goat cheese / Formaggio di capra\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"name_uk\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"Serbian clotted cream / Kajmak\", \"description_uk\": \"Serbian clotted cream / Kajmak\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Sheep's cheese / Formaggio di pecora\", \"description_uk\": \"Sheep's cheese / Formaggio di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 3500.0}]}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"Aspic / Aspic salato\", \"description_uk\": \"Aspic / Aspic salato\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 350.0}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.606931Z\"}", "module": "service", "function": "process_menu_upload", "line": 137}
{"timestamp": "2025-12-11 12:16:41,608", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"categories_count\": 4, \"total_items\": 14, \"target_city\": \"sofia\", \"event\": \"STEP_2_COMPLETED: Menu data transformation successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.608604Z\"}", "module": "service", "function": "process_menu_upload", "line": 157}
{"timestamp": "2025-12-11 12:16:41,608", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"city\": \"sofia\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"categories_count\": 4, \"total_items\": 14, \"event\": \"STEP_3_START: Calling external createMenu.php API\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.608783Z\"}", "module": "service", "function": "process_menu_upload", "line": 174}
{"timestamp": "2025-12-11 12:16:41,618", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"attempt\": 1, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3867, \"categories_count\": 4, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.618734Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 291}
{"timestamp": "2025-12-11 12:16:41,619", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"attempt\": 1, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\", \"menu\": [{\"name\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"name_uk\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"name_uk\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"Combread / Tradizionale con farina di mais\", \"description_uk\": \"Combread / Tradizionale con farina di mais\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 50.0}]}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"name_uk\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"Flatbread / Focaccia\", \"description_uk\": \"Flatbread / Focaccia\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 80.0}]}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"Bread / Pane\", \"description_uk\": \"Bread / Pane\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 30.0}]}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"name_uk\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"name_uk\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"description\": \"Beef smoked ham / Prosciutto di manzo\", \"description_uk\": \"Beef smoked ham / Prosciutto di manzo\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u041d\\u0435\\u0433\\u0443\\u0448\\u043a\\u0438 \\u043f\\u0440\\u0448\\u0443\\u0442\", \"name_uk\": \"\\u041d\\u0435\\u0433\\u0443\\u0448\\u043a\\u0438 \\u043f\\u0440\\u0448\\u0443\\u0442\", \"description\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"description_uk\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0430\", \"name_uk\": \"\\u0421\\u0442\\u0435\\u043b\\u0430\", \"description\": \"Air-dried cured meat / Prosciutto di pecora\", \"description_uk\": \"Air-dried cured meat / Prosciutto di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"name_uk\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"Smoked meat / Came affumicata\", \"description_uk\": \"Smoked meat / Came affumicata\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 4500.0}]}, {\"name\": \"\\u0421\\u0432\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"name_uk\": \"\\u0421\\u0432\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\", \"description\": \"Pork ham / Prosciutto di maiale\", \"description_uk\": \"Pork ham / Prosciutto di maiale\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 8000.0}]}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"name_uk\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Cow cheese / Formaggio di mucca\", \"description_uk\": \"Cow cheese / Formaggio di mucca\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 2500.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"description_uk\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 6000.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Goat cheese / Formaggio di capra\", \"description_uk\": \"Goat cheese / Formaggio di capra\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"name_uk\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"Serbian clotted cream / Kajmak\", \"description_uk\": \"Serbian clotted cream / Kajmak\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"Sheep's cheese / Formaggio di pecora\", \"description_uk\": \"Sheep's cheese / Formaggio di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 3500.0}]}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"Aspic / Aspic salato\", \"description_uk\": \"Aspic / Aspic salato\", \"measure\": 2, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 350.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.619006Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 303}
{"timestamp": "2025-12-11 12:16:41,622", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"description\\\": \\\"Combread / Tradizionale con farina di mais\\\", \\\"description_uk\\\": \\\"Combread / Tradizionale con farina di mais\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 50.0}]}, {\\\"name\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"name_uk\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"description\\\": \\\"Flatbread / Focaccia\\\", \\\"description_uk\\\": \\\"Flatbread / Focaccia\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 80.0}]}, {\\\"name\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"name_uk\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"description\\\": \\\"Bread / Pane\\\", \\\"description_uk\\\": \\\"Bread / Pane\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 30.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\\\", \\\"description\\\": \\\"Beef smoked ham / Prosciutto di manzo\\\", \\\"description_uk\\\": \\\"Beef smoked ham / Prosciutto di manzo\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u041d\\u0435\\u0433\\u0443\\u0448\\u043a\\u0438 \\u043f\\u0440\\u0448\\u0443\\u0442\\\", \\\"name_uk\\\": \\\"\\u041d\\u0435\\u0433\\u0443\\u0448\\u043a\\u0438 \\u043f\\u0440\\u0448\\u0443\\u0442\\\", \\\"description\\\": \\\"Njegusi smoked ham / Prosciutto di Njegu\\u0161\\\", \\\"description_uk\\\": \\\"Njegusi smoked ham / Prosciutto di Njegu\\u0161\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0430\\\", \\\"description\\\": \\\"Air-dried cured meat / Prosciutto di pecora\\\", \\\"description_uk\\\": \\\"Air-dried cured meat / Prosciutto di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"name_uk\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"description\\\": \\\"Smoked meat / Came affumicata\\\", \\\"description_uk\\\": \\\"Smoked meat / Came affumicata\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 4500.0}]}, {\\\"name\\\": \\\"\\u0421\\u0432\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\\\", \\\"name_uk\\\": \\\"\\u0421\\u0432\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442a\\\", \\\"description\\\": \\\"Pork ham / Prosciutto di maiale\\\", \\\"description_uk\\\": \\\"Pork ham / Prosciutto di maiale\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}]}, {\\\"name\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"name_uk\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"Cow cheese / Formaggio di mucca\\\", \\\"description_uk\\\": \\\"Cow cheese / Formaggio di mucca\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 2500.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"description\\\": \\\"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\\\", \\\"description_uk\\\": \\\"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 6000.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"Goat cheese / Formaggio di capra\\\", \\\"description_uk\\\": \\\"Goat cheese / Formaggio di capra\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"name_uk\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"description\\\": \\\"Serbian clotted cream / Kajmak\\\", \\\"description_uk\\\": \\\"Serbian clotted cream / Kajmak\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"Sheep's cheese / Formaggio di pecora\\\", \\\"description_uk\\\": \\\"Sheep's cheese / Formaggio di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"Aspic / Aspic salato\\\", \\\"description_uk\\\": \\\"Aspic / Aspic salato\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 350.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:41.621995Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 349}
{"timestamp": "2025-12-11 12:16:43,856", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-11 12:16:43,858", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"attempt\": 1, \"status_code\": 200, \"full_response\": \"{\\\"success\\\":true}\", \"event\": \"CREATE_MENU_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:43.858091Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 367}
{"timestamp": "2025-12-11 12:16:43,858", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"response_data\": {\"success\": true}, \"event\": \"CREATE_MENU_RESPONSE_PARSED\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:43.858614Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 389}
{"timestamp": "2025-12-11 12:16:43,858", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"attempt\": 1, \"status_code\": 200, \"response_length\": 16, \"event\": \"API_REQUEST_SUCCESS\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:43.858871Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 406}
{"timestamp": "2025-12-11 12:16:43,859", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"city\": \"sofia\", \"event\": \"STEP_3_COMPLETED: External API call successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:43.859628Z\"}", "module": "service", "function": "process_menu_upload", "line": 185}
{"timestamp": "2025-12-11 12:16:43,860", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:43.860204Z\"}", "module": "service", "function": "process_menu_upload", "line": 202}
{"timestamp": "2025-12-11 12:16:43,860", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3df08a5b-b8df-452e-a562-4ef395ab72ff\", \"city\": \"sofia\", \"filename\": \"1.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"categories_count\": 4, \"total_items\": 14, \"processing_time_seconds\": 14.88, \"status\": \"SUCCESS\", \"event\": \"MENU_UPLOAD_PROCESSING_COMPLETED_SUCCESSFULLY\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:43.860480Z\"}", "module": "service", "function": "process_menu_upload", "line": 205}
{"timestamp": "2025-12-11 12:16:43,860", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:16:43.860751Z\"}", "module": "service", "function": "process_menu_upload", "line": 217}
{"timestamp": "2025-12-11 12:17:06,369", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:17:06.369342Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-11 12:17:06,372", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-11T11:17:06.372347Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-12 17:37:19,915", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-12T16:37:19.914860Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-12 17:37:19,915", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-12T16:37:19.915457Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-12 17:37:19,916", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-12T16:37:19.916003Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-12 17:37:19,916", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-12T16:37:19.916096Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-12 17:37:19,916", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-12T16:37:19.916179Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-12 17:37:19,916", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-12T16:37:19.916250Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-12 17:37:19,921", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o-mini\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-12T16:37:19.921791Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-13 13:30:45,318", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-13T12:30:45.317117Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-13 13:30:45,318", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-13T12:30:45.318645Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:14:19,722", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:14:19.722421Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:14:19,723", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:14:19.723156Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:14:19,723", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:14:19.723806Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:14:19,723", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:14:19.723911Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:14:19,724", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:14:19.724004Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:14:19,724", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:14:19.724072Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:14:19,730", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:14:19.730449Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:21:06,824", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"en\", \"target_language\": \"en\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:06.824500Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:21:06,826", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"en\", \"target_language\": \"en\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:06.826121Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:21:06,826", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:06.826499Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:21:06,846", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:06.846642Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:21:20,429", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:21:20,434", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 1846, \"output_tokens\": 547, \"total_tokens\": 2393, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.010085, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:20.434433Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:21:20,434", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:20.434745Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:21:20,435", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"en\", \"target_language\": \"en\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:20.435256Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:21:20,435", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:21:20.435373Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:22:00,781", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"en\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:00.781721Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:22:00,783", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"en\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:00.783241Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:22:00,783", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:00.783508Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:22:00,792", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:00.792898Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:22:34,362", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:22:34,367", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2356, \"output_tokens\": 987, \"total_tokens\": 3343, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.01576, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:34.367497Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:22:34,368", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:34.368062Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:22:34,369", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"source_language\": \"bg\", \"target_language\": \"en\", \"event\": \"menu_translation_enforcement_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:34.369220Z\"}", "module": "service", "function": "_ensure_target_language", "line": 499}
{"timestamp": "2025-12-15 10:22:34,369", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:34.369452Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:22:42,251", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:22:42,254", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 1695, \"output_tokens\": 987, \"total_tokens\": 2682, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.014108, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:42.254068Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:22:42,254", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"source_language\": \"bg\", \"target_language\": \"en\", \"event\": \"menu_translation_enforcement_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:42.254476Z\"}", "module": "service", "function": "_ensure_target_language", "line": 520}
{"timestamp": "2025-12-15 10:22:42,254", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"en\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:42.254681Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:22:42,254", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:22:42.254887Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:27:22,955", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:22.954954Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:27:22,955", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:22.955880Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:27:22,956", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:22.956165Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:27:22,956", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:22.956271Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:27:22,956", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:22.956369Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:27:22,956", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:22.956443Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:27:22,963", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:22.963219Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:27:47,754", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:47.754103Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:27:47,755", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:47.754946Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:27:47,755", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:47.755284Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:27:47,767", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:27:47.767861Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:28:11,930", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:28:11,934", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2696, \"output_tokens\": 851, \"total_tokens\": 3547, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.01525, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:28:11.934756Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:28:11,935", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:28:11.935459Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:28:11,936", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:28:11.936322Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:28:11,936", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 4, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:28:11.936678Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:29:46,902", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:29:46.901698Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:29:46,903", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:29:46.903578Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:29:46,903", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:29:46.903819Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:29:46,912", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:29:46.912658Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:30:00,581", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:30:00,585", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2016, \"output_tokens\": 435, \"total_tokens\": 2451, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.00939, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:30:00.585485Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:30:00,586", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:30:00.586197Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:30:00,588", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:30:00.587946Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:30:00,588", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:30:00.588667Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:34:04,198", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:04.198669Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:04,200", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:04.200839Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:04,204", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:04.203399Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:04,207", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:04.207366Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:05,033", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.033212Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:05,033", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.033223Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:05,033", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.033632Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:05,033", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.033625Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:05,033", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.033961Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:05,033", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.033958Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:05,034", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.034072Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:05,034", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.034327Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:05,034", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.034323Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:05,034", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.034402Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:05,034", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.034459Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:05,034", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.034543Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:05,042", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.042326Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:34:05,042", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:05.042807Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:34:15,952", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:15.952055Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:15,952", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:15.952286Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:15,955", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:15.955540Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:15,955", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:15.955734Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:16,561", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.561459Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:16,561", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.561485Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:16,561", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.561950Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:16,561", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.561959Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562227Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562236Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562340Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562343Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562439Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562446Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562523Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:16,562", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.562558Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:16,569", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.569308Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:34:16,569", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:16.569627Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:34:27,481", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.481449Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:27,481", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.481706Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:27,497", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.497815Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:27,498", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.498073Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:27,946", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.945939Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:27,946", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.946362Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:27,946", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.946598Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:27,946", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.946718Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:27,946", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.946891Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:27,947", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.946990Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:27,950", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.950356Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:27,950", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.950761Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:27,951", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.951043Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:27,951", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.951143Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:27,951", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.951235Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:27,951", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.951306Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:27,953", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.953169Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:34:27,958", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:27.958133Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:34:36,738", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:36.738007Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:36,738", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:36.738265Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:36,747", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:36.747368Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:34:36,747", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:36.747666Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:34:37,210", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.209914Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:37,210", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.209961Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:34:37,210", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.210407Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:37,210", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.210395Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:34:37,210", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.210699Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:37,210", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.210697Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:34:37,210", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.210801Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:37,211", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.210937Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:34:37,211", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.211275Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:37,211", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.211278Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:34:37,211", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.211436Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:37,211", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.211438Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:34:37,217", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.217641Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:34:37,217", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:34:37.217681Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:36:11,207", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:11.207392Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:36:11,210", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:11.209982Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:36:11,210", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:11.210283Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:36:11,228", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:11.228564Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:36:23,668", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:36:23,674", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2109, \"output_tokens\": 412, \"total_tokens\": 2521, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.009392, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:23.674702Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:36:23,675", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:23.675268Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:36:23,676", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:23.676166Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:36:23,676", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:36:23.676711Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:42:59,018", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:42:59.018266Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:42:59,020", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:42:59.020381Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:42:59,020", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:42:59.020740Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:42:59,028", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:42:59.028343Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:43:09,136", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:43:09,141", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2109, \"output_tokens\": 346, \"total_tokens\": 2455, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.008733, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:43:09.140977Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:43:09,141", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:43:09.141526Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:43:09,142", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:43:09.142037Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:43:09,142", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:43:09.142291Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:52:12,917", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:12.917457Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:52:12,918", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:12.918669Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:52:12,964", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:12.964067Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:52:12,965", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:12.965741Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:52:13,632", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.632318Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:52:13,632", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.632802Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:52:13,632", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.632357Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:52:13,632", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.632917Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633060Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633161Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633153Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633254Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633257Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633326Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633351Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:52:13,633", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.633451Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:52:13,642", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.642232Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:52:13,642", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:13.642388Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:52:30,062", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.062686Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:52:30,063", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.063601Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:52:30,164", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.164040Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:52:30,164", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.164212Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:52:30,631", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.631098Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:52:30,631", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.631786Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:52:30,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.632028Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:52:30,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.632132Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:52:30,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.632221Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:52:30,632", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.632322Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:52:30,642", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.642728Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:52:30,650", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.649638Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:52:30,650", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.650191Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:52:30,650", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.650457Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:52:30,650", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.650563Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:52:30,650", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.650654Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:52:30,650", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.650726Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:52:30,659", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:30.659814Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:52:55,289", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:55.289786Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:52:55,290", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:55.290852Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:52:55,329", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:55.329261Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:52:55,329", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:55.329780Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:52:56,044", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.044540Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:52:56,044", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.044558Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:52:56,044", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.044940Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:52:56,044", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.044964Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045185Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045216Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045286Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045318Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045384Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045410Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045455Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:52:56,045", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.045482Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:52:56,051", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.051563Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:52:56,051", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:52:56.051610Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:53:08,579", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:08.578954Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:53:08,579", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:08.579898Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:53:08,580", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:08.580118Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:53:08,580", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:08.580220Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:53:09,303", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.303767Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:53:09,303", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.303687Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304144Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304154Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304455Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304450Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304686Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304765Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304926Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:53:09,304", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.304937Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:53:09,305", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.305049Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:53:09,305", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.305023Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:53:09,314", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.313946Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:53:09,314", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:09.314413Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:53:24,257", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.257764Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:53:24,258", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.258703Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:53:24,260", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.260517Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:53:24,260", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.260812Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.883745Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.883752Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884225Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884248Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884475Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884479Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884601Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884590Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884701Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884711Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884774Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:53:24,884", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.884789Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:53:24,891", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.891348Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:53:24,891", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:53:24.891365Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:55:14,342", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:14.342646Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:55:14,344", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:14.344425Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 10:55:17,485", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:17.485579Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 10:55:17,485", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:17.485920Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 10:55:17,486", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:17.486131Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 10:55:17,486", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:17.486226Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 10:55:17,486", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:17.486313Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 10:55:17,486", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:17.486382Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 10:55:17,491", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:17.491494Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 10:55:56,163", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"filename\": \"sk1.png\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.163488Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-15 10:55:56,164", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"filename\": \"sk1.png\", \"content_type\": \"image/png\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.164617Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-15 10:55:56,165", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"filename\": \"sk1.png\", \"size_bytes\": 87061, \"size_kb\": 85.02, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.165164Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-15 10:55:56,165", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.165416Z\"}", "module": "routes", "function": "insert_menu_items", "line": 101}
{"timestamp": "2025-12-15 10:55:56,165", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"city\": \"sofia\", \"filename\": \"sk1.png\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.165679Z\"}", "module": "routes", "function": "insert_menu_items", "line": 121}
{"timestamp": "2025-12-15 10:55:56,166", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"city\": \"sofia\", \"filename\": \"sk1.png\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.166349Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-15 10:55:56,166", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"image_size_bytes\": 87061, \"mime_type\": \"image/png\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.166567Z\"}", "module": "service", "function": "process_menu_upload", "line": 62}
{"timestamp": "2025-12-15 10:55:56,166", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.166939Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:55:56,167", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.167302Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:55:56,189", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:55:56.189223Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:56:05,113", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:05.113187Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:56:05,113", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:05.113896Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:56:05,114", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:05.114181Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:56:05,124", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:05.124478Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:56:10,802", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:56:10,807", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2238, \"output_tokens\": 520, \"total_tokens\": 2758, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.010795, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.806987Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:56:10,807", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.807553Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:56:10,808", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.808379Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:56:10,809", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"response_data\": {\"menu\": {\"restaurant_name\": null, \"categories\": [{\"name\": \"\\u0410\\u043d\\u0442\\u0438\\u043f\\u0430\\u0441\\u0442\\u0438\", \"description\": null, \"items\": [{\"name\": \"\\u0411\\u0440\\u0443\\u0441\\u043a\\u0435\\u0442\\u0438\", \"description\": \"\\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0441\\u044a\\u0441 \\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0427\\u0435\\u0440\\u0438 | \\u041f\\u0440\\u043e\\u0448\\u0443\\u0442\\u043e \\u041a\\u0440\\u0443\\u0433\\u043e \\u0438 \\u041a\\u0440\\u0435\\u043ca \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 | \\u0410\\u0440\\u0442\\u0438\\u0448\\u043e\\u043a \\u0438 \\u0427\\u0435\\u0440\\u0438 \\u0414\\u043e\\u043c\\u0430\\u0442\\u0438\", \"description_uk\": \"Goat Cheese with Roasted Cherry | Prosciutto Crudo and Cream Cheese | Artichoke and Cherry Tomatoes\", \"price\": \"9.20\", \"serving_size\": \"250 \\u0433\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0421\\u0440\\u0435\\u0434\\u0438\\u0437\\u0435\\u043c\\u043d\\u043e\\u043c\\u043e\\u0440\\u0441\\u043a\\u0438 \\u0414\\u0438\\u043f\\u043e\\u0432\\u0435\", \"description\": \"\\u0422\\u0430\\u0440\\u0430\\u043c\\u0430 | \\u041c\\u0443\\u0445\\u0430\\u043c\\u0430\\u0440\\u0430 | \\u0422\\u0438\\u0440\\u043e\\u0441\\u0430\\u043b\\u0430\\u0442\\u0430\", \"description_uk\": \"Tarama | Muhammara | Tirosalata\", \"price\": \"9.20\", \"serving_size\": \"250 \\u0433\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438\", \"description\": \"\\u0441 \\u0422\\u0440\\u044e\\u0444\\u0435\\u043b\\u043e\\u0432\\u043e \\u041e\\u043b\\u0438\\u043e | \\u0414\\u0438\\u0432 \\u041b\\u0443\\u043a | \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0413\\u0440\\u044e\\u0435\\u0440\", \"description_uk\": \"with Truffle Oil | Wild Onion | Gruyere Cheese\", \"price\": \"8.18\", \"serving_size\": \"350 \\u0433\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438 \\u0441\\u044a\\u0441 \\u0421\\u043e\\u0441 \\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\u0430\\u0440\\u0430 \\u0438 \\u041f\\u0443\\u0434\\u0440\\u0430 \\u043e\\u0442 \\u041f\\u0430\\u043d\\u0447\\u0435\\u0442\\u0442\\u0430\", \"description\": null, \"description_uk\": null, \"price\": \"8.18\", \"serving_size\": \"350 \\u0433\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435\", \"description\": \"\\u0421\\u043c\\u043e\\u043a\\u0438\\u043d\\u0438 | \\u041c\\u0435\\u0434 | \\u041a\\u0430\\u0440\\u0430\\u043c\\u0435\\u043b\\u0438\\u0437\\u0438\\u0440\\u0430\\u043d\\u0438 \\u044f\\u0434\\u043a\\u0438\", \"description_uk\": \"Figs | Honey | Caramelized Nuts\", \"price\": \"10.22\", \"serving_size\": \"150 \\u0433\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041f\\u0440\\u044f\\u0441\\u043d\\u043e \\u0418\\u0437\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0425\\u043b\\u0435\\u0431\\u0447\\u0435 \\u0441 \\u0411\\u0443\\u0440\\u0430\\u0442\\u0430\", \"description\": \"\\u0413\\u0440\\u0438\\u043b\\u043e\\u0432\\u0430\\u043d\\u0438 \\u043f\\u0440\\u0430\\u0441\\u043a\\u043e\\u0432\\u0438 | \\u0420\\u0443\\u043a\\u043e\\u043b\\u0430 | \\u041f\\u0435\\u0441\\u0442\\u043e \\u043e\\u0442 \\u043f\\u0438\\u0441\\u0442\\u0430\\u043a\\u0438\\u043e\", \"description_uk\": \"Grilled Peaches | Arugula | Pistachio Pesto\", \"price\": \"12.78\", \"serving_size\": \"400 \\u0433\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0447\\u0443\\u0446\\u0438 \\u043d\\u0430 \\u0413\\u0440\\u0438\\u043b\", \"description\": \"\\u041c\\u0438\\u0441\\u043e \\u041b\\u0438\\u043c\\u043e\\u043d \\u0434\\u0440\\u0435\\u0441\\u0438\\u043d\\u0433 | \\u0417\\u0435\\u0445\\u0442\\u0438\\u043d \\u0415\\u043a\\u0441\\u0442\\u0440\\u0430 \\u0412\\u044a\\u0440\\u0434\\u0436\\u0438\\u043d\", \"description_uk\": \"Miso Lemon Dressing | Extra Virgin Olive Oil\", \"price\": \"6.13\", \"serving_size\": \"300 \\u0433\", \"measure\": 0, \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.809054Z\"}", "module": "service", "function": "process_menu_upload", "line": 84}
{"timestamp": "2025-12-15 10:56:10,810", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"categories_count\": 1, \"restaurant_name\": null, \"model_used\": \"gpt-4o\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.810557Z\"}", "module": "service", "function": "process_menu_upload", "line": 103}
{"timestamp": "2025-12-15 10:56:10,810", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"categories_to_transform\": 1, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.810876Z\"}", "module": "service", "function": "process_menu_upload", "line": 120}
{"timestamp": "2025-12-15 10:56:10,811", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 1, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.811136Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-15 10:56:10,812", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 1, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.812005Z\"}", "module": "adapter", "function": "transform", "line": 52}
{"timestamp": "2025-12-15 10:56:10,812", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"payload\": {\"city\": \"sofia\", \"token\": \"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\", \"menu\": [{\"name\": \"\\u0410\\u043d\\u0442\\u0438\\u043f\\u0430\\u0441\\u0442\\u0438\", \"name_uk\": \"\\u0410\\u043d\\u0442\\u0438\\u043f\\u0430\\u0441\\u0442\\u0438\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u0411\\u0440\\u0443\\u0441\\u043a\\u0435\\u0442\\u0438\", \"name_uk\": \"\\u0411\\u0440\\u0443\\u0441\\u043a\\u0435\\u0442\\u0438\", \"description\": \"\\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0441\\u044a\\u0441 \\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0427\\u0435\\u0440\\u0438 | \\u041f\\u0440\\u043e\\u0448\\u0443\\u0442\\u043e \\u041a\\u0440\\u0443\\u0433\\u043e \\u0438 \\u041a\\u0440\\u0435\\u043ca \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 | \\u0410\\u0440\\u0442\\u0438\\u0448\\u043e\\u043a \\u0438 \\u0427\\u0435\\u0440\\u0438 \\u0414\\u043e\\u043c\\u0430\\u0442\\u0438\", \"description_uk\": \"Goat Cheese with Roasted Cherry | Prosciutto Crudo and Cream Cheese | Artichoke and Cherry Tomatoes\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 250, \"cena\": 9.2}]}, {\"name\": \"\\u0421\\u0440\\u0435\\u0434\\u0438\\u0437\\u0435\\u043c\\u043d\\u043e\\u043c\\u043e\\u0440\\u0441\\u043a\\u0438 \\u0414\\u0438\\u043f\\u043e\\u0432\\u0435\", \"name_uk\": \"\\u0421\\u0440\\u0435\\u0434\\u0438\\u0437\\u0435\\u043c\\u043d\\u043e\\u043c\\u043e\\u0440\\u0441\\u043a\\u0438 \\u0414\\u0438\\u043f\\u043e\\u0432\\u0435\", \"description\": \"\\u0422\\u0430\\u0440\\u0430\\u043c\\u0430 | \\u041c\\u0443\\u0445\\u0430\\u043c\\u0430\\u0440\\u0430 | \\u0422\\u0438\\u0440\\u043e\\u0441\\u0430\\u043b\\u0430\\u0442\\u0430\", \"description_uk\": \"Tarama | Muhammara | Tirosalata\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 250, \"cena\": 9.2}]}, {\"name\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438\", \"name_uk\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438\", \"description\": \"\\u0441 \\u0422\\u0440\\u044e\\u0444\\u0435\\u043b\\u043e\\u0432\\u043e \\u041e\\u043b\\u0438\\u043e | \\u0414\\u0438\\u0432 \\u041b\\u0443\\u043a | \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0413\\u0440\\u044e\\u0435\\u0440\", \"description_uk\": \"with Truffle Oil | Wild Onion | Gruyere Cheese\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 350, \"cena\": 8.18}]}, {\"name\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438 \\u0441\\u044a\\u0441 \\u0421\\u043e\\u0441 \\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\u0430\\u0440\\u0430 \\u0438 \\u041f\\u0443\\u0434\\u0440\\u0430 \\u043e\\u0442 \\u041f\\u0430\\u043d\\u0447\\u0435\\u0442\\u0442\\u0430\", \"name_uk\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438 \\u0441\\u044a\\u0441 \\u0421\\u043e\\u0441 \\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\u0430\\u0440\\u0430 \\u0438 \\u041f\\u0443\\u0434\\u0440\\u0430 \\u043e\\u0442 \\u041f\\u0430\\u043d\\u0447\\u0435\\u0442\\u0442\\u0430\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 350, \"cena\": 8.18}]}, {\"name\": \"\\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435\", \"name_uk\": \"\\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435\", \"description\": \"\\u0421\\u043c\\u043e\\u043a\\u0438\\u043d\\u0438 | \\u041c\\u0435\\u0434 | \\u041a\\u0430\\u0440\\u0430\\u043c\\u0435\\u043b\\u0438\\u0437\\u0438\\u0440\\u0430\\u043d\\u0438 \\u044f\\u0434\\u043a\\u0438\", \"description_uk\": \"Figs | Honey | Caramelized Nuts\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 150, \"cena\": 10.22}]}, {\"name\": \"\\u041f\\u0440\\u044f\\u0441\\u043d\\u043e \\u0418\\u0437\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0425\\u043b\\u0435\\u0431\\u0447\\u0435 \\u0441 \\u0411\\u0443\\u0440\\u0430\\u0442\\u0430\", \"name_uk\": \"\\u041f\\u0440\\u044f\\u0441\\u043d\\u043e \\u0418\\u0437\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0425\\u043b\\u0435\\u0431\\u0447\\u0435 \\u0441 \\u0411\\u0443\\u0440\\u0430\\u0442\\u0430\", \"description\": \"\\u0413\\u0440\\u0438\\u043b\\u043e\\u0432\\u0430\\u043d\\u0438 \\u043f\\u0440\\u0430\\u0441\\u043a\\u043e\\u0432\\u0438 | \\u0420\\u0443\\u043a\\u043e\\u043b\\u0430 | \\u041f\\u0435\\u0441\\u0442\\u043e \\u043e\\u0442 \\u043f\\u0438\\u0441\\u0442\\u0430\\u043a\\u0438\\u043e\", \"description_uk\": \"Grilled Peaches | Arugula | Pistachio Pesto\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 400, \"cena\": 12.78}]}, {\"name\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0447\\u0443\\u0446\\u0438 \\u043d\\u0430 \\u0413\\u0440\\u0438\\u043b\", \"name_uk\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0447\\u0443\\u0446\\u0438 \\u043d\\u0430 \\u0413\\u0440\\u0438\\u043b\", \"description\": \"\\u041c\\u0438\\u0441\\u043e \\u041b\\u0438\\u043c\\u043e\\u043d \\u0434\\u0440\\u0435\\u0441\\u0438\\u043d\\u0433 | \\u0417\\u0435\\u0445\\u0442\\u0438\\u043d \\u0415\\u043a\\u0441\\u0442\\u0440\\u0430 \\u0412\\u044a\\u0440\\u0434\\u0436\\u0438\\u043d\", \"description_uk\": \"Miso Lemon Dressing | Extra Virgin Olive Oil\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 300, \"cena\": 6.13}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.812233Z\"}", "module": "service", "function": "process_menu_upload", "line": 137}
{"timestamp": "2025-12-15 10:56:10,816", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"categories_count\": 1, \"total_items\": 7, \"target_city\": \"sofia\", \"event\": \"STEP_2_COMPLETED: Menu data transformation successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.816268Z\"}", "module": "service", "function": "process_menu_upload", "line": 157}
{"timestamp": "2025-12-15 10:56:10,816", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"city\": \"sofia\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"categories_count\": 1, \"total_items\": 7, \"event\": \"STEP_3_START: Calling external createMenu.php API\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.816712Z\"}", "module": "service", "function": "process_menu_upload", "line": 174}
{"timestamp": "2025-12-15 10:56:10,828", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"attempt\": 1, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 2195, \"categories_count\": 1, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.828878Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 291}
{"timestamp": "2025-12-15 10:56:10,829", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"attempt\": 1, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\", \"menu\": [{\"name\": \"\\u0410\\u043d\\u0442\\u0438\\u043f\\u0430\\u0441\\u0442\\u0438\", \"name_uk\": \"\\u0410\\u043d\\u0442\\u0438\\u043f\\u0430\\u0441\\u0442\\u0438\", \"description\": \"\", \"description_uk\": \"\", \"items\": [{\"name\": \"\\u0411\\u0440\\u0443\\u0441\\u043a\\u0435\\u0442\\u0438\", \"name_uk\": \"\\u0411\\u0440\\u0443\\u0441\\u043a\\u0435\\u0442\\u0438\", \"description\": \"\\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0441\\u044a\\u0441 \\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0427\\u0435\\u0440\\u0438 | \\u041f\\u0440\\u043e\\u0448\\u0443\\u0442\\u043e \\u041a\\u0440\\u0443\\u0433\\u043e \\u0438 \\u041a\\u0440\\u0435\\u043ca \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 | \\u0410\\u0440\\u0442\\u0438\\u0448\\u043e\\u043a \\u0438 \\u0427\\u0435\\u0440\\u0438 \\u0414\\u043e\\u043c\\u0430\\u0442\\u0438\", \"description_uk\": \"Goat Cheese with Roasted Cherry | Prosciutto Crudo and Cream Cheese | Artichoke and Cherry Tomatoes\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 250, \"cena\": 9.2}]}, {\"name\": \"\\u0421\\u0440\\u0435\\u0434\\u0438\\u0437\\u0435\\u043c\\u043d\\u043e\\u043c\\u043e\\u0440\\u0441\\u043a\\u0438 \\u0414\\u0438\\u043f\\u043e\\u0432\\u0435\", \"name_uk\": \"\\u0421\\u0440\\u0435\\u0434\\u0438\\u0437\\u0435\\u043c\\u043d\\u043e\\u043c\\u043e\\u0440\\u0441\\u043a\\u0438 \\u0414\\u0438\\u043f\\u043e\\u0432\\u0435\", \"description\": \"\\u0422\\u0430\\u0440\\u0430\\u043c\\u0430 | \\u041c\\u0443\\u0445\\u0430\\u043c\\u0430\\u0440\\u0430 | \\u0422\\u0438\\u0440\\u043e\\u0441\\u0430\\u043b\\u0430\\u0442\\u0430\", \"description_uk\": \"Tarama | Muhammara | Tirosalata\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 250, \"cena\": 9.2}]}, {\"name\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438\", \"name_uk\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438\", \"description\": \"\\u0441 \\u0422\\u0440\\u044e\\u0444\\u0435\\u043b\\u043e\\u0432\\u043e \\u041e\\u043b\\u0438\\u043e | \\u0414\\u0438\\u0432 \\u041b\\u0443\\u043a | \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0413\\u0440\\u044e\\u0435\\u0440\", \"description_uk\": \"with Truffle Oil | Wild Onion | Gruyere Cheese\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 350, \"cena\": 8.18}]}, {\"name\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438 \\u0441\\u044a\\u0441 \\u0421\\u043e\\u0441 \\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\u0430\\u0440\\u0430 \\u0438 \\u041f\\u0443\\u0434\\u0440\\u0430 \\u043e\\u0442 \\u041f\\u0430\\u043d\\u0447\\u0435\\u0442\\u0442\\u0430\", \"name_uk\": \"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438 \\u0441\\u044a\\u0441 \\u0421\\u043e\\u0441 \\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\u0430\\u0440\\u0430 \\u0438 \\u041f\\u0443\\u0434\\u0440\\u0430 \\u043e\\u0442 \\u041f\\u0430\\u043d\\u0447\\u0435\\u0442\\u0442\\u0430\", \"description\": \"\", \"description_uk\": \"\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 350, \"cena\": 8.18}]}, {\"name\": \"\\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435\", \"name_uk\": \"\\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435\", \"description\": \"\\u0421\\u043c\\u043e\\u043a\\u0438\\u043d\\u0438 | \\u041c\\u0435\\u0434 | \\u041a\\u0430\\u0440\\u0430\\u043c\\u0435\\u043b\\u0438\\u0437\\u0438\\u0440\\u0430\\u043d\\u0438 \\u044f\\u0434\\u043a\\u0438\", \"description_uk\": \"Figs | Honey | Caramelized Nuts\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 150, \"cena\": 10.22}]}, {\"name\": \"\\u041f\\u0440\\u044f\\u0441\\u043d\\u043e \\u0418\\u0437\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0425\\u043b\\u0435\\u0431\\u0447\\u0435 \\u0441 \\u0411\\u0443\\u0440\\u0430\\u0442\\u0430\", \"name_uk\": \"\\u041f\\u0440\\u044f\\u0441\\u043d\\u043e \\u0418\\u0437\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0425\\u043b\\u0435\\u0431\\u0447\\u0435 \\u0441 \\u0411\\u0443\\u0440\\u0430\\u0442\\u0430\", \"description\": \"\\u0413\\u0440\\u0438\\u043b\\u043e\\u0432\\u0430\\u043d\\u0438 \\u043f\\u0440\\u0430\\u0441\\u043a\\u043e\\u0432\\u0438 | \\u0420\\u0443\\u043a\\u043e\\u043b\\u0430 | \\u041f\\u0435\\u0441\\u0442\\u043e \\u043e\\u0442 \\u043f\\u0438\\u0441\\u0442\\u0430\\u043a\\u0438\\u043e\", \"description_uk\": \"Grilled Peaches | Arugula | Pistachio Pesto\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 400, \"cena\": 12.78}]}, {\"name\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0447\\u0443\\u0446\\u0438 \\u043d\\u0430 \\u0413\\u0440\\u0438\\u043b\", \"name_uk\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0447\\u0443\\u0446\\u0438 \\u043d\\u0430 \\u0413\\u0440\\u0438\\u043b\", \"description\": \"\\u041c\\u0438\\u0441\\u043e \\u041b\\u0438\\u043c\\u043e\\u043d \\u0434\\u0440\\u0435\\u0441\\u0438\\u043d\\u0433 | \\u0417\\u0435\\u0445\\u0442\\u0438\\u043d \\u0415\\u043a\\u0441\\u0442\\u0440\\u0430 \\u0412\\u044a\\u0440\\u0434\\u0436\\u0438\\u043d\", \"description_uk\": \"Miso Lemon Dressing | Extra Virgin Olive Oil\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 300, \"cena\": 6.13}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.829210Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 303}
{"timestamp": "2025-12-15 10:56:10,831", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"e3e2c608ceb9ca6e0e2d8d7b52ffb68f\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u0410\\u043d\\u0442\\u0438\\u043f\\u0430\\u0441\\u0442\\u0438\\\", \\\"name_uk\\\": \\\"\\u0410\\u043d\\u0442\\u0438\\u043f\\u0430\\u0441\\u0442\\u0438\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0411\\u0440\\u0443\\u0441\\u043a\\u0435\\u0442\\u0438\\\", \\\"name_uk\\\": \\\"\\u0411\\u0440\\u0443\\u0441\\u043a\\u0435\\u0442\\u0438\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0441\\u044a\\u0441 \\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0427\\u0435\\u0440\\u0438 | \\u041f\\u0440\\u043e\\u0448\\u0443\\u0442\\u043e \\u041a\\u0440\\u0443\\u0433\\u043e \\u0438 \\u041a\\u0440\\u0435\\u043ca \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 | \\u0410\\u0440\\u0442\\u0438\\u0448\\u043e\\u043a \\u0438 \\u0427\\u0435\\u0440\\u0438 \\u0414\\u043e\\u043c\\u0430\\u0442\\u0438\\\", \\\"description_uk\\\": \\\"Goat Cheese with Roasted Cherry | Prosciutto Crudo and Cream Cheese | Artichoke and Cherry Tomatoes\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 250, \\\"cena\\\": 9.2}]}, {\\\"name\\\": \\\"\\u0421\\u0440\\u0435\\u0434\\u0438\\u0437\\u0435\\u043c\\u043d\\u043e\\u043c\\u043e\\u0440\\u0441\\u043a\\u0438 \\u0414\\u0438\\u043f\\u043e\\u0432\\u0435\\\", \\\"name_uk\\\": \\\"\\u0421\\u0440\\u0435\\u0434\\u0438\\u0437\\u0435\\u043c\\u043d\\u043e\\u043c\\u043e\\u0440\\u0441\\u043a\\u0438 \\u0414\\u0438\\u043f\\u043e\\u0432\\u0435\\\", \\\"description\\\": \\\"\\u0422\\u0430\\u0440\\u0430\\u043c\\u0430 | \\u041c\\u0443\\u0445\\u0430\\u043c\\u0430\\u0440\\u0430 | \\u0422\\u0438\\u0440\\u043e\\u0441\\u0430\\u043b\\u0430\\u0442\\u0430\\\", \\\"description_uk\\\": \\\"Tarama | Muhammara | Tirosalata\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 250, \\\"cena\\\": 9.2}]}, {\\\"name\\\": \\\"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438\\\", \\\"name_uk\\\": \\\"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438\\\", \\\"description\\\": \\\"\\u0441 \\u0422\\u0440\\u044e\\u0444\\u0435\\u043b\\u043e\\u0432\\u043e \\u041e\\u043b\\u0438\\u043e | \\u0414\\u0438\\u0432 \\u041b\\u0443\\u043a | \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435 \\u0413\\u0440\\u044e\\u0435\\u0440\\\", \\\"description_uk\\\": \\\"with Truffle Oil | Wild Onion | Gruyere Cheese\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 350, \\\"cena\\\": 8.18}]}, {\\\"name\\\": \\\"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438 \\u0441\\u044a\\u0441 \\u0421\\u043e\\u0441 \\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\u0430\\u0440\\u0430 \\u0438 \\u041f\\u0443\\u0434\\u0440\\u0430 \\u043e\\u0442 \\u041f\\u0430\\u043d\\u0447\\u0435\\u0442\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u0414\\u043e\\u043c\\u0430\\u0448\\u043d\\u0438 \\u0423\\u0435\\u0434\\u0436\\u0438\\u0441 \\u041a\\u0430\\u0440\\u0442\\u043e\\u0444\\u043a\\u0438 \\u0441\\u044a\\u0441 \\u0421\\u043e\\u0441 \\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\u0430\\u0440\\u0430 \\u0438 \\u041f\\u0443\\u0434\\u0440\\u0430 \\u043e\\u0442 \\u041f\\u0430\\u043d\\u0447\\u0435\\u0442\\u0442\\u0430\\\", \\\"description\\\": \\\"\\\", \\\"description_uk\\\": \\\"\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 350, \\\"cena\\\": 8.18}]}, {\\\"name\\\": \\\"\\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435\\\", \\\"name_uk\\\": \\\"\\u0417\\u0430\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u041a\\u043e\\u0437\\u0435 \\u0421\\u0438\\u0440\\u0435\\u043d\\u0435\\\", \\\"description\\\": \\\"\\u0421\\u043c\\u043e\\u043a\\u0438\\u043d\\u0438 | \\u041c\\u0435\\u0434 | \\u041a\\u0430\\u0440\\u0430\\u043c\\u0435\\u043b\\u0438\\u0437\\u0438\\u0440\\u0430\\u043d\\u0438 \\u044f\\u0434\\u043a\\u0438\\\", \\\"description_uk\\\": \\\"Figs | Honey | Caramelized Nuts\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 150, \\\"cena\\\": 10.22}]}, {\\\"name\\\": \\\"\\u041f\\u0440\\u044f\\u0441\\u043d\\u043e \\u0418\\u0437\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0425\\u043b\\u0435\\u0431\\u0447\\u0435 \\u0441 \\u0411\\u0443\\u0440\\u0430\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u044f\\u0441\\u043d\\u043e \\u0418\\u0437\\u043f\\u0435\\u0447\\u0435\\u043d\\u043e \\u0425\\u043b\\u0435\\u0431\\u0447\\u0435 \\u0441 \\u0411\\u0443\\u0440\\u0430\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u0440\\u0438\\u043b\\u043e\\u0432\\u0430\\u043d\\u0438 \\u043f\\u0440\\u0430\\u0441\\u043a\\u043e\\u0432\\u0438 | \\u0420\\u0443\\u043a\\u043e\\u043b\\u0430 | \\u041f\\u0435\\u0441\\u0442\\u043e \\u043e\\u0442 \\u043f\\u0438\\u0441\\u0442\\u0430\\u043a\\u0438\\u043e\\\", \\\"description_uk\\\": \\\"Grilled Peaches | Arugula | Pistachio Pesto\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 400, \\\"cena\\\": 12.78}]}, {\\\"name\\\": \\\"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0447\\u0443\\u0446\\u0438 \\u043d\\u0430 \\u0413\\u0440\\u0438\\u043b\\\", \\\"name_uk\\\": \\\"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0447\\u0443\\u0446\\u0438 \\u043d\\u0430 \\u0413\\u0440\\u0438\\u043b\\\", \\\"description\\\": \\\"\\u041c\\u0438\\u0441\\u043e \\u041b\\u0438\\u043c\\u043e\\u043d \\u0434\\u0440\\u0435\\u0441\\u0438\\u043d\\u0433 | \\u0417\\u0435\\u0445\\u0442\\u0438\\u043d \\u0415\\u043a\\u0441\\u0442\\u0440\\u0430 \\u0412\\u044a\\u0440\\u0434\\u0436\\u0438\\u043d\\\", \\\"description_uk\\\": \\\"Miso Lemon Dressing | Extra Virgin Olive Oil\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 300, \\\"cena\\\": 6.13}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:10.831482Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 349}
{"timestamp": "2025-12-15 10:56:11,035", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:56:11,037", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"attempt\": 1, \"status_code\": 200, \"full_response\": \"<br />\\n<b>Fatal error</b>:  Uncaught ArgumentCountError: Too few arguments to function VenueService::__construct(), 0 passed in /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php on line 72 and exactly 1 expected in /home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php:7\\nStack trace:\\n#0 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(72): VenueService-&gt;__construct()\\n#1 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(152): CreateMenuController-&gt;__construct()\\n#2 {main}\\n  thrown in <b>/home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php</b> on line <b>7</b><br />\\n\", \"event\": \"CREATE_MENU_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:11.037040Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 367}
{"timestamp": "2025-12-15 10:56:11,037", "level": "WARNING", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"response_text\": \"<br />\\n<b>Fatal error</b>:  Uncaught ArgumentCountError: Too few arguments to function VenueService::__construct(), 0 passed in /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php on line 72 and exactly 1 expected in /home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php:7\\nStack trace:\\n#0 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(72): VenueService-&gt;__construct()\\n#1 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(152): CreateMenuController-&gt;__construct()\\n#2 {main}\\n  thrown in <b>/home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php</b> on line <b>7</b><br />\\n\", \"event\": \"CREATE_MENU_RESPONSE_NOT_JSON\", \"logger\": \"insert_menu_items.service\", \"level\": \"warning\", \"timestamp\": \"2025-12-15T09:56:11.037742Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 397}
{"timestamp": "2025-12-15 10:56:11,038", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"attempt\": 1, \"status_code\": 200, \"response_length\": 686, \"event\": \"API_REQUEST_SUCCESS\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:11.038149Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 406}
{"timestamp": "2025-12-15 10:56:11,038", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"city\": \"sofia\", \"event\": \"STEP_3_COMPLETED: External API call successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:11.038776Z\"}", "module": "service", "function": "process_menu_upload", "line": 185}
{"timestamp": "2025-12-15 10:56:11,039", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:11.039066Z\"}", "module": "service", "function": "process_menu_upload", "line": 202}
{"timestamp": "2025-12-15 10:56:11,039", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"07363731-e8a7-4233-a836-3602902c6d4b\", \"city\": \"sofia\", \"filename\": \"sk1.png\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"categories_count\": 1, \"total_items\": 7, \"processing_time_seconds\": 14.87, \"status\": \"SUCCESS\", \"event\": \"MENU_UPLOAD_PROCESSING_COMPLETED_SUCCESSFULLY\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:11.039356Z\"}", "module": "service", "function": "process_menu_upload", "line": 205}
{"timestamp": "2025-12-15 10:56:11,039", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:11.039573Z\"}", "module": "service", "function": "process_menu_upload", "line": 217}
{"timestamp": "2025-12-15 10:56:18,434", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:56:18,439", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2238, \"output_tokens\": 427, \"total_tokens\": 2665, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.009865, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:18.439535Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:56:18,440", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:18.440268Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:56:18,441", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:18.441294Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:56:18,441", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:56:18.441635Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:57:18,279", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:18.279227Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:57:18,281", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:18.281200Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:57:18,281", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:18.281521Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:57:18,284", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:18.283976Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:57:34,972", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:57:34,977", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2918, \"output_tokens\": 418, \"total_tokens\": 3336, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.011475, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:34.977062Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:57:34,977", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:34.977627Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:57:34,978", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:34.978171Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:57:34,978", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:57:34.978426Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:58:14,103", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:14.103658Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 10:58:14,105", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:14.105752Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 10:58:14,106", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:14.106117Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 10:58:14,108", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:14.108667Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 10:58:26,890", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 10:58:26,893", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2918, \"output_tokens\": 392, \"total_tokens\": 3310, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.011215, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:26.893540Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 10:58:26,894", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:26.894120Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 10:58:26,894", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:26.894651Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 10:58:26,894", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:26.894945Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 10:58:59,385", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:59.385677Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 10:58:59,388", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T09:58:59.387993Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:02:21,530", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:21.530449Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:02:21,532", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:21.532005Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:02:22,188", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:22.188071Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:02:22,188", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:22.188432Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:02:22,188", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:22.188654Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:02:22,188", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:22.188908Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:02:22,189", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:22.189038Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:02:22,189", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:22.189119Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:02:22,194", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:22.194742Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:02:30,283", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.283417Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:02:30,283", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.283757Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:02:30,767", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.767197Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:02:30,767", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.767655Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:02:30,767", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.767915Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:02:30,768", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.768015Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:02:30,768", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.768104Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:02:30,768", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.768182Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:02:30,773", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:30.773828Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:02:40,372", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.372249Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:02:40,373", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.373377Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:02:40,879", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.878897Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:02:40,879", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.879264Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:02:40,879", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.879475Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:02:40,879", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.879566Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:02:40,879", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.879651Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:02:40,879", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.879716Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:02:40,885", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:40.885065Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:02:46,972", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:46.972109Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:02:46,972", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:46.972441Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:02:47,489", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:47.488780Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:02:47,489", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:47.489179Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:02:47,489", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:47.489404Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:02:47,489", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:47.489503Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:02:47,489", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:47.489592Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:02:47,489", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:47.489667Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:02:47,495", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:47.495334Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:02:56,707", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:56.707460Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:02:56,708", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:56.708269Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:02:57,202", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:57.201973Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:02:57,202", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:57.202335Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:02:57,202", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:57.202552Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:02:57,202", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:57.202644Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:02:57,202", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:57.202757Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:02:57,202", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:57.202829Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:02:57,208", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:02:57.208386Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:03:02,878", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:02.878366Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:03:02,878", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:02.878594Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:03:03,374", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:03.374334Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:03:03,374", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:03.374730Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:03:03,374", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:03.374958Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:03:03,375", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:03.375053Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:03:03,375", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:03.375138Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:03:03,375", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:03.375214Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:03:03,380", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:03.380910Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:03:11,476", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.475964Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:03:11,476", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.476357Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:03:11,971", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.971021Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:03:11,971", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.971406Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:03:11,971", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.971625Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:03:11,971", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.971721Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:03:11,971", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.971805Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:03:11,971", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.971877Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:03:11,978", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:03:11.978155Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:04:24,179", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:24.179386Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:04:24,180", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:24.180128Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:04:24,180", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:24.180353Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:04:24,180", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:24.180474Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:04:24,180", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:24.180560Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:04:24,180", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:24.180629Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:04:24,186", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:24.185994Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:04:34,494", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:34.493973Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 11:04:34,494", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:34.494745Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 11:04:34,494", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:34.494924Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 11:04:34,509", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:34.509269Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 11:04:47,717", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 11:04:47,723", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2991, \"output_tokens\": 401, \"total_tokens\": 3392, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.011488, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:47.723220Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 11:04:47,724", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:47.723965Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 11:04:47,724", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:47.724771Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 11:04:47,725", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:04:47.725064Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 11:06:28,128", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:06:28.128328Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 11:06:28,131", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:06:28.131085Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 11:30:19,720", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:19.720733Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 11:30:19,721", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:19.721397Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 11:30:19,722", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:19.722159Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 11:30:19,722", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:19.722258Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 11:30:19,722", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:19.722347Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 11:30:19,722", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:19.722416Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 11:30:19,727", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:19.727794Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 11:30:22,774", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"filename\": \"dorucak.jpg\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.774436Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-15 11:30:22,774", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"filename\": \"dorucak.jpg\", \"content_type\": \"image/jpeg\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.774844Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-15 11:30:22,775", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"filename\": \"dorucak.jpg\", \"size_bytes\": 320623, \"size_kb\": 313.11, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.775082Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-15 11:30:22,775", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.775271Z\"}", "module": "routes", "function": "insert_menu_items", "line": 101}
{"timestamp": "2025-12-15 11:30:22,775", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"city\": \"sofia\", \"filename\": \"dorucak.jpg\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.775485Z\"}", "module": "routes", "function": "insert_menu_items", "line": 121}
{"timestamp": "2025-12-15 11:30:22,776", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"city\": \"sofia\", \"filename\": \"dorucak.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.776060Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-15 11:30:22,776", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"image_size_bytes\": 320623, \"mime_type\": \"image/jpeg\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.776250Z\"}", "module": "service", "function": "process_menu_upload", "line": 62}
{"timestamp": "2025-12-15 11:30:22,776", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.776594Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 11:30:22,776", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.776900Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 11:30:22,792", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:22.792078Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 11:30:36,419", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 11:30:36,426", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2991, \"output_tokens\": 401, \"total_tokens\": 3392, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.011488, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.426347Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 11:30:36,426", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.426826Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 11:30:36,427", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.427530Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 11:30:36,428", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"response_data\": {\"menu\": {\"restaurant_name\": null, \"categories\": [{\"name\": \"Doru\\u010dak\", \"description\": \"Doru\\u010dak\", \"description_uk\": \"Breakfast\", \"items\": [{\"name\": \"Klub sendvi\\u010d\", \"description\": \"Piletina, slanina, jaja, paradajz, majonez, zelena salata, pomfrit\", \"description_uk\": \"Chicken, bacon, eggs, tomato, mayonnaise, lettuce, french fries\", \"price\": \"730\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Tuna sendvi\\u010d\", \"description\": \"Tuna, majonez, jaje, paradajz, iceberg salata\", \"description_uk\": \"Tuna, mayonnaise, egg, tomato, iceberg salad\", \"price\": \"630\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Omlet po \\u017eelji\", \"description\": \"\\u0160unka, sir, povr\\u0107e\", \"description_uk\": \"Ham, cheese, vegetables\", \"price\": \"520\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Engleski doru\\u010dak\", \"description\": \"Jaja na oko, vir\\u0161la u slanini, \\u0161ampinjoni\", \"description_uk\": \"Two fried sunny side up eggs, sausage rolled with bacon, champignons\", \"price\": \"590\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Kontinentalni doru\\u010dak\", \"description\": \"Musli, me\\u0161ano vo\\u0107e, puter, d\\u017eem, med, tost\", \"description_uk\": \"Musli, mix of fruit, butter, jam, honey, toast\", \"price\": \"490\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Pr\\u017eenice \\u201eMali Pariz\\u201c\", \"description\": \"\\u0160unka, emenataler\", \"description_uk\": \"Ham, emmentaler\", \"price\": \"550\", \"serving_size\": null, \"measure\": null, \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.428070Z\"}", "module": "service", "function": "process_menu_upload", "line": 84}
{"timestamp": "2025-12-15 11:30:36,429", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"categories_count\": 1, \"restaurant_name\": null, \"model_used\": \"gpt-4o\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.429082Z\"}", "module": "service", "function": "process_menu_upload", "line": 103}
{"timestamp": "2025-12-15 11:30:36,429", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"categories_to_transform\": 1, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.429378Z\"}", "module": "service", "function": "process_menu_upload", "line": 120}
{"timestamp": "2025-12-15 11:30:36,429", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 1, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.429669Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-15 11:30:36,430", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 1, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.430175Z\"}", "module": "adapter", "function": "transform", "line": 48}
{"timestamp": "2025-12-15 11:30:36,430", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"Doru\\u010dak\", \"name_uk\": \"Doru\\u010dak\", \"description\": \"Doru\\u010dak\", \"description_uk\": \"Breakfast\", \"items\": [{\"name\": \"Klub sendvi\\u010d\", \"name_uk\": \"Klub sendvi\\u010d\", \"description\": \"Piletina, slanina, jaja, paradajz, majonez, zelena salata, pomfrit\", \"description_uk\": \"Chicken, bacon, eggs, tomato, mayonnaise, lettuce, french fries\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 730.0}]}, {\"name\": \"Tuna sendvi\\u010d\", \"name_uk\": \"Tuna sendvi\\u010d\", \"description\": \"Tuna, majonez, jaje, paradajz, iceberg salata\", \"description_uk\": \"Tuna, mayonnaise, egg, tomato, iceberg salad\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 630.0}]}, {\"name\": \"Omlet po \\u017eelji\", \"name_uk\": \"Omlet po \\u017eelji\", \"description\": \"\\u0160unka, sir, povr\\u0107e\", \"description_uk\": \"Ham, cheese, vegetables\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 520.0}]}, {\"name\": \"Engleski doru\\u010dak\", \"name_uk\": \"Engleski doru\\u010dak\", \"description\": \"Jaja na oko, vir\\u0161la u slanini, \\u0161ampinjoni\", \"description_uk\": \"Two fried sunny side up eggs, sausage rolled with bacon, champignons\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 590.0}]}, {\"name\": \"Kontinentalni doru\\u010dak\", \"name_uk\": \"Kontinentalni doru\\u010dak\", \"description\": \"Musli, me\\u0161ano vo\\u0107e, puter, d\\u017eem, med, tost\", \"description_uk\": \"Musli, mix of fruit, butter, jam, honey, toast\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 490.0}]}, {\"name\": \"Pr\\u017eenice \\u201eMali Pariz\\u201c\", \"name_uk\": \"Pr\\u017eenice \\u201eMali Pariz\\u201c\", \"description\": \"\\u0160unka, emenataler\", \"description_uk\": \"Ham, emmentaler\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 550.0}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.430390Z\"}", "module": "service", "function": "process_menu_upload", "line": 137}
{"timestamp": "2025-12-15 11:30:36,431", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"categories_count\": 1, \"total_items\": 6, \"target_city\": \"sofia\", \"event\": \"STEP_2_COMPLETED: Menu data transformation successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.431458Z\"}", "module": "service", "function": "process_menu_upload", "line": 157}
{"timestamp": "2025-12-15 11:30:36,431", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"city\": \"sofia\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"categories_count\": 1, \"total_items\": 6, \"event\": \"STEP_3_START: Calling external createMenu.php API\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.431692Z\"}", "module": "service", "function": "process_menu_upload", "line": 174}
{"timestamp": "2025-12-15 11:30:36,443", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"attempt\": 1, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 1799, \"categories_count\": 1, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.443367Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 291}
{"timestamp": "2025-12-15 11:30:36,443", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"attempt\": 1, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"Doru\\u010dak\", \"name_uk\": \"Doru\\u010dak\", \"description\": \"Doru\\u010dak\", \"description_uk\": \"Breakfast\", \"items\": [{\"name\": \"Klub sendvi\\u010d\", \"name_uk\": \"Klub sendvi\\u010d\", \"description\": \"Piletina, slanina, jaja, paradajz, majonez, zelena salata, pomfrit\", \"description_uk\": \"Chicken, bacon, eggs, tomato, mayonnaise, lettuce, french fries\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 730.0}]}, {\"name\": \"Tuna sendvi\\u010d\", \"name_uk\": \"Tuna sendvi\\u010d\", \"description\": \"Tuna, majonez, jaje, paradajz, iceberg salata\", \"description_uk\": \"Tuna, mayonnaise, egg, tomato, iceberg salad\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 630.0}]}, {\"name\": \"Omlet po \\u017eelji\", \"name_uk\": \"Omlet po \\u017eelji\", \"description\": \"\\u0160unka, sir, povr\\u0107e\", \"description_uk\": \"Ham, cheese, vegetables\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 520.0}]}, {\"name\": \"Engleski doru\\u010dak\", \"name_uk\": \"Engleski doru\\u010dak\", \"description\": \"Jaja na oko, vir\\u0161la u slanini, \\u0161ampinjoni\", \"description_uk\": \"Two fried sunny side up eggs, sausage rolled with bacon, champignons\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 590.0}]}, {\"name\": \"Kontinentalni doru\\u010dak\", \"name_uk\": \"Kontinentalni doru\\u010dak\", \"description\": \"Musli, me\\u0161ano vo\\u0107e, puter, d\\u017eem, med, tost\", \"description_uk\": \"Musli, mix of fruit, butter, jam, honey, toast\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 490.0}]}, {\"name\": \"Pr\\u017eenice \\u201eMali Pariz\\u201c\", \"name_uk\": \"Pr\\u017eenice \\u201eMali Pariz\\u201c\", \"description\": \"\\u0160unka, emenataler\", \"description_uk\": \"Ham, emmentaler\", \"measure\": 0, \"items\": [{\"name\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\", \"gramaj\": 100, \"cena\": 550.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.443661Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 303}
{"timestamp": "2025-12-15 11:30:36,445", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"Doru\\u010dak\\\", \\\"name_uk\\\": \\\"Doru\\u010dak\\\", \\\"description\\\": \\\"Doru\\u010dak\\\", \\\"description_uk\\\": \\\"Breakfast\\\", \\\"items\\\": [{\\\"name\\\": \\\"Klub sendvi\\u010d\\\", \\\"name_uk\\\": \\\"Klub sendvi\\u010d\\\", \\\"description\\\": \\\"Piletina, slanina, jaja, paradajz, majonez, zelena salata, pomfrit\\\", \\\"description_uk\\\": \\\"Chicken, bacon, eggs, tomato, mayonnaise, lettuce, french fries\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 730.0}]}, {\\\"name\\\": \\\"Tuna sendvi\\u010d\\\", \\\"name_uk\\\": \\\"Tuna sendvi\\u010d\\\", \\\"description\\\": \\\"Tuna, majonez, jaje, paradajz, iceberg salata\\\", \\\"description_uk\\\": \\\"Tuna, mayonnaise, egg, tomato, iceberg salad\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 630.0}]}, {\\\"name\\\": \\\"Omlet po \\u017eelji\\\", \\\"name_uk\\\": \\\"Omlet po \\u017eelji\\\", \\\"description\\\": \\\"\\u0160unka, sir, povr\\u0107e\\\", \\\"description_uk\\\": \\\"Ham, cheese, vegetables\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 520.0}]}, {\\\"name\\\": \\\"Engleski doru\\u010dak\\\", \\\"name_uk\\\": \\\"Engleski doru\\u010dak\\\", \\\"description\\\": \\\"Jaja na oko, vir\\u0161la u slanini, \\u0161ampinjoni\\\", \\\"description_uk\\\": \\\"Two fried sunny side up eggs, sausage rolled with bacon, champignons\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 590.0}]}, {\\\"name\\\": \\\"Kontinentalni doru\\u010dak\\\", \\\"name_uk\\\": \\\"Kontinentalni doru\\u010dak\\\", \\\"description\\\": \\\"Musli, me\\u0161ano vo\\u0107e, puter, d\\u017eem, med, tost\\\", \\\"description_uk\\\": \\\"Musli, mix of fruit, butter, jam, honey, toast\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 490.0}]}, {\\\"name\\\": \\\"Pr\\u017eenice \\u201eMali Pariz\\u201c\\\", \\\"name_uk\\\": \\\"Pr\\u017eenice \\u201eMali Pariz\\u201c\\\", \\\"description\\\": \\\"\\u0160unka, emenataler\\\", \\\"description_uk\\\": \\\"Ham, emmentaler\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430 \\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 550.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.445221Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 349}
{"timestamp": "2025-12-15 11:30:36,544", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 11:30:36,545", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"attempt\": 1, \"status_code\": 200, \"full_response\": \"<br />\\n<b>Fatal error</b>:  Uncaught ArgumentCountError: Too few arguments to function VenueService::__construct(), 0 passed in /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php on line 72 and exactly 1 expected in /home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php:7\\nStack trace:\\n#0 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(72): VenueService-&gt;__construct()\\n#1 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(152): CreateMenuController-&gt;__construct()\\n#2 {main}\\n  thrown in <b>/home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php</b> on line <b>7</b><br />\\n\", \"event\": \"CREATE_MENU_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.545911Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 367}
{"timestamp": "2025-12-15 11:30:36,546", "level": "WARNING", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"response_text\": \"<br />\\n<b>Fatal error</b>:  Uncaught ArgumentCountError: Too few arguments to function VenueService::__construct(), 0 passed in /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php on line 72 and exactly 1 expected in /home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php:7\\nStack trace:\\n#0 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(72): VenueService-&gt;__construct()\\n#1 /home/zaveden/public_html/apps/orderapprestaurant/api/createMenu.php(152): CreateMenuController-&gt;__construct()\\n#2 {main}\\n  thrown in <b>/home/zaveden/public_html/apps/orderapprestaurant/api/Services/VenueService.php</b> on line <b>7</b><br />\\n\", \"event\": \"CREATE_MENU_RESPONSE_NOT_JSON\", \"logger\": \"insert_menu_items.service\", \"level\": \"warning\", \"timestamp\": \"2025-12-15T10:30:36.546416Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 397}
{"timestamp": "2025-12-15 11:30:36,546", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"attempt\": 1, \"status_code\": 200, \"response_length\": 686, \"event\": \"API_REQUEST_SUCCESS\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.546720Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 406}
{"timestamp": "2025-12-15 11:30:36,547", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"city\": \"sofia\", \"event\": \"STEP_3_COMPLETED: External API call successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.547145Z\"}", "module": "service", "function": "process_menu_upload", "line": 185}
{"timestamp": "2025-12-15 11:30:36,547", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.547316Z\"}", "module": "service", "function": "process_menu_upload", "line": 202}
{"timestamp": "2025-12-15 11:30:36,547", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"d8e13793-3741-43ab-9cc4-cc637d9b8a69\", \"city\": \"sofia\", \"filename\": \"dorucak.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"categories_count\": 1, \"total_items\": 6, \"processing_time_seconds\": 13.77, \"status\": \"SUCCESS\", \"event\": \"MENU_UPLOAD_PROCESSING_COMPLETED_SUCCESSFULLY\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.547477Z\"}", "module": "service", "function": "process_menu_upload", "line": 205}
{"timestamp": "2025-12-15 11:30:36,547", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:30:36.547637Z\"}", "module": "service", "function": "process_menu_upload", "line": 217}
{"timestamp": "2025-12-15 11:57:28,569", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:28.569326Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 11:57:28,572", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:28.572194Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 11:57:28,572", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:28.572414Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 11:57:28,595", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:28.595918Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 11:57:43,094", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 11:57:43,100", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2991, \"output_tokens\": 402, \"total_tokens\": 3393, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.011498, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:43.100255Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 11:57:43,100", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:43.100676Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 11:57:43,101", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:43.101313Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 11:57:43,101", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T10:57:43.101726Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 12:10:12,640", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"has_api_key_override\": false, \"event\": \"menu_extraction_request\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:12.640261Z\"}", "module": "routes", "function": "extract_menu", "line": 41}
{"timestamp": "2025-12-15 12:10:12,643", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:12.643080Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 12:10:12,643", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:12.643370Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 12:10:12,644", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:12.644384Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 12:10:30,812", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 12:10:30,817", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2311, \"output_tokens\": 561, \"total_tokens\": 2872, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.011388, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:30.817078Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 12:10:30,817", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:30.817769Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 12:10:30,819", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"bg\", \"target_language\": \"bg\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:30.818964Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 12:10:30,819", "level": "INFO", "logger": "menu_extraction.routes", "message": "{\"files_count\": 1, \"categories_count\": 1, \"model\": \"gpt-4o\", \"event\": \"menu_extraction_success\", \"logger\": \"menu_extraction.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:10:30.819397Z\"}", "module": "routes", "function": "extract_menu", "line": 68}
{"timestamp": "2025-12-15 12:13:51,774", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:51.773685Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 12:13:51,775", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:51.774962Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 12:13:52,075", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.075493Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 12:13:52,076", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.076379Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 12:13:52,484", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.483958Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 12:13:52,484", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.484468Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 12:13:52,485", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.485081Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 12:13:52,485", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.485221Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 12:13:52,485", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.485325Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 12:13:52,485", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.485414Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 12:13:52,492", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.492150Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 12:13:52,608", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.608672Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 12:13:52,609", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.609103Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 12:13:52,609", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.609347Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 12:13:52,609", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.609482Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 12:13:52,609", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.609658Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 12:13:52,609", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.609740Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 12:13:52,615", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:13:52.615476Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 12:14:37,104", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:14:37.104523Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 12:14:37,107", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T11:14:37.107224Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:35:46,197", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:35:46.196908Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:35:46,197", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:35:46.197645Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:35:46,198", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:35:46.198638Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:35:46,198", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:35:46.198734Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:35:46,198", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:35:46.198817Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:35:46,198", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:35:46.198884Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:35:46,204", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:35:46.204482Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:21,319", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:21.319137Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:21,320", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:21.320838Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:21,322", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:21.321992Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:21,322", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:21.322806Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.012642Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013168Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.012664Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013300Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013434Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013531Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013538Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013638Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013642Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013709Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013734Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:22,013", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.013811Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:22,020", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.020953Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:22,021", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:22.020955Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:31,313", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.313938Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:31,314", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.314189Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:31,319", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.319265Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:31,319", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.319441Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:31,812", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.812365Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:31,812", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.812370Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813060Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813072Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813298Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813303Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813398Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813407Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813497Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813498Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813573Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:31,813", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.813603Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:31,819", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.819715Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:31,819", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:31.819712Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:40,618", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:40.618520Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:40,618", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:40.618847Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:40,618", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:40.618936Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:40,619", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:40.619045Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:41,187", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.187530Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:41,187", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.187956Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:41,188", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.188200Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:41,188", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.188304Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:41,188", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.188430Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:41,188", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.188511Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:41,189", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.189480Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:41,189", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.189928Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:41,190", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.190171Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:41,190", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.190311Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:41,190", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.190460Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:41,190", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.190576Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:41,195", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.195171Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:41,197", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:41.197504Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:54,433", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:54.433297Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:54,434", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:54.434297Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:54,440", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:54.440516Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:38:54,440", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:54.440781Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:38:55,016", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.016465Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:55,016", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.016513Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:38:55,016", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.016869Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:55,016", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.016879Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017103Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017104Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017207Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017207Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017302Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017304Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017375Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:55,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.017376Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:38:55,023", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.023257Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:38:55,023", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:38:55.023239Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:39:04,718", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:04.718920Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:39:04,719", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:04.719371Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:39:04,719", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:04.719916Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:39:04,719", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:04.719912Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:39:05,227", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.227710Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:39:05,227", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.227746Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228129Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228149Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228465Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228540Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228634Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228643Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228734Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228743Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228810Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:39:05,228", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.228816Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:39:05,235", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.234981Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:39:05,235", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:05.235031Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:39:19,282", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.282696Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:39:19,284", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.284046Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:39:19,285", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.285170Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:39:19,285", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.285734Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:39:19,903", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.903470Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:39:19,903", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.903891Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:39:19,903", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.903494Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904017Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904154Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904255Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904270Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904358Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904364Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904437Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904450Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:39:19,904", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.904524Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:39:19,910", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.910529Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:39:19,910", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:39:19.910536Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:44:46,180", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:46.180378Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:44:46,183", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:46.183039Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:44:51,843", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:51.843530Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:44:51,844", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:51.844057Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:44:51,844", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:51.844295Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:44:51,844", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:51.844397Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:44:51,844", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:51.844485Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:44:51,844", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:51.844554Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:44:51,849", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:44:51.849837Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:45:29,886", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:29.886265Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:45:29,886", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:29.886732Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:45:29,943", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:29.943281Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:45:29,943", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:29.943529Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:45:30,473", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.473347Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:45:30,473", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.473177Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:45:30,473", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.473829Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:45:30,473", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.473904Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:45:30,474", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.474184Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:45:30,474", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.474127Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:45:30,474", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.474330Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:45:30,474", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.474441Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:45:30,474", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.474521Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:45:30,474", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.474523Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:45:30,475", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.475143Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:45:30,475", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.475546Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:45:30,487", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.487706Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:45:30,488", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:30.488324Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:45:40,398", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:40.398597Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:45:40,398", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:40.398796Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:45:40,502", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:40.502065Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:45:40,502", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:40.502206Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:45:41,098", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.097959Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:45:41,098", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.098329Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:45:41,098", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.098565Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:45:41,098", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.098689Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:45:41,098", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.098778Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:45:41,098", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.098850Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:45:41,105", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.104968Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:45:41,122", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.122703Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:45:41,123", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.123099Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:45:41,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.123331Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:45:41,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.123426Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:45:41,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.123512Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:45:41,123", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.123581Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:45:41,129", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:41.129378Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:45:53,027", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"filename\": \"1.jpg\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.027482Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-15 13:45:53,028", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"filename\": \"1.jpg\", \"content_type\": \"image/jpeg\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.028380Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-15 13:45:53,030", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"filename\": \"1.jpg\", \"size_bytes\": 102256, \"size_kb\": 99.86, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.030328Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-15 13:45:53,031", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"curl_command\": \"curl --location 'http://localhost:8000/menu-items/insert' \\\\\\n--header 'Authorization: Bearer <YOUR_AUTH_KEY>' \\\\\\n--form 'file=@\\\"1.jpg\\\"' \\\\\\n--form 'city=\\\"sofia\\\"' \\\\\\n--form 'token=\\\"197b5f7321b52a068923824800958336\\\"' \\\\\\n--form 'source_language=\\\"sr\\\"' \\\\\\n--form 'target_language=\\\"sr\\\"'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"UPLOAD_CURL_COMMAND\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.031512Z\"}", "module": "routes", "function": "insert_menu_items", "line": 147}
{"timestamp": "2025-12-15 13:45:53,031", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.031703Z\"}", "module": "routes", "function": "insert_menu_items", "line": 154}
{"timestamp": "2025-12-15 13:45:53,031", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"city\": \"sofia\", \"filename\": \"1.jpg\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.031835Z\"}", "module": "routes", "function": "insert_menu_items", "line": 174}
{"timestamp": "2025-12-15 13:45:53,032", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"city\": \"sofia\", \"filename\": \"1.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.032674Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-15 13:45:53,036", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"image_size_bytes\": 102256, \"mime_type\": \"image/jpeg\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.036194Z\"}", "module": "service", "function": "process_menu_upload", "line": 75}
{"timestamp": "2025-12-15 13:45:53,036", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.036568Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 13:45:53,038", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.038251Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 13:45:53,073", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:45:53.073490Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 13:46:40,687", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 13:46:40,692", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 3331, \"output_tokens\": 968, \"total_tokens\": 4299, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.018007, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.692198Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 13:46:40,692", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 4, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.692621Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 13:46:40,693", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 4, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.693623Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 13:46:40,694", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"response_data\": {\"menu\": {\"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"categories\": [{\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description_uk\": \"Starters / Antipasti\", \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\", \"description_uk\": \"Cornbread / Tradizionale con farina di mais\", \"price\": \"50\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\", \"description_uk\": \"Flatbread / Focaccia\", \"price\": \"80\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\", \"description_uk\": \"Bread / Pane\", \"price\": \"30\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\", \"description_uk\": \"Smoked hams / Prosciutto\", \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\", \"description_uk\": \"Beef smoked ham / Prosciutto di manzo\", \"price\": \"8000\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\", \"description_uk\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"price\": \"8000\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"description\": \"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Air-dried cured meat / Prosciutto di pecora\", \"price\": \"8000\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\", \"description_uk\": \"Smoked meat / Carne affumicata\", \"price\": \"4500\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\", \"description_uk\": \"Pork ham / Prosciutto di maiale\", \"price\": \"8000\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\", \"description_uk\": \"Cheeses / Formaggi\", \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\", \"description_uk\": \"Cow cheese / Formaggio di mucca\", \"price\": \"2500\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\", \"description_uk\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"price\": \"6000\", \"serving_size\": \"\\u043f\\u043e\\u0440\\u0446\\u0438\\u0458\\u0430\", \"measure\": null, \"notes\": null}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\", \"description_uk\": \"Goat cheese / Formaggio di capra\", \"price\": \"3500\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description_uk\": \"Serbian clotted cream / Kajmak\", \"price\": \"3500\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Sheep's cheese / Formaggio di pecora\", \"price\": \"3500\", \"serving_size\": \"\\u043a\\u0438\\u043b\\u043e\\u0433\\u0440\\u0430\\u043c\", \"measure\": 0, \"notes\": null}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\", \"description_uk\": \"Aspic / Aspic\", \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\", \"description_uk\": \"Aspic / Aspic salato\", \"price\": \"350\", \"serving_size\": \"\\u043a\\u043e\\u043c\", \"measure\": 2, \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.693994Z\"}", "module": "service", "function": "process_menu_upload", "line": 97}
{"timestamp": "2025-12-15 13:46:40,696", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"categories_count\": 4, \"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"model_used\": \"gpt-4o\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.696226Z\"}", "module": "service", "function": "process_menu_upload", "line": 116}
{"timestamp": "2025-12-15 13:46:40,696", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"categories_to_transform\": 4, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.696713Z\"}", "module": "service", "function": "process_menu_upload", "line": 133}
{"timestamp": "2025-12-15 13:46:40,697", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 4, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.697182Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-15 13:46:40,698", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 4, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.698402Z\"}", "module": "adapter", "function": "transform", "line": 48}
{"timestamp": "2025-12-15 13:46:40,699", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description_uk\": \"Starters / Antipasti\", \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"name_uk\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\", \"description_uk\": \"Cornbread / Tradizionale con farina di mais\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 50.0}]}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"name_uk\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\", \"description_uk\": \"Flatbread / Focaccia\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 80.0}]}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\", \"description_uk\": \"Bread / Pane\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 30.0}]}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"name_uk\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\", \"description_uk\": \"Smoked hams / Prosciutto\", \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\", \"description_uk\": \"Beef smoked ham / Prosciutto di manzo\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\", \"description_uk\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"name_uk\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"description\": \"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Air-dried cured meat / Prosciutto di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"name_uk\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\", \"description_uk\": \"Smoked meat / Carne affumicata\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 4500.0}]}, {\"name\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\", \"description_uk\": \"Pork ham / Prosciutto di maiale\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"name_uk\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\", \"description_uk\": \"Cheeses / Formaggi\", \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\", \"description_uk\": \"Cow cheese / Formaggio di mucca\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 2500.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\", \"description_uk\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 6000.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\", \"description_uk\": \"Goat cheese / Formaggio di capra\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"name_uk\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description_uk\": \"Serbian clotted cream / Kajmak\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Sheep's cheese / Formaggio di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\", \"description_uk\": \"Aspic / Aspic\", \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\", \"description_uk\": \"Aspic / Aspic salato\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 350.0}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.698884Z\"}", "module": "service", "function": "process_menu_upload", "line": 150}
{"timestamp": "2025-12-15 13:46:40,703", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"categories_count\": 4, \"total_items\": 14, \"target_city\": \"sofia\", \"event\": \"STEP_2_COMPLETED: Menu data transformation successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.703210Z\"}", "module": "service", "function": "process_menu_upload", "line": 170}
{"timestamp": "2025-12-15 13:46:40,703", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"city\": \"sofia\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"categories_count\": 4, \"total_items\": 14, \"event\": \"STEP_3_START: Calling external createMenu.php API\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.703440Z\"}", "module": "service", "function": "process_menu_upload", "line": 187}
{"timestamp": "2025-12-15 13:46:40,713", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 1, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3725, \"categories_count\": 4, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.713205Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 363}
{"timestamp": "2025-12-15 13:46:40,713", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 1, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description_uk\": \"Starters / Antipasti\", \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"name_uk\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\", \"description_uk\": \"Cornbread / Tradizionale con farina di mais\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 50.0}]}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"name_uk\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\", \"description_uk\": \"Flatbread / Focaccia\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 80.0}]}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\", \"description_uk\": \"Bread / Pane\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 30.0}]}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"name_uk\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\", \"description_uk\": \"Smoked hams / Prosciutto\", \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\", \"description_uk\": \"Beef smoked ham / Prosciutto di manzo\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\", \"description_uk\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"name_uk\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"description\": \"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Air-dried cured meat / Prosciutto di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"name_uk\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\", \"description_uk\": \"Smoked meat / Carne affumicata\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 4500.0}]}, {\"name\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\", \"description_uk\": \"Pork ham / Prosciutto di maiale\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"name_uk\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\", \"description_uk\": \"Cheeses / Formaggi\", \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\", \"description_uk\": \"Cow cheese / Formaggio di mucca\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 2500.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\", \"description_uk\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 6000.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\", \"description_uk\": \"Goat cheese / Formaggio di capra\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"name_uk\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description_uk\": \"Serbian clotted cream / Kajmak\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Sheep's cheese / Formaggio di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\", \"description_uk\": \"Aspic / Aspic\", \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\", \"description_uk\": \"Aspic / Aspic salato\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 350.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.713474Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 375}
{"timestamp": "2025-12-15 13:46:40,715", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"name_uk\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"description\\\": \\\"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\\\", \\\"description_uk\\\": \\\"Starters / Antipasti\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\\\", \\\"description_uk\\\": \\\"Cornbread / Tradizionale con farina di mais\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 50.0}]}, {\\\"name\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"name_uk\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"description\\\": \\\"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\\\", \\\"description_uk\\\": \\\"Flatbread / Focaccia\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 80.0}]}, {\\\"name\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"name_uk\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"description\\\": \\\"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\\\", \\\"description_uk\\\": \\\"Bread / Pane\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 30.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"description\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\\\", \\\"description_uk\\\": \\\"Smoked hams / Prosciutto\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\\\", \\\"description_uk\\\": \\\"Beef smoked ham / Prosciutto di manzo\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\\\", \\\"description_uk\\\": \\\"Njegusi smoked ham / Prosciutto di Njegu\\u0161\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Air-dried cured meat / Prosciutto di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"name_uk\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"description\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\\\", \\\"description_uk\\\": \\\"Smoked meat / Carne affumicata\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 4500.0}]}, {\\\"name\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\\\", \\\"description_uk\\\": \\\"Pork ham / Prosciutto di maiale\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}]}, {\\\"name\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"name_uk\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"description\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\\", \\\"description_uk\\\": \\\"Cheeses / Formaggi\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\\\", \\\"description_uk\\\": \\\"Cow cheese / Formaggio di mucca\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 2500.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 6000.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Goat cheese / Formaggio di capra\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"name_uk\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"description\\\": \\\"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"description_uk\\\": \\\"Serbian clotted cream / Kajmak\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Sheep's cheese / Formaggio di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\\\", \\\"description_uk\\\": \\\"Aspic / Aspic\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\\\", \\\"description_uk\\\": \\\"Aspic / Aspic salato\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 350.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:46:40.715072Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 421}
{"timestamp": "2025-12-15 13:47:10,822", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 1, \"max_retries\": 3, \"error\": \"\", \"error_type\": \"ReadTimeout\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"event\": \"API_REQUEST_NETWORK_ERROR\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:47:10.821966Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 537}
{"timestamp": "2025-12-15 13:47:10,824", "level": "WARNING", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"current_attempt\": 1, \"next_attempt\": 2, \"wait_seconds\": 2, \"event\": \"API_REQUEST_RETRY_SCHEDULED\", \"logger\": \"insert_menu_items.service\", \"level\": \"warning\", \"timestamp\": \"2025-12-15T12:47:10.824173Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 562}
{"timestamp": "2025-12-15 13:47:12,825", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 2, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3725, \"categories_count\": 4, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:47:12.825634Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 363}
{"timestamp": "2025-12-15 13:47:12,826", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 2, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description_uk\": \"Starters / Antipasti\", \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"name_uk\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\", \"description_uk\": \"Cornbread / Tradizionale con farina di mais\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 50.0}]}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"name_uk\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\", \"description_uk\": \"Flatbread / Focaccia\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 80.0}]}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\", \"description_uk\": \"Bread / Pane\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 30.0}]}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"name_uk\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\", \"description_uk\": \"Smoked hams / Prosciutto\", \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\", \"description_uk\": \"Beef smoked ham / Prosciutto di manzo\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\", \"description_uk\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"name_uk\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"description\": \"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Air-dried cured meat / Prosciutto di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"name_uk\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\", \"description_uk\": \"Smoked meat / Carne affumicata\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 4500.0}]}, {\"name\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\", \"description_uk\": \"Pork ham / Prosciutto di maiale\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"name_uk\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\", \"description_uk\": \"Cheeses / Formaggi\", \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\", \"description_uk\": \"Cow cheese / Formaggio di mucca\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 2500.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\", \"description_uk\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 6000.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\", \"description_uk\": \"Goat cheese / Formaggio di capra\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"name_uk\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description_uk\": \"Serbian clotted cream / Kajmak\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Sheep's cheese / Formaggio di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\", \"description_uk\": \"Aspic / Aspic\", \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\", \"description_uk\": \"Aspic / Aspic salato\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 350.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:47:12.826074Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 375}
{"timestamp": "2025-12-15 13:47:12,829", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"name_uk\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"description\\\": \\\"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\\\", \\\"description_uk\\\": \\\"Starters / Antipasti\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\\\", \\\"description_uk\\\": \\\"Cornbread / Tradizionale con farina di mais\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 50.0}]}, {\\\"name\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"name_uk\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"description\\\": \\\"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\\\", \\\"description_uk\\\": \\\"Flatbread / Focaccia\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 80.0}]}, {\\\"name\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"name_uk\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"description\\\": \\\"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\\\", \\\"description_uk\\\": \\\"Bread / Pane\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 30.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"description\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\\\", \\\"description_uk\\\": \\\"Smoked hams / Prosciutto\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\\\", \\\"description_uk\\\": \\\"Beef smoked ham / Prosciutto di manzo\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\\\", \\\"description_uk\\\": \\\"Njegusi smoked ham / Prosciutto di Njegu\\u0161\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Air-dried cured meat / Prosciutto di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"name_uk\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"description\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\\\", \\\"description_uk\\\": \\\"Smoked meat / Carne affumicata\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 4500.0}]}, {\\\"name\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\\\", \\\"description_uk\\\": \\\"Pork ham / Prosciutto di maiale\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}]}, {\\\"name\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"name_uk\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"description\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\\", \\\"description_uk\\\": \\\"Cheeses / Formaggi\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\\\", \\\"description_uk\\\": \\\"Cow cheese / Formaggio di mucca\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 2500.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 6000.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Goat cheese / Formaggio di capra\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"name_uk\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"description\\\": \\\"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"description_uk\\\": \\\"Serbian clotted cream / Kajmak\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Sheep's cheese / Formaggio di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\\\", \\\"description_uk\\\": \\\"Aspic / Aspic\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\\\", \\\"description_uk\\\": \\\"Aspic / Aspic salato\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 350.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:47:12.829222Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 421}
{"timestamp": "2025-12-15 13:47:42,927", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 2, \"max_retries\": 3, \"error\": \"\", \"error_type\": \"ReadTimeout\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"event\": \"API_REQUEST_NETWORK_ERROR\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:47:42.927582Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 537}
{"timestamp": "2025-12-15 13:47:42,928", "level": "WARNING", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"current_attempt\": 2, \"next_attempt\": 3, \"wait_seconds\": 4, \"event\": \"API_REQUEST_RETRY_SCHEDULED\", \"logger\": \"insert_menu_items.service\", \"level\": \"warning\", \"timestamp\": \"2025-12-15T12:47:42.928152Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 562}
{"timestamp": "2025-12-15 13:47:46,929", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 3, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3725, \"categories_count\": 4, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:47:46.929703Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 363}
{"timestamp": "2025-12-15 13:47:46,931", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\", \"description_uk\": \"Starters / Antipasti\", \"items\": [{\"name\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"name_uk\": \"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\", \"description\": \"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\", \"description_uk\": \"Cornbread / Tradizionale con farina di mais\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 50.0}]}, {\"name\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"name_uk\": \"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\", \"description\": \"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\", \"description_uk\": \"Flatbread / Focaccia\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 80.0}]}, {\"name\": \"\\u0425\\u043b\\u0435\\u0431\", \"name_uk\": \"\\u0425\\u043b\\u0435\\u0431\", \"description\": \"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\", \"description_uk\": \"Bread / Pane\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 30.0}]}]}, {\"name\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"name_uk\": \"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\", \"description_uk\": \"Smoked hams / Prosciutto\", \"items\": [{\"name\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\", \"description_uk\": \"Beef smoked ham / Prosciutto di manzo\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\", \"description_uk\": \"Njegusi smoked ham / Prosciutto di Njegu\\u0161\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"name_uk\": \"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\", \"description\": \"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Air-dried cured meat / Prosciutto di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}, {\"name\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"name_uk\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\", \"description\": \"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\", \"description_uk\": \"Smoked meat / Carne affumicata\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 4500.0}]}, {\"name\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"name_uk\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\", \"description\": \"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\", \"description_uk\": \"Pork ham / Prosciutto di maiale\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 8000.0}]}]}, {\"name\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"name_uk\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\", \"description\": \"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\", \"description_uk\": \"Cheeses / Formaggi\", \"items\": [{\"name\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\", \"description_uk\": \"Cow cheese / Formaggio di mucca\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 2500.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\", \"description_uk\": \"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 6000.0}]}, {\"name\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\", \"description_uk\": \"Goat cheese / Formaggio di capra\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"name_uk\": \"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description\": \"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\", \"description_uk\": \"Serbian clotted cream / Kajmak\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}, {\"name\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"name_uk\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\", \"description\": \"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\", \"description_uk\": \"Sheep's cheese / Formaggio di pecora\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3500.0}]}]}, {\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\", \"description_uk\": \"Aspic / Aspic\", \"items\": [{\"name\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"name_uk\": \"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\", \"description\": \"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\", \"description_uk\": \"Aspic / Aspic salato\", \"measure\": 2, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 350.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:47:46.930731Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 375}
{"timestamp": "2025-12-15 13:47:46,934", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"name_uk\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"description\\\": \\\"\\u041f\\u0440\\u0435\\u0434\\u0458\\u0435\\u043b\\u0430\\\", \\\"description_uk\\\": \\\"Starters / Antipasti\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u043e\\u0458\\u0438\\u043d \\u043a\\u043e\\u043b\\u0430\\u0447\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u043c\\u0430\\u0434\\u043d\\u0438 \\u0445\\u043b\\u0435\\u0431 \\u043e\\u0434 \\u043a\\u0443\\u043a\\u0443\\u0440\\u0443\\u0437\\u043d\\u043e\\u0433 \\u0431\\u0440\\u0430\\u0448\\u043d\\u0430\\\", \\\"description_uk\\\": \\\"Cornbread / Tradizionale con farina di mais\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 50.0}]}, {\\\"name\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"name_uk\\\": \\\"\\u041b\\u0435\\u043f\\u0438\\u045a\\u0430\\\", \\\"description\\\": \\\"\\u0424\\u043b\\u0430\\u0442\\u0431\\u0440\\u0435\\u0430\\u0434 / \\u0424\\u043e\\u043a\\u0430\\u0447\\u0430\\\", \\\"description_uk\\\": \\\"Flatbread / Focaccia\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 80.0}]}, {\\\"name\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"name_uk\\\": \\\"\\u0425\\u043b\\u0435\\u0431\\\", \\\"description\\\": \\\"\\u0425\\u043b\\u0435\\u0431 / \\u041f\\u0430\\u043d\\\", \\\"description_uk\\\": \\\"Bread / Pane\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 30.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0440\\u0448\\u0443\\u0442\\u0435\\\", \\\"description\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u0435 \\u0448\\u0443\\u043d\\u043a\\u0435 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e\\\", \\\"description_uk\\\": \\\"Smoked hams / Prosciutto\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u0432\\u0435\\u0452\\u0430 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u043d\\u0437\\u043e\\\", \\\"description_uk\\\": \\\"Beef smoked ham / Prosciutto di manzo\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u040a\\u0435\\u0433\\u0443\\u0448\\u0438 \\u0434\\u0438\\u043c\\u0459\\u0435\\u043d\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u040a\\u0435\\u0433\\u0443\\u0448\\\", \\\"description_uk\\\": \\\"Njegusi smoked ham / Prosciutto di Njegu\\u0161\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u0442\\u0435\\u043b\\u0458\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u0443\\u0448\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Air-dried cured meat / Prosciutto di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}, {\\\"name\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"name_uk\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e\\\", \\\"description\\\": \\\"\\u0414\\u0438\\u043c\\u0459\\u0435\\u043d\\u043e \\u043c\\u0435\\u0441\\u043e / \\u041a\\u0430\\u043c\\u0435 \\u0430\\u0444\\u0444\\u0443\\u043c\\u0438\\u0446\\u0430\\u0442\\u0430\\\", \\\"description_uk\\\": \\\"Smoked meat / Carne affumicata\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 4500.0}]}, {\\\"name\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u043f\\u0440\\u0448\\u0443\\u0442\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u0432\\u0438\\u045a\\u0441\\u043a\\u0430 \\u0448\\u0443\\u043d\\u043a\\u0430 / \\u041f\\u0440\\u0448\\u0443\\u0442\\u043e \\u0434\\u0438 \\u043c\\u0430\\u0458\\u0430\\u043b\\u0435\\\", \\\"description_uk\\\": \\\"Pork ham / Prosciutto di maiale\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 8000.0}]}]}, {\\\"name\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"name_uk\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438\\\", \\\"description\\\": \\\"\\u0421\\u0438\\u0440\\u0435\\u0432\\u0438 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\\", \\\"description_uk\\\": \\\"Cheeses / Formaggi\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041a\\u0440\\u0430\\u0432\\u0459\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043c\\u0443\\u0446\\u0446\\u0430\\\", \\\"description_uk\\\": \\\"Cow cheese / Formaggio di mucca\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 2500.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 \\u0443 \\u043c\\u0430\\u0441\\u043b\\u0438\\u043d\\u043e\\u0432\\u043e\\u043c \\u0443\\u0459\\u0443 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430 \\u043d\\u0435\\u043b'\\u043e\\u043b\\u0438\\u043e \\u0434'\\u043e\\u043b\\u0438\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Goat cheese in olive oil / Formaggio di capra nell'olio d'oliva\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 6000.0}]}, {\\\"name\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041a\\u043e\\u0437\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043a\\u0430\\u043f\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Goat cheese / Formaggio di capra\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"name_uk\\\": \\\"\\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"description\\\": \\\"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 \\u043a\\u0430\\u0458\\u043c\\u0430\\u043a / \\u041a\\u0430\\u0458\\u043c\\u0430\\u043a\\\", \\\"description_uk\\\": \\\"Serbian clotted cream / Kajmak\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}, {\\\"name\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"name_uk\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440\\\", \\\"description\\\": \\\"\\u041e\\u0432\\u0447\\u0438\\u0458\\u0438 \\u0441\\u0438\\u0440 / \\u0424\\u043e\\u0440\\u043c\\u0430\\u0433\\u0433\\u0438\\u043e \\u0434\\u0438 \\u043f\\u0435\\u043a\\u043e\\u0440\\u0430\\\", \\\"description_uk\\\": \\\"Sheep's cheese / Formaggio di pecora\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3500.0}]}]}, {\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a\\\", \\\"description_uk\\\": \\\"Aspic / Aspic\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"name_uk\\\": \\\"\\u041f\\u0438\\u0445\\u0442\\u0438\\u0458\\u0435\\\", \\\"description\\\": \\\"\\u0410\\u0441\\u043f\\u0438\\u043a / \\u0410\\u0441\\u043f\\u0438\\u043a \\u0441\\u0430\\u043b\\u0430\\u0442\\u043e\\\", \\\"description_uk\\\": \\\"Aspic / Aspic salato\\\", \\\"measure\\\": 2, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 350.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:47:46.933885Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 421}
{"timestamp": "2025-12-15 13:48:17,023", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"attempt\": 3, \"max_retries\": 3, \"error\": \"\", \"error_type\": \"ReadTimeout\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"event\": \"API_REQUEST_NETWORK_ERROR\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:48:17.023192Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 537}
{"timestamp": "2025-12-15 13:48:17,025", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"total_attempts\": 3, \"error_type\": \"NetworkError\", \"event\": \"API_REQUEST_FAILED_ALL_RETRIES\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:48:17.025185Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 548}
{"timestamp": "2025-12-15 13:48:17,025", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"error\": \"createMenu.php error: Request failed: \", \"error_type\": \"ExternalServiceException\", \"event\": \"STEP_3_FAILED: External API call error\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:48:17.025849Z\"}", "module": "service", "function": "process_menu_upload", "line": 204}
{"timestamp": "2025-12-15 13:48:17,026", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:48:17.026262Z\"}", "module": "service", "function": "process_menu_upload", "line": 297}
{"timestamp": "2025-12-15 13:48:17,026", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"5307d2ec-8760-4c20-9ff8-be3087fdc03f\", \"city\": \"sofia\", \"filename\": \"1.jpg\", \"error_stage\": \"create_menu_api\", \"error\": \"createMenu.php error: Request failed: \", \"processing_time_seconds\": 143.99, \"status\": \"FAILED\", \"event\": \"MENU_UPLOAD_PROCESSING_FAILED\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:48:17.026506Z\"}", "module": "service", "function": "process_menu_upload", "line": 300}
{"timestamp": "2025-12-15 13:48:17,027", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:48:17.026982Z\"}", "module": "service", "function": "process_menu_upload", "line": 310}
{"timestamp": "2025-12-15 13:53:25,165", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:25.165410Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 13:53:25,172", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:25.171980Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 13:53:31,021", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:31.021212Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 13:53:31,021", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:31.021696Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 13:53:31,021", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:31.021927Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 13:53:31,022", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:31.022025Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 13:53:31,022", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:31.022108Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 13:53:31,022", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:31.022176Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 13:53:31,027", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:53:31.027263Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 13:54:26,460", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"filename\": \"7.jpg\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.459918Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-15 13:54:26,460", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"filename\": \"7.jpg\", \"content_type\": \"image/jpeg\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.460908Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-15 13:54:26,461", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"filename\": \"7.jpg\", \"size_bytes\": 103331, \"size_kb\": 100.91, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.461107Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-15 13:54:26,462", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"curl_command\": \"curl --location 'http://localhost:8000/menu-items/insert' \\\\\\n--header 'Authorization: Bearer <YOUR_AUTH_KEY>' \\\\\\n--form 'file=@\\\"7.jpg\\\"' \\\\\\n--form 'city=\\\"sofia\\\"' \\\\\\n--form 'token=\\\"197b5f7321b52a068923824800958336\\\"' \\\\\\n--form 'source_language=\\\"sr\\\"' \\\\\\n--form 'target_language=\\\"sr\\\"'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"UPLOAD_CURL_COMMAND\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.462185Z\"}", "module": "routes", "function": "insert_menu_items", "line": 147}
{"timestamp": "2025-12-15 13:54:26,462", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.462303Z\"}", "module": "routes", "function": "insert_menu_items", "line": 154}
{"timestamp": "2025-12-15 13:54:26,462", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"city\": \"sofia\", \"filename\": \"7.jpg\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.462425Z\"}", "module": "routes", "function": "insert_menu_items", "line": 174}
{"timestamp": "2025-12-15 13:54:26,462", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"city\": \"sofia\", \"filename\": \"7.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.462956Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-15 13:54:26,463", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"image_size_bytes\": 103331, \"mime_type\": \"image/jpeg\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.463167Z\"}", "module": "service", "function": "process_menu_upload", "line": 75}
{"timestamp": "2025-12-15 13:54:26,463", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.463358Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 13:54:26,463", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.463590Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 13:54:26,493", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:26.493009Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 13:54:57,137", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 13:54:57,145", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 3331, \"output_tokens\": 813, \"total_tokens\": 4144, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.016457, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.145871Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 13:54:57,146", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 2, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.146410Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 13:54:57,147", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 2, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.147196Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 13:54:57,147", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"response_data\": {\"menu\": {\"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"categories\": [{\"name\": \"\\u0412\\u043e\\u0434\\u0435\", \"description\": \"\\u0412\\u043e\\u0434\\u0430\", \"description_uk\": \"Water\", \"items\": [{\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"price\": \"200\", \"serving_size\": \"0,25 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"price\": \"400\", \"serving_size\": \"\\u043b\\u0438\\u0442\\u0430\\u0440\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"price\": \"400\", \"serving_size\": \"\\u043b\\u0438\\u0442\\u0430\\u0440\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"price\": \"120\", \"serving_size\": \"\\u0447\\u0430\\u0448\\u0430 0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"price\": \"200\", \"serving_size\": \"0,33 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"price\": \"200\", \"serving_size\": \"0,25 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"price\": \"200\", \"serving_size\": \"0,33 \\u043b\", \"measure\": 1, \"notes\": null}]}, {\"name\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description_uk\": \"Non-carbonated drinks\", \"items\": [{\"name\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Nestea ice tea peach\", \"price\": \"250\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"description\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\", \"description_uk\": \"Cedevita juice\", \"price\": \"250\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description_uk\": \"Golf apple\", \"price\": \"250\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description_uk\": \"Golf strawberry\", \"price\": \"250\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description_uk\": \"Golf pineapple\", \"price\": \"250\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description_uk\": \"Golf blueberry\", \"price\": \"250\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Golf peach\", \"price\": \"250\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}, {\"name\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description_uk\": \"Lemonade\", \"price\": \"280\", \"serving_size\": \"0,2 \\u043b\", \"measure\": 1, \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.147508Z\"}", "module": "service", "function": "process_menu_upload", "line": 97}
{"timestamp": "2025-12-15 13:54:57,149", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"categories_count\": 2, \"restaurant_name\": \"\\u041a\\u043e\\u0434 \\u041c\\u0438\\u0440\\u0430\", \"model_used\": \"gpt-4o\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.149350Z\"}", "module": "service", "function": "process_menu_upload", "line": 116}
{"timestamp": "2025-12-15 13:54:57,149", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"categories_to_transform\": 2, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.149615Z\"}", "module": "service", "function": "process_menu_upload", "line": 133}
{"timestamp": "2025-12-15 13:54:57,149", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 2, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.149904Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-15 13:54:57,151", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 2, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.151161Z\"}", "module": "adapter", "function": "transform", "line": 48}
{"timestamp": "2025-12-15 13:54:57,151", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0412\\u043e\\u0434\\u0435\", \"name_uk\": \"\\u0412\\u043e\\u0434\\u0435\", \"description\": \"\\u0412\\u043e\\u0434\\u0430\", \"description_uk\": \"Water\", \"items\": [{\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 120.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}]}, {\"name\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"name_uk\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description_uk\": \"Non-carbonated drinks\", \"items\": [{\"name\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Nestea ice tea peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"description\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\", \"description_uk\": \"Cedevita juice\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description_uk\": \"Golf apple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description_uk\": \"Golf strawberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description_uk\": \"Golf pineapple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description_uk\": \"Golf blueberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Golf peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"name_uk\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description_uk\": \"Lemonade\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 280.0}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.151386Z\"}", "module": "service", "function": "process_menu_upload", "line": 150}
{"timestamp": "2025-12-15 13:54:57,155", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"categories_count\": 2, \"total_items\": 15, \"target_city\": \"sofia\", \"event\": \"STEP_2_COMPLETED: Menu data transformation successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.155819Z\"}", "module": "service", "function": "process_menu_upload", "line": 170}
{"timestamp": "2025-12-15 13:54:57,156", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"city\": \"sofia\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"categories_count\": 2, \"total_items\": 15, \"event\": \"STEP_3_START: Calling external createMenu.php API\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.156040Z\"}", "module": "service", "function": "process_menu_upload", "line": 187}
{"timestamp": "2025-12-15 13:54:57,166", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 1, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3349, \"categories_count\": 2, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.166564Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 363}
{"timestamp": "2025-12-15 13:54:57,167", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 1, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0412\\u043e\\u0434\\u0435\", \"name_uk\": \"\\u0412\\u043e\\u0434\\u0435\", \"description\": \"\\u0412\\u043e\\u0434\\u0430\", \"description_uk\": \"Water\", \"items\": [{\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 120.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}]}, {\"name\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"name_uk\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description_uk\": \"Non-carbonated drinks\", \"items\": [{\"name\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Nestea ice tea peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"description\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\", \"description_uk\": \"Cedevita juice\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description_uk\": \"Golf apple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description_uk\": \"Golf strawberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description_uk\": \"Golf pineapple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description_uk\": \"Golf blueberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Golf peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"name_uk\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description_uk\": \"Lemonade\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 280.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.166900Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 375}
{"timestamp": "2025-12-15 13:54:57,168", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u0412\\u043e\\u0434\\u0435\\\", \\\"name_uk\\\": \\\"\\u0412\\u043e\\u0434\\u0435\\\", \\\"description\\\": \\\"\\u0412\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Water\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 400.0}]}, {\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 400.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 120.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}]}, {\\\"name\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"name_uk\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"description\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"description_uk\\\": \\\"Non-carbonated drinks\\\", \\\"items\\\": [{\\\"name\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"name_uk\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Nestea ice tea peach\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\\\", \\\"description_uk\\\": \\\"Cedevita juice\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"description_uk\\\": \\\"Golf apple\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Golf strawberry\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"description_uk\\\": \\\"Golf pineapple\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"description_uk\\\": \\\"Golf blueberry\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Golf peach\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"name_uk\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"description\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Lemonade\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 280.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:54:57.168418Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 421}
{"timestamp": "2025-12-15 13:55:27,260", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 1, \"max_retries\": 3, \"error\": \"\", \"error_type\": \"ReadTimeout\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"event\": \"API_REQUEST_NETWORK_ERROR\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:55:27.259997Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 537}
{"timestamp": "2025-12-15 13:55:27,262", "level": "WARNING", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"current_attempt\": 1, \"next_attempt\": 2, \"wait_seconds\": 2, \"event\": \"API_REQUEST_RETRY_SCHEDULED\", \"logger\": \"insert_menu_items.service\", \"level\": \"warning\", \"timestamp\": \"2025-12-15T12:55:27.262045Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 562}
{"timestamp": "2025-12-15 13:55:29,263", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 2, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3349, \"categories_count\": 2, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:55:29.263491Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 363}
{"timestamp": "2025-12-15 13:55:29,264", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 2, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0412\\u043e\\u0434\\u0435\", \"name_uk\": \"\\u0412\\u043e\\u0434\\u0435\", \"description\": \"\\u0412\\u043e\\u0434\\u0430\", \"description_uk\": \"Water\", \"items\": [{\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 120.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}]}, {\"name\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"name_uk\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description_uk\": \"Non-carbonated drinks\", \"items\": [{\"name\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Nestea ice tea peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"description\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\", \"description_uk\": \"Cedevita juice\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description_uk\": \"Golf apple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description_uk\": \"Golf strawberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description_uk\": \"Golf pineapple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description_uk\": \"Golf blueberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Golf peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"name_uk\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description_uk\": \"Lemonade\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 280.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:55:29.264457Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 375}
{"timestamp": "2025-12-15 13:55:29,268", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u0412\\u043e\\u0434\\u0435\\\", \\\"name_uk\\\": \\\"\\u0412\\u043e\\u0434\\u0435\\\", \\\"description\\\": \\\"\\u0412\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Water\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 400.0}]}, {\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 400.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 120.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}]}, {\\\"name\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"name_uk\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"description\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"description_uk\\\": \\\"Non-carbonated drinks\\\", \\\"items\\\": [{\\\"name\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"name_uk\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Nestea ice tea peach\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\\\", \\\"description_uk\\\": \\\"Cedevita juice\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"description_uk\\\": \\\"Golf apple\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Golf strawberry\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"description_uk\\\": \\\"Golf pineapple\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"description_uk\\\": \\\"Golf blueberry\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Golf peach\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"name_uk\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"description\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Lemonade\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 280.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:55:29.268097Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 421}
{"timestamp": "2025-12-15 13:55:59,354", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 2, \"max_retries\": 3, \"error\": \"\", \"error_type\": \"ReadTimeout\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"event\": \"API_REQUEST_NETWORK_ERROR\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:55:59.354471Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 537}
{"timestamp": "2025-12-15 13:55:59,356", "level": "WARNING", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"current_attempt\": 2, \"next_attempt\": 3, \"wait_seconds\": 4, \"event\": \"API_REQUEST_RETRY_SCHEDULED\", \"logger\": \"insert_menu_items.service\", \"level\": \"warning\", \"timestamp\": \"2025-12-15T12:55:59.355957Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 562}
{"timestamp": "2025-12-15 13:56:03,359", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 3, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 3349, \"categories_count\": 2, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:56:03.359624Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 363}
{"timestamp": "2025-12-15 13:56:03,361", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"\\u0412\\u043e\\u0434\\u0435\", \"name_uk\": \"\\u0412\\u043e\\u0434\\u0435\", \"description\": \"\\u0412\\u043e\\u0434\\u0430\", \"description_uk\": \"Water\", \"items\": [{\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 400.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 120.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Knjaz Milos soda water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}, {\"name\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"name_uk\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\", \"description\": \"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\", \"description_uk\": \"Aqua Viva water\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 200.0}]}]}, {\"name\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"name_uk\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description\": \"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\", \"description_uk\": \"Non-carbonated drinks\", \"items\": [{\"name\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Nestea ice tea peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\", \"description\": \"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\", \"description_uk\": \"Cedevita juice\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\", \"description_uk\": \"Golf apple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\", \"description_uk\": \"Golf strawberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\", \"description_uk\": \"Golf pineapple\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\", \"description_uk\": \"Golf blueberry\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"name_uk\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description\": \"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\", \"description_uk\": \"Golf peach\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 250.0}]}, {\"name\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"name_uk\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description\": \"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\", \"description_uk\": \"Lemonade\", \"measure\": 1, \"items\": [{\"name\": \"\", \"gramaj\": 0, \"cena\": 280.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:56:03.360827Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 375}
{"timestamp": "2025-12-15 13:56:03,364", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"\\u0412\\u043e\\u0434\\u0435\\\", \\\"name_uk\\\": \\\"\\u0412\\u043e\\u0434\\u0435\\\", \\\"description\\\": \\\"\\u0412\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Water\\\", \\\"items\\\": [{\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 400.0}]}, {\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 400.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 120.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u041a\\u045a\\u0430\\u0437 \\u041c\\u0438\\u043b\\u043e\\u0448 \\u0441\\u043e\\u0434\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Knjaz Milos soda water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}, {\\\"name\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"name_uk\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u043d\\u0435 \\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430\\\", \\\"description\\\": \\\"\\u0410\\u043a\\u0432\\u0430 \\u0412\\u0438\\u0432\\u0430 \\u0432\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Aqua Viva water\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 200.0}]}]}, {\\\"name\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"name_uk\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"description\\\": \\\"\\u041d\\u0435\\u0433\\u0430\\u0437\\u0438\\u0440\\u0430\\u043d\\u0430 \\u043f\\u0438\\u045b\\u0430\\\", \\\"description_uk\\\": \\\"Non-carbonated drinks\\\", \\\"items\\\": [{\\\"name\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"name_uk\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description\\\": \\\"Nestea \\u043b\\u0435\\u0434\\u0435\\u043d\\u0438 \\u0447\\u0430\\u0458 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Nestea ice tea peach\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\\\", \\\"name_uk\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430 \\u043a\\u0435\\u0441\\u0438\\u0446\\u0430\\\", \\\"description\\\": \\\"\\u0421\\u043e\\u043a\\u043e\\u0432\\u0438 \\u0426\\u0435\\u0434\\u0435\\u0432\\u0438\\u0442\\u0430\\\", \\\"description_uk\\\": \\\"Cedevita juice\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0431\\u0443\\u043a\\u0430\\\", \\\"description_uk\\\": \\\"Golf apple\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0458\\u0430\\u0433\\u043e\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Golf strawberry\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0430\\u043d\\u0430\\u043d\\u0430\\u0441\\\", \\\"description_uk\\\": \\\"Golf pineapple\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u043e\\u0440\\u043e\\u0432\\u043d\\u0438\\u0446\\u0430\\\", \\\"description_uk\\\": \\\"Golf blueberry\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"name_uk\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description\\\": \\\"\\u0413\\u043e\\u043b\\u0444 \\u0431\\u0440\\u0435\\u0441\\u043a\\u0432\\u0430\\\", \\\"description_uk\\\": \\\"Golf peach\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 250.0}]}, {\\\"name\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"name_uk\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"description\\\": \\\"\\u041b\\u0438\\u043c\\u0443\\u043d\\u0430\\u0434\\u0430\\\", \\\"description_uk\\\": \\\"Lemonade\\\", \\\"measure\\\": 1, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 0, \\\"cena\\\": 280.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T12:56:03.364833Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 421}
{"timestamp": "2025-12-15 13:56:33,461", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"attempt\": 3, \"max_retries\": 3, \"error\": \"\", \"error_type\": \"ReadTimeout\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"event\": \"API_REQUEST_NETWORK_ERROR\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:56:33.461568Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 537}
{"timestamp": "2025-12-15 13:56:33,462", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"total_attempts\": 3, \"error_type\": \"NetworkError\", \"event\": \"API_REQUEST_FAILED_ALL_RETRIES\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:56:33.462829Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 548}
{"timestamp": "2025-12-15 13:56:33,463", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"error\": \"createMenu.php error: Request failed: \", \"error_type\": \"ExternalServiceException\", \"event\": \"STEP_3_FAILED: External API call error\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:56:33.463584Z\"}", "module": "service", "function": "process_menu_upload", "line": 204}
{"timestamp": "2025-12-15 13:56:33,464", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:56:33.464094Z\"}", "module": "service", "function": "process_menu_upload", "line": 297}
{"timestamp": "2025-12-15 13:56:33,464", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"3a5b13cb-3662-46ae-b358-7a084d9f2ca8\", \"city\": \"sofia\", \"filename\": \"7.jpg\", \"error_stage\": \"create_menu_api\", \"error\": \"createMenu.php error: Request failed: \", \"processing_time_seconds\": 127.0, \"status\": \"FAILED\", \"event\": \"MENU_UPLOAD_PROCESSING_FAILED\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:56:33.464385Z\"}", "module": "service", "function": "process_menu_upload", "line": 300}
{"timestamp": "2025-12-15 13:56:33,464", "level": "ERROR", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"error\", \"timestamp\": \"2025-12-15T12:56:33.464681Z\"}", "module": "service", "function": "process_menu_upload", "line": 310}
{"timestamp": "2025-12-15 14:13:25,206", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:25.205688Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 14:13:25,212", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:25.212341Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 14:13:32,809", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:32.809237Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 14:13:32,809", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:32.809717Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 14:13:32,809", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:32.809928Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 14:13:32,810", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:32.810044Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 14:13:32,810", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:32.810130Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 14:13:32,810", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:32.810202Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 14:13:32,815", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:13:32.815284Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-15 14:15:31,195", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"filename\": \"6.jpg\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"insert_menu_items_request\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.195162Z\"}", "module": "routes", "function": "insert_menu_items", "line": 52}
{"timestamp": "2025-12-15 14:15:31,197", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"filename\": \"6.jpg\", \"content_type\": \"image/jpeg\", \"event\": \"VALIDATING_REQUEST\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.197031Z\"}", "module": "routes", "function": "insert_menu_items", "line": 62}
{"timestamp": "2025-12-15 14:15:31,197", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"filename\": \"6.jpg\", \"size_bytes\": 89686, \"size_kb\": 87.58, \"event\": \"FILE_READ_SUCCESS\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.197300Z\"}", "module": "routes", "function": "insert_menu_items", "line": 83}
{"timestamp": "2025-12-15 14:15:31,198", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"curl_command\": \"curl --location 'http://localhost:8000/menu-items/insert' \\\\\\n--header 'Authorization: Bearer <YOUR_AUTH_KEY>' \\\\\\n--form 'file=@\\\"6.jpg\\\"' \\\\\\n--form 'city=\\\"sofia\\\"' \\\\\\n--form 'token=\\\"197b5f7321b52a068923824800958336\\\"' \\\\\\n--form 'source_language=\\\"sr\\\"' \\\\\\n--form 'target_language=\\\"sr\\\"'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"UPLOAD_CURL_COMMAND\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.198651Z\"}", "module": "routes", "function": "insert_menu_items", "line": 147}
{"timestamp": "2025-12-15 14:15:31,198", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"city\": \"sofia\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"SCHEDULING_BACKGROUND_TASK\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.198898Z\"}", "module": "routes", "function": "insert_menu_items", "line": 154}
{"timestamp": "2025-12-15 14:15:31,199", "level": "INFO", "logger": "insert_menu_items.routes", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"city\": \"sofia\", \"filename\": \"6.jpg\", \"background_task_scheduled\": true, \"event\": \"REQUEST_ACCEPTED_202\", \"logger\": \"insert_menu_items.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.199201Z\"}", "module": "routes", "function": "insert_menu_items", "line": 174}
{"timestamp": "2025-12-15 14:15:31,199", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"city\": \"sofia\", \"filename\": \"6.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_upload_processing_started\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.199865Z\"}", "module": "service", "function": "process_menu_upload", "line": 51}
{"timestamp": "2025-12-15 14:15:31,200", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"image_size_bytes\": 89686, \"mime_type\": \"image/jpeg\", \"event\": \"STEP_1_START: Calling menu extraction service\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.200097Z\"}", "module": "service", "function": "process_menu_upload", "line": 75}
{"timestamp": "2025-12-15 14:15:31,200", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.200301Z\"}", "module": "service", "function": "extract_menu", "line": 53}
{"timestamp": "2025-12-15 14:15:31,200", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"batch_size\": 1, \"event\": \"menu_extraction_batch_started\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.200504Z\"}", "module": "service", "function": "_process_batch", "line": 112}
{"timestamp": "2025-12-15 14:15:31,220", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:31.219960Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-15 14:15:54,877", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 14:15:54,883", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"menu_extraction\", \"operation_id\": \"menu_extraction\", \"input_tokens\": 2651, \"output_tokens\": 641, \"total_tokens\": 3292, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.013038, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.883376Z\"}", "module": "openai_client", "function": "json_completion", "line": 94}
{"timestamp": "2025-12-15 14:15:54,883", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"batch_index\": 1, \"total_batches\": 1, \"categories_count\": 1, \"event\": \"menu_extraction_batch_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.883897Z\"}", "module": "service", "function": "_process_batch", "line": 153}
{"timestamp": "2025-12-15 14:15:54,884", "level": "INFO", "logger": "menu_extraction.service", "message": "{\"image_count\": 1, \"batches_count\": 1, \"categories_count\": 1, \"source_language\": \"sr\", \"target_language\": \"sr\", \"event\": \"menu_extraction_completed\", \"logger\": \"menu_extraction.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.884723Z\"}", "module": "service", "function": "extract_menu", "line": 85}
{"timestamp": "2025-12-15 14:15:54,885", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"response_data\": {\"menu\": {\"restaurant_name\": null, \"categories\": [{\"name\": \"Hladna Predjela\", \"description\": \"Hladna predjela\", \"description_uk\": \"Cold appetizers\", \"items\": [{\"name\": \"Zakuska 'Tri \\u0160e\\u0161ira'\", \"description\": \"Gove\\u0111a pr\\u0161uta | Zlatar sir | Kajmak | Prebranac | Proja | Urnebes | Doma\\u0107a june\\u0107a pa\\u0161teta | Sud\\u017euk\", \"description_uk\": \"Beef prosciutto | Zlatar cheese | Kaymak | Serbian baked beans | Cornbread | Urnebes salad | Homemade beef pate | Beef sausage\", \"price\": \"1080\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Zakuska od 'Mangulice'\", \"description\": \"Pr\\u0161uta | Suva slanina | Suva kobasica | \\u010cvarci | Suvi kare od mangulice\", \"description_uk\": \"Prosciutto | Bacon | Sausage | Cracklings | Pork chop\", \"price\": \"1480\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Tatar Biftek\", \"description\": \"Puter i tost\", \"description_uk\": \"Butter & toast\", \"price\": \"3100\", \"serving_size\": null, \"measure\": null, \"notes\": \"For two\"}, {\"name\": \"Beli Mrs\", \"description\": \"Mladi sir | Zlatarski sir | Kozji sir | Pirotski ka\\u010dkavalj i kajmak\", \"description_uk\": \"Fresh cottage cheese | Zlatar cheese | Goat cheese | Pirot cheese and kaymak\", \"price\": \"980\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Srbija 100%\", \"description\": \"Pirotska peglana kobasica | Doma\\u0107i kajmak | Ajvar | Kozji sir | Mesnati duvan \\u010dvarci | Pirotski ka\\u010dkavalj | Proja\", \"description_uk\": \"Pirot flat sausage | Homemade kaymak | Ajvar | Goat cheese | Meaty tobacco cracklings | Pirot cheese | Cornbread\", \"price\": \"1220\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Gurmanske Pihtije\", \"description\": \"Doma\\u0107e pihtije od tri vrste mesa\", \"description_uk\": \"Homemade aspic three types of meat\", \"price\": \"620\", \"serving_size\": null, \"measure\": null, \"notes\": null}, {\"name\": \"Meze za Dve Osobe\", \"description\": \"Gove\\u0111a pr\\u0161uta | Zlatiborska pr\\u0161uta | Kulen | Kajmak | Zlatarski sir | Mladi sir | Pohovana punjena paprika | Punjena meksi\\u010dka paprika sirom | Punjena paprika pr\\u0161utom\", \"description_uk\": \"Beef prosciutto | Zlatibor prosciutto | Kulen | Kaymak | Zlatar cheese | Fresh cottage cheese | Breaded pepper stuffed with cheese | Fried dough stuffed with cheese | Peppers and prosciutto\", \"price\": \"2490\", \"serving_size\": null, \"measure\": null, \"notes\": null}]}]}, \"source_language\": \"sr\", \"target_language\": \"sr\", \"model\": \"gpt-4o\", \"image_count\": 1}, \"event\": \"MENU_EXTRACTION_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.885397Z\"}", "module": "service", "function": "process_menu_upload", "line": 97}
{"timestamp": "2025-12-15 14:15:54,886", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"categories_count\": 1, \"restaurant_name\": null, \"model_used\": \"gpt-4o\", \"event\": \"STEP_1_COMPLETED: Menu extraction successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.886503Z\"}", "module": "service", "function": "process_menu_upload", "line": 116}
{"timestamp": "2025-12-15 14:15:54,886", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"categories_to_transform\": 1, \"event\": \"STEP_2_START: Transforming menu data using adapter\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.886749Z\"}", "module": "service", "function": "process_menu_upload", "line": 133}
{"timestamp": "2025-12-15 14:15:54,887", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 1, \"city\": \"sofia\", \"event\": \"adapter_transform_started\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.887090Z\"}", "module": "adapter", "function": "transform", "line": 30}
{"timestamp": "2025-12-15 14:15:54,887", "level": "INFO", "logger": "insert_menu_items.adapter", "message": "{\"categories_count\": 1, \"city\": \"sofia\", \"event\": \"adapter_transform_completed\", \"logger\": \"insert_menu_items.adapter\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.887634Z\"}", "module": "adapter", "function": "transform", "line": 48}
{"timestamp": "2025-12-15 14:15:54,888", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"Hladna Predjela\", \"name_uk\": \"Hladna Predjela\", \"description\": \"Hladna predjela\", \"description_uk\": \"Cold appetizers\", \"items\": [{\"name\": \"Zakuska 'Tri \\u0160e\\u0161ira'\", \"name_uk\": \"Zakuska 'Tri \\u0160e\\u0161ira'\", \"description\": \"Gove\\u0111a pr\\u0161uta | Zlatar sir | Kajmak | Prebranac | Proja | Urnebes | Doma\\u0107a june\\u0107a pa\\u0161teta | Sud\\u017euk\", \"description_uk\": \"Beef prosciutto | Zlatar cheese | Kaymak | Serbian baked beans | Cornbread | Urnebes salad | Homemade beef pate | Beef sausage\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 1080.0}]}, {\"name\": \"Zakuska od 'Mangulice'\", \"name_uk\": \"Zakuska od 'Mangulice'\", \"description\": \"Pr\\u0161uta | Suva slanina | Suva kobasica | \\u010cvarci | Suvi kare od mangulice\", \"description_uk\": \"Prosciutto | Bacon | Sausage | Cracklings | Pork chop\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 1480.0}]}, {\"name\": \"Tatar Biftek\", \"name_uk\": \"Tatar Biftek\", \"description\": \"Puter i tost\", \"description_uk\": \"Butter & toast\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3100.0}]}, {\"name\": \"Beli Mrs\", \"name_uk\": \"Beli Mrs\", \"description\": \"Mladi sir | Zlatarski sir | Kozji sir | Pirotski ka\\u010dkavalj i kajmak\", \"description_uk\": \"Fresh cottage cheese | Zlatar cheese | Goat cheese | Pirot cheese and kaymak\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 980.0}]}, {\"name\": \"Srbija 100%\", \"name_uk\": \"Srbija 100%\", \"description\": \"Pirotska peglana kobasica | Doma\\u0107i kajmak | Ajvar | Kozji sir | Mesnati duvan \\u010dvarci | Pirotski ka\\u010dkavalj | Proja\", \"description_uk\": \"Pirot flat sausage | Homemade kaymak | Ajvar | Goat cheese | Meaty tobacco cracklings | Pirot cheese | Cornbread\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 1220.0}]}, {\"name\": \"Gurmanske Pihtije\", \"name_uk\": \"Gurmanske Pihtije\", \"description\": \"Doma\\u0107e pihtije od tri vrste mesa\", \"description_uk\": \"Homemade aspic three types of meat\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 620.0}]}, {\"name\": \"Meze za Dve Osobe\", \"name_uk\": \"Meze za Dve Osobe\", \"description\": \"Gove\\u0111a pr\\u0161uta | Zlatiborska pr\\u0161uta | Kulen | Kajmak | Zlatarski sir | Mladi sir | Pohovana punjena paprika | Punjena meksi\\u010dka paprika sirom | Punjena paprika pr\\u0161utom\", \"description_uk\": \"Beef prosciutto | Zlatibor prosciutto | Kulen | Kaymak | Zlatar cheese | Fresh cottage cheese | Breaded pepper stuffed with cheese | Fried dough stuffed with cheese | Peppers and prosciutto\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 2490.0}]}]}]}, \"event\": \"TRANSFORMED_PAYLOAD_FOR_CREATE_MENU\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.888000Z\"}", "module": "service", "function": "process_menu_upload", "line": 150}
{"timestamp": "2025-12-15 14:15:54,891", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"categories_count\": 1, \"total_items\": 7, \"target_city\": \"sofia\", \"event\": \"STEP_2_COMPLETED: Menu data transformation successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.891567Z\"}", "module": "service", "function": "process_menu_upload", "line": 170}
{"timestamp": "2025-12-15 14:15:54,892", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"city\": \"sofia\", \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"categories_count\": 1, \"total_items\": 7, \"event\": \"STEP_3_START: Calling external createMenu.php API\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.892174Z\"}", "module": "service", "function": "process_menu_upload", "line": 187}
{"timestamp": "2025-12-15 14:15:54,902", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"attempt\": 1, \"max_retries\": 3, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"payload_size\": 2567, \"categories_count\": 1, \"city\": \"sofia\", \"event\": \"API_REQUEST_ATTEMPT\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.902472Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 363}
{"timestamp": "2025-12-15 14:15:54,902", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"attempt\": 1, \"url\": \"https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php\", \"full_payload\": {\"city\": \"sofia\", \"token\": \"197b5f7321b52a068923824800958336\", \"menu\": [{\"name\": \"Hladna Predjela\", \"name_uk\": \"Hladna Predjela\", \"description\": \"Hladna predjela\", \"description_uk\": \"Cold appetizers\", \"items\": [{\"name\": \"Zakuska 'Tri \\u0160e\\u0161ira'\", \"name_uk\": \"Zakuska 'Tri \\u0160e\\u0161ira'\", \"description\": \"Gove\\u0111a pr\\u0161uta | Zlatar sir | Kajmak | Prebranac | Proja | Urnebes | Doma\\u0107a june\\u0107a pa\\u0161teta | Sud\\u017euk\", \"description_uk\": \"Beef prosciutto | Zlatar cheese | Kaymak | Serbian baked beans | Cornbread | Urnebes salad | Homemade beef pate | Beef sausage\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 1080.0}]}, {\"name\": \"Zakuska od 'Mangulice'\", \"name_uk\": \"Zakuska od 'Mangulice'\", \"description\": \"Pr\\u0161uta | Suva slanina | Suva kobasica | \\u010cvarci | Suvi kare od mangulice\", \"description_uk\": \"Prosciutto | Bacon | Sausage | Cracklings | Pork chop\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 1480.0}]}, {\"name\": \"Tatar Biftek\", \"name_uk\": \"Tatar Biftek\", \"description\": \"Puter i tost\", \"description_uk\": \"Butter & toast\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 3100.0}]}, {\"name\": \"Beli Mrs\", \"name_uk\": \"Beli Mrs\", \"description\": \"Mladi sir | Zlatarski sir | Kozji sir | Pirotski ka\\u010dkavalj i kajmak\", \"description_uk\": \"Fresh cottage cheese | Zlatar cheese | Goat cheese | Pirot cheese and kaymak\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 980.0}]}, {\"name\": \"Srbija 100%\", \"name_uk\": \"Srbija 100%\", \"description\": \"Pirotska peglana kobasica | Doma\\u0107i kajmak | Ajvar | Kozji sir | Mesnati duvan \\u010dvarci | Pirotski ka\\u010dkavalj | Proja\", \"description_uk\": \"Pirot flat sausage | Homemade kaymak | Ajvar | Goat cheese | Meaty tobacco cracklings | Pirot cheese | Cornbread\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 1220.0}]}, {\"name\": \"Gurmanske Pihtije\", \"name_uk\": \"Gurmanske Pihtije\", \"description\": \"Doma\\u0107e pihtije od tri vrste mesa\", \"description_uk\": \"Homemade aspic three types of meat\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 620.0}]}, {\"name\": \"Meze za Dve Osobe\", \"name_uk\": \"Meze za Dve Osobe\", \"description\": \"Gove\\u0111a pr\\u0161uta | Zlatiborska pr\\u0161uta | Kulen | Kajmak | Zlatarski sir | Mladi sir | Pohovana punjena paprika | Punjena meksi\\u010dka paprika sirom | Punjena paprika pr\\u0161utom\", \"description_uk\": \"Beef prosciutto | Zlatibor prosciutto | Kulen | Kaymak | Zlatar cheese | Fresh cottage cheese | Breaded pepper stuffed with cheese | Fried dough stuffed with cheese | Peppers and prosciutto\", \"measure\": 0, \"items\": [{\"name\": \"\", \"gramaj\": 100, \"cena\": 2490.0}]}]}]}, \"event\": \"CREATE_MENU_REQUEST_PAYLOAD\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.902813Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 375}
{"timestamp": "2025-12-15 14:15:54,904", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"curl_command\": \"curl --location 'https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php' \\\\\\n--header 'Content-Type: application/json' \\\\\\n--data '{\\\"city\\\": \\\"sofia\\\", \\\"token\\\": \\\"197b5f7321b52a068923824800958336\\\", \\\"menu\\\": [{\\\"name\\\": \\\"Hladna Predjela\\\", \\\"name_uk\\\": \\\"Hladna Predjela\\\", \\\"description\\\": \\\"Hladna predjela\\\", \\\"description_uk\\\": \\\"Cold appetizers\\\", \\\"items\\\": [{\\\"name\\\": \\\"Zakuska 'Tri \\u0160e\\u0161ira'\\\", \\\"name_uk\\\": \\\"Zakuska 'Tri \\u0160e\\u0161ira'\\\", \\\"description\\\": \\\"Gove\\u0111a pr\\u0161uta | Zlatar sir | Kajmak | Prebranac | Proja | Urnebes | Doma\\u0107a june\\u0107a pa\\u0161teta | Sud\\u017euk\\\", \\\"description_uk\\\": \\\"Beef prosciutto | Zlatar cheese | Kaymak | Serbian baked beans | Cornbread | Urnebes salad | Homemade beef pate | Beef sausage\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 1080.0}]}, {\\\"name\\\": \\\"Zakuska od 'Mangulice'\\\", \\\"name_uk\\\": \\\"Zakuska od 'Mangulice'\\\", \\\"description\\\": \\\"Pr\\u0161uta | Suva slanina | Suva kobasica | \\u010cvarci | Suvi kare od mangulice\\\", \\\"description_uk\\\": \\\"Prosciutto | Bacon | Sausage | Cracklings | Pork chop\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 1480.0}]}, {\\\"name\\\": \\\"Tatar Biftek\\\", \\\"name_uk\\\": \\\"Tatar Biftek\\\", \\\"description\\\": \\\"Puter i tost\\\", \\\"description_uk\\\": \\\"Butter & toast\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 3100.0}]}, {\\\"name\\\": \\\"Beli Mrs\\\", \\\"name_uk\\\": \\\"Beli Mrs\\\", \\\"description\\\": \\\"Mladi sir | Zlatarski sir | Kozji sir | Pirotski ka\\u010dkavalj i kajmak\\\", \\\"description_uk\\\": \\\"Fresh cottage cheese | Zlatar cheese | Goat cheese | Pirot cheese and kaymak\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 980.0}]}, {\\\"name\\\": \\\"Srbija 100%\\\", \\\"name_uk\\\": \\\"Srbija 100%\\\", \\\"description\\\": \\\"Pirotska peglana kobasica | Doma\\u0107i kajmak | Ajvar | Kozji sir | Mesnati duvan \\u010dvarci | Pirotski ka\\u010dkavalj | Proja\\\", \\\"description_uk\\\": \\\"Pirot flat sausage | Homemade kaymak | Ajvar | Goat cheese | Meaty tobacco cracklings | Pirot cheese | Cornbread\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 1220.0}]}, {\\\"name\\\": \\\"Gurmanske Pihtije\\\", \\\"name_uk\\\": \\\"Gurmanske Pihtije\\\", \\\"description\\\": \\\"Doma\\u0107e pihtije od tri vrste mesa\\\", \\\"description_uk\\\": \\\"Homemade aspic three types of meat\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 620.0}]}, {\\\"name\\\": \\\"Meze za Dve Osobe\\\", \\\"name_uk\\\": \\\"Meze za Dve Osobe\\\", \\\"description\\\": \\\"Gove\\u0111a pr\\u0161uta | Zlatiborska pr\\u0161uta | Kulen | Kajmak | Zlatarski sir | Mladi sir | Pohovana punjena paprika | Punjena meksi\\u010dka paprika sirom | Punjena paprika pr\\u0161utom\\\", \\\"description_uk\\\": \\\"Beef prosciutto | Zlatibor prosciutto | Kulen | Kaymak | Zlatar cheese | Fresh cottage cheese | Breaded pepper stuffed with cheese | Fried dough stuffed with cheese | Peppers and prosciutto\\\", \\\"measure\\\": 0, \\\"items\\\": [{\\\"name\\\": \\\"\\\", \\\"gramaj\\\": 100, \\\"cena\\\": 2490.0}]}]}]}'\", \"curl_log_file\": \"logs/curl_commands.log\", \"event\": \"CREATE_MENU_CURL_COMMAND\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:15:54.904125Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 421}
{"timestamp": "2025-12-15 14:16:51,653", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://zavedenia.com/apps/orderapprestaurant/api/createMenu.php \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-15 14:16:51,657", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"attempt\": 1, \"status_code\": 200, \"full_response\": \"{\\\"success\\\":true}\", \"event\": \"CREATE_MENU_RESPONSE\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:16:51.657475Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 439}
{"timestamp": "2025-12-15 14:16:51,658", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"response_data\": {\"success\": true}, \"event\": \"CREATE_MENU_RESPONSE_PARSED\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:16:51.658204Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 462}
{"timestamp": "2025-12-15 14:16:51,658", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"attempt\": 1, \"status_code\": 200, \"response_length\": 16, \"event\": \"API_REQUEST_SUCCESS\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:16:51.658707Z\"}", "module": "service", "function": "_call_create_menu_api", "line": 479}
{"timestamp": "2025-12-15 14:16:51,659", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"city\": \"sofia\", \"event\": \"STEP_3_COMPLETED: External API call successful\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:16:51.659745Z\"}", "module": "service", "function": "process_menu_upload", "line": 198}
{"timestamp": "2025-12-15 14:16:51,660", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:16:51.660261Z\"}", "module": "service", "function": "process_menu_upload", "line": 228}
{"timestamp": "2025-12-15 14:16:51,660", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"request_id\": \"44110d84-0e40-4302-930e-1379cb56139d\", \"city\": \"sofia\", \"filename\": \"6.jpg\", \"source_language\": \"sr\", \"target_language\": \"sr\", \"categories_count\": 1, \"total_items\": 7, \"processing_time_seconds\": 80.46, \"status\": \"SUCCESS\", \"event\": \"MENU_UPLOAD_PROCESSING_COMPLETED_SUCCESSFULLY\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:16:51.660540Z\"}", "module": "service", "function": "process_menu_upload", "line": 231}
{"timestamp": "2025-12-15 14:16:51,661", "level": "INFO", "logger": "insert_menu_items.service", "message": "{\"event\": \"========================================\", \"logger\": \"insert_menu_items.service\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:16:51.661146Z\"}", "module": "service", "function": "process_menu_upload", "line": 243}
{"timestamp": "2025-12-15 14:26:34,248", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:26:34.247984Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 14:26:34,254", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T13:26:34.254418Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 15:17:42,413", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:42.412436Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-15 15:17:42,414", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:42.413984Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-15 15:17:43,034", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:43.033857Z\"}", "module": "main", "function": "<module>", "line": 42}
{"timestamp": "2025-12-15 15:17:43,034", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:43.034256Z\"}", "module": "main", "function": "<module>", "line": 57}
{"timestamp": "2025-12-15 15:17:43,035", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:43.035130Z\"}", "module": "main", "function": "<module>", "line": 68}
{"timestamp": "2025-12-15 15:17:43,035", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:43.035257Z\"}", "module": "main", "function": "<module>", "line": 74}
{"timestamp": "2025-12-15 15:17:43,035", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:43.035359Z\"}", "module": "main", "function": "<module>", "line": 80}
{"timestamp": "2025-12-15 15:17:43,035", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:43.035429Z\"}", "module": "main", "function": "<module>", "line": 89}
{"timestamp": "2025-12-15 15:17:43,041", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-15T14:17:43.041255Z\"}", "module": "main", "function": "startup_event", "line": 116}
{"timestamp": "2025-12-19 13:38:25,937", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T12:38:25.934160Z\"}", "module": "main", "function": "shutdown_event", "line": 128}
{"timestamp": "2025-12-19 13:38:25,944", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T12:38:25.944484Z\"}", "module": "main", "function": "shutdown_event", "line": 131}
{"timestamp": "2025-12-19 14:00:48,972", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.971851Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2025-12-19 14:00:48,972", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.972646Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2025-12-19 14:00:48,973", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.973356Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2025-12-19 14:00:48,973", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.973454Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2025-12-19 14:00:48,973", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.973537Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2025-12-19 14:00:48,973", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.973620Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2025-12-19 14:00:48,973", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.973687Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2025-12-19 14:00:48,979", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:48.979273Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2025-12-19 14:00:53,803", "level": "INFO", "logger": "beer_pairing.routes", "message": "{\"language\": \"en\", \"foods\": 2, \"beer_candidates\": 30, \"model\": null, \"user_prompt_provided\": true, \"event\": \"beer_matcher_request\", \"logger\": \"beer_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:53.803164Z\"}", "module": "routes", "function": "match_beers", "line": 36}
{"timestamp": "2025-12-19 14:00:53,803", "level": "INFO", "logger": "beer_pairing.service", "message": "{\"language\": \"en\", \"foods\": 2, \"beer_candidates\": 30, \"model\": \"gpt-4o\", \"user_prompt_provided\": true, \"event\": \"beer_pairing_started\", \"logger\": \"beer_pairing.service\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:53.803767Z\"}", "module": "service", "function": "match_beers", "line": 87}
{"timestamp": "2025-12-19 14:00:53,820", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"beer_pairing\", \"operation_id\": \"beer_pairing\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:00:53.820887Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-19 14:01:23,197", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-19 14:01:23,206", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"beer_pairing\", \"operation_id\": \"beer_pairing\", \"input_tokens\": 1021, \"output_tokens\": 486, \"total_tokens\": 1507, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.007412, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:23.206610Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2025-12-19 14:01:23,207", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_match\", \"duration\": 29.40318489074707, \"input_tokens\": 1021, \"output_tokens\": 486, \"total_tokens\": 1507, \"cost\": 0.007412, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 2, \"rate\": 0.0680198423208699, \"timestamp\": \"2025-12-19T13:01:23.206982Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2025-12-19 14:01:23,207", "level": "INFO", "logger": "beer_pairing.service", "message": "{\"language\": \"en\", \"foods\": 2, \"model\": \"gpt-4o-2024-08-06\", \"event\": \"beer_pairing_completed\", \"logger\": \"beer_pairing.service\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:23.207208Z\"}", "module": "service", "function": "match_beers", "line": 184}
{"timestamp": "2025-12-19 14:01:23,207", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:23.207382Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-19 14:01:24,968", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-19 14:01:24,971", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 95, \"output_tokens\": 7, \"total_tokens\": 102, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000308, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:24.971410Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2025-12-19 14:01:24,971", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 1.7644810676574707, \"input_tokens\": 95, \"output_tokens\": 7, \"total_tokens\": 102, \"cost\": 0.000308, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.566738866361203, \"timestamp\": \"2025-12-19T13:01:24.971891Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2025-12-19 14:01:24,972", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:24.972151Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-19 14:01:26,732", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-19 14:01:26,736", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000302, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:26.736808Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2025-12-19 14:01:26,737", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 1.7652029991149902, \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"cost\": 0.000302, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.5665070819058002, \"timestamp\": \"2025-12-19T13:01:26.737367Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2025-12-19 14:01:26,738", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:26.738020Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-19 14:01:28,346", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-19 14:01:28,348", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 94, \"output_tokens\": 7, \"total_tokens\": 101, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000305, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:28.348270Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2025-12-19 14:01:28,348", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 1.6105940341949463, \"input_tokens\": 94, \"output_tokens\": 7, \"total_tokens\": 101, \"cost\": 0.000305, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.6208889259296486, \"timestamp\": \"2025-12-19T13:01:28.348607Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2025-12-19 14:01:28,348", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:28.348852Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-19 14:01:30,452", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-19 14:01:30,456", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 94, \"output_tokens\": 7, \"total_tokens\": 101, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000305, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:30.456862Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2025-12-19 14:01:30,457", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 2.108489990234375, \"input_tokens\": 94, \"output_tokens\": 7, \"total_tokens\": 101, \"cost\": 0.000305, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.4742730601670261, \"timestamp\": \"2025-12-19T13:01:30.457356Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2025-12-19 14:01:30,457", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:30.457642Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2025-12-19 14:01:31,059", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2025-12-19 14:01:31,062", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000302, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:31.062364Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2025-12-19 14:01:31,062", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 0.6051177978515625, \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"cost\": 0.000302, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.652570794563381, \"timestamp\": \"2025-12-19T13:01:31.062765Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2025-12-19 14:01:31,063", "level": "INFO", "logger": "beer_pairing.routes", "message": "{\"language\": \"en\", \"foods\": 2, \"user_prompt_provided\": true, \"event\": \"beer_matcher_response\", \"logger\": \"beer_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:01:31.063168Z\"}", "module": "routes", "function": "match_beers", "line": 53}
{"timestamp": "2025-12-19 14:02:45,355", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:02:45.355176Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2025-12-19 14:02:45,358", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2025-12-19T13:02:45.357945Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-01-23 10:17:42,598", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.597977Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-01-23 10:17:42,598", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.598367Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-01-23 10:17:42,599", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.599082Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-01-23 10:17:42,599", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.599198Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-01-23 10:17:42,599", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.599285Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-01-23 10:17:42,599", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.599372Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-01-23 10:17:42,599", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.599439Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-01-23 10:17:42,605", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:42.605316Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-01-23 10:17:49,142", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": false, \"english_included\": false, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:49.142308Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-01-23 10:17:49,142", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": false, \"english_included\": false, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:49.142826Z\"}", "module": "service", "function": "translate_batch", "line": 438}
{"timestamp": "2026-01-23 10:17:49,160", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:49.160288Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:17:49,166", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:49.166505Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:17:49,168", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:49.168227Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:17:50,616", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:17:50,624", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 292, \"output_tokens\": 22, \"total_tokens\": 314, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.00095, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:17:50.624165Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:18:05,486", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:18:05,489", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"input_tokens\": 271, \"output_tokens\": 809, \"total_tokens\": 1080, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.008767, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:05.489409Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:18:09,485", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /chat/completions in 0.758481 seconds", "module": "_base_client", "function": "_retry_request", "line": 1638}
{"timestamp": "2026-01-23 10:18:30,249", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /chat/completions in 1.720882 seconds", "module": "_base_client", "function": "_retry_request", "line": 1638}
{"timestamp": "2026-01-23 10:18:40,642", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": false, \"english_included\": false, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:40.642755Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-01-23 10:18:40,643", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": false, \"english_included\": false, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:40.643173Z\"}", "module": "service", "function": "translate_batch", "line": 438}
{"timestamp": "2026-01-23 10:18:40,643", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:40.643573Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:18:40,650", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:40.650489Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:18:40,653", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:40.653908Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:18:41,886", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:18:41,897", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 236, \"output_tokens\": 10, \"total_tokens\": 246, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.00069, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:41.897644Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:18:46,175", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:18:46,187", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"input_tokens\": 271, \"output_tokens\": 780, \"total_tokens\": 1051, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.008477, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:46.187189Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:18:46,188", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 57.04522490501404, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.01752995104612348, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-01-23T09:18:46.188045Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-01-23 10:18:46,188", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:46.188281Z\"}", "module": "service", "function": "translate_batch", "line": 476}
{"timestamp": "2026-01-23 10:18:46,188", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:46.188622Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-01-23 10:18:46,559", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:18:46,561", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"input_tokens\": 215, \"output_tokens\": 304, \"total_tokens\": 519, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.003577, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:46.561770Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:18:47,372", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:18:47,381", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"input_tokens\": 215, \"output_tokens\": 303, \"total_tokens\": 518, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.003567, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:47.381393Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:18:47,382", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 6.739003896713257, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.14838988303415576, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-01-23T09:18:47.382204Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-01-23 10:18:47,382", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:47.382464Z\"}", "module": "service", "function": "translate_batch", "line": 476}
{"timestamp": "2026-01-23 10:18:47,382", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:18:47.382722Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-01-23 10:23:09,519", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:09.519015Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-01-23 10:23:09,521", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:09.521163Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-01-23 10:23:10,223", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.223495Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-01-23 10:23:10,223", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.223938Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-01-23 10:23:10,224", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.224359Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-01-23 10:23:10,224", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.224475Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-01-23 10:23:10,224", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.224620Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-01-23 10:23:10,224", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.224712Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-01-23 10:23:10,224", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.224779Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-01-23 10:23:10,230", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:10.230504Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-01-23 10:23:59,918", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:59.918936Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-01-23 10:23:59,919", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:23:59.919374Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-01-23 10:24:00,555", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.554762Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-01-23 10:24:00,555", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.555171Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-01-23 10:24:00,555", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.555472Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-01-23 10:24:00,555", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.555629Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-01-23 10:24:00,555", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.555735Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-01-23 10:24:00,555", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.555882Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-01-23 10:24:00,556", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.556149Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-01-23 10:24:00,561", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:00.561829Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-01-23 10:24:13,594", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:13.593995Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-01-23 10:24:13,595", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:13.595095Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-01-23 10:24:14,173", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.173549Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-01-23 10:24:14,174", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.174018Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-01-23 10:24:14,174", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.174251Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-01-23 10:24:14,174", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.174357Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-01-23 10:24:14,174", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.174435Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-01-23 10:24:14,174", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.174516Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-01-23 10:24:14,174", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.174584Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-01-23 10:24:14,181", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:14.181113Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-01-23 10:24:28,229", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.229346Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-01-23 10:24:28,229", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.229918Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-01-23 10:24:28,820", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.820072Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-01-23 10:24:28,820", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.820503Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-01-23 10:24:28,820", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.820716Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-01-23 10:24:28,820", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.820816Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-01-23 10:24:28,820", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.820900Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-01-23 10:24:28,820", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.820981Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-01-23 10:24:28,821", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.821048Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-01-23 10:24:28,827", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:24:28.827082Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-01-23 10:25:50,800", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:50.799995Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-01-23 10:25:50,801", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:50.801779Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-01-23 10:25:51,454", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.454542Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-01-23 10:25:51,454", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.454951Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-01-23 10:25:51,455", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.455166Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-01-23 10:25:51,455", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.455263Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-01-23 10:25:51,455", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.455349Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-01-23 10:25:51,455", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.455434Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-01-23 10:25:51,455", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.455501Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-01-23 10:25:51,461", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:25:51.461661Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-01-23 10:27:58,551", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": false, \"english_included\": false, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:27:58.551736Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-01-23 10:27:58,552", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": false, \"english_included\": false, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:27:58.552470Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-01-23 10:27:58,565", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:27:58.565696Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:27:58,575", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:27:58.575099Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:27:58,581", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:27:58.581192Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:27:59,412", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:27:59,417", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 236, \"output_tokens\": 10, \"total_tokens\": 246, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.00069, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:27:59.417164Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:28:03,613", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:28:03,616", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"input_tokens\": 146, \"output_tokens\": 273, \"total_tokens\": 419, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.003095, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:03.616043Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:28:04,726", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:28:04,727", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"input_tokens\": 146, \"output_tokens\": 292, \"total_tokens\": 438, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.003285, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:04.727773Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:28:04,729", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 6.176883935928345, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.16189392748395662, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-01-23T09:28:04.729358Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-01-23 10:28:04,729", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:04.729542Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-01-23 10:28:04,729", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:04.729675Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-01-23 10:28:24,842", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": false, \"english_included\": true, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:24.842273Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-01-23 10:28:24,843", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": false, \"english_included\": true, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:24.843357Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-01-23 10:28:24,843", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:24.843778Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:28:24,850", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:24.849984Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:28:24,852", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:24.852225Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:28:24,854", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"english_translation_batch_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:24.854495Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:28:25,723", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:28:25,725", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 236, \"output_tokens\": 10, \"total_tokens\": 246, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.00069, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:25.725531Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:28:26,127", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:28:26,130", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"english_translation_batch_360654\", \"input_tokens\": 79, \"output_tokens\": 26, \"total_tokens\": 105, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.000457, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:26.130066Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:28:30,645", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:28:30,652", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"input_tokens\": 146, \"output_tokens\": 273, \"total_tokens\": 419, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.003095, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:30.652476Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:28:31,162", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:28:31,165", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"input_tokens\": 146, \"output_tokens\": 292, \"total_tokens\": 438, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.003285, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:31.165325Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:28:31,166", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 6.322709083557129, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.15816005240548, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-01-23T09:28:31.166092Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-01-23 10:28:31,166", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:31.166420Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-01-23 10:28:31,166", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:28:31.166744Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-01-23 10:29:23,059", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": false, \"english_included\": true, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.059185Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-01-23 10:29:23,061", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": false, \"english_included\": true, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.061362Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-01-23 10:29:23,062", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.062280Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:29:23,067", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.067205Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:29:23,070", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.070761Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:29:23,074", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"english_translation_batch_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.073967Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:29:23,759", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:29:23,761", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 233, \"output_tokens\": 10, \"total_tokens\": 243, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.000683, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.761629Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:29:23,817", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:29:23,819", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"english_translation_batch_360654\", \"input_tokens\": 76, \"output_tokens\": 24, \"total_tokens\": 100, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.00043, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:23.819486Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:29:27,166", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:29:27,168", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"input_tokens\": 143, \"output_tokens\": 264, \"total_tokens\": 407, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.002998, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:27.168749Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:29:27,597", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:29:27,604", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"input_tokens\": 143, \"output_tokens\": 266, \"total_tokens\": 409, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.003018, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:27.604552Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:29:27,605", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 4.544052362442017, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.22006788659948245, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-01-23T09:29:27.605382Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-01-23 10:29:27,605", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:27.605691Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-01-23 10:29:27,606", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:29:27.605964Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-01-23 10:30:03,367", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": false, \"english_included\": false, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:03.366889Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-01-23 10:30:03,368", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": false, \"english_included\": false, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:03.368512Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-01-23 10:30:03,369", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:03.369463Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:30:03,373", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:03.373831Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:30:03,377", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:03.377679Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-01-23 10:30:04,719", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:30:04,721", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 289, \"output_tokens\": 22, \"total_tokens\": 311, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.000942, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:04.721464Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:30:15,766", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:30:15,783", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"input_tokens\": 199, \"output_tokens\": 719, \"total_tokens\": 918, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.007687, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:15.783785Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:30:17,067", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-01-23 10:30:17,070", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"input_tokens\": 199, \"output_tokens\": 761, \"total_tokens\": 960, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.008108, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:17.070636Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-01-23 10:30:17,071", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 13.702890157699585, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.0729773054072177, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-01-23T09:30:17.071370Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-01-23 10:30:17,071", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:17.071616Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-01-23 10:30:17,071", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:30:17.071897Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-01-23 10:31:21,812", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:31:21.812477Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-01-23 10:31:21,816", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-01-23T09:31:21.816435Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-03-09 10:48:13,491", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.491216Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-03-09 10:48:13,491", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.491598Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-03-09 10:48:13,491", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.491753Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-03-09 10:48:13,491", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.491816Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 10:48:13,491", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.491869Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 10:48:13,491", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.491932Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 10:48:13,491", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.491975Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-03-09 10:48:13,495", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:48:13.495044Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-03-09 10:49:06,574", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": true, \"english_included\": true, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:06.574739Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-03-09 10:49:06,578", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": true, \"english_included\": true, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:06.578573Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-03-09 10:49:06,579", "level": "ERROR", "logger": "translation.service", "message": "{\"item_id\": 360654, \"error\": \"__init__() got an unexpected keyword argument 'proxies'\", \"event\": \"batch_item_exception\", \"logger\": \"translation.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T09:49:06.579686Z\"}", "module": "service", "function": "translate_batch", "line": 529}
{"timestamp": "2026-03-09 10:49:06,580", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 0.0013728141784667969, \"total_items\": 1, \"successful_items\": 0, \"failed_items\": 1, \"success_rate\": 0.0, \"processing_rate\": 0.0, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0, \"errors\": [\"__init__() got an unexpected keyword argument 'proxies'\"], \"timestamp\": \"2026-03-09T09:49:06.579959Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-03-09 10:49:06,580", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 0, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:06.580117Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-03-09 10:49:06,580", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 0, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:06.580321Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-03-09 10:49:06,581", "level": "ERROR", "logger": "asyncio", "message": "Task exception was never retrieved\nfuture: <Task finished name='Task-6' coro=<AsyncClient.aclose() done, defined at /Users/bitmaster/Library/Python/3.9/lib/python/site-packages/httpx/_client.py:1978> exception=AttributeError(\"'AsyncHttpxClientWrapper' object has no attribute '_state'\")>", "module": "runners", "function": "run", "line": 44, "exception": "Traceback (most recent call last):\n  File \"/Users/bitmaster/Library/Python/3.9/lib/python/site-packages/httpx/_client.py\", line 1982, in aclose\n    if self._state != ClientState.CLOSED:\nAttributeError: 'AsyncHttpxClientWrapper' object has no attribute '_state'"}
{"timestamp": "2026-03-09 10:49:36,519", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": true, \"english_included\": true, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:36.518975Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-03-09 10:49:36,519", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": true, \"english_included\": true, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:36.519463Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-03-09 10:49:36,520", "level": "ERROR", "logger": "translation.service", "message": "{\"item_id\": 360654, \"error\": \"__init__() got an unexpected keyword argument 'proxies'\", \"event\": \"batch_item_exception\", \"logger\": \"translation.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T09:49:36.520195Z\"}", "module": "service", "function": "translate_batch", "line": 529}
{"timestamp": "2026-03-09 10:49:36,520", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 0.0009779930114746094, \"total_items\": 1, \"successful_items\": 0, \"failed_items\": 1, \"success_rate\": 0.0, \"processing_rate\": 0.0, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0, \"errors\": [\"__init__() got an unexpected keyword argument 'proxies'\"], \"timestamp\": \"2026-03-09T09:49:36.520430Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-03-09 10:49:36,520", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 0, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:36.520582Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-03-09 10:49:36,520", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 0, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:49:36.520759Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-03-09 10:49:36,521", "level": "ERROR", "logger": "asyncio", "message": "Task exception was never retrieved\nfuture: <Task finished name='Task-9' coro=<AsyncClient.aclose() done, defined at /Users/bitmaster/Library/Python/3.9/lib/python/site-packages/httpx/_client.py:1978> exception=AttributeError(\"'AsyncHttpxClientWrapper' object has no attribute '_state'\")>", "module": "runners", "function": "run", "line": 44, "exception": "Traceback (most recent call last):\n  File \"/Users/bitmaster/Library/Python/3.9/lib/python/site-packages/httpx/_client.py\", line 1982, in aclose\n    if self._state != ClientState.CLOSED:\nAttributeError: 'AsyncHttpxClientWrapper' object has no attribute '_state'"}
{"timestamp": "2026-03-09 10:53:03,178", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:03.178779Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-03-09 10:53:03,179", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:03.179542Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-03-09 10:53:07,043", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.043837Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-03-09 10:53:07,044", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.044085Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-03-09 10:53:07,044", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.044255Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-03-09 10:53:07,044", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.044321Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 10:53:07,044", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.044375Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 10:53:07,044", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.044439Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 10:53:07,044", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.044484Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-03-09 10:53:07,048", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:07.048043Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-03-09 10:53:12,003", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:12.003793Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-03-09 10:53:12,004", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:12.004337Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-03-09 10:53:15,033", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.033400Z\"}", "module": "main", "function": "<module>", "line": 45}
{"timestamp": "2026-03-09 10:53:15,033", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.033655Z\"}", "module": "main", "function": "<module>", "line": 61}
{"timestamp": "2026-03-09 10:53:15,033", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.033835Z\"}", "module": "main", "function": "<module>", "line": 72}
{"timestamp": "2026-03-09 10:53:15,033", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.033921Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 10:53:15,033", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.033978Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 10:53:15,034", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.034033Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 10:53:15,034", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.034080Z\"}", "module": "main", "function": "<module>", "line": 99}
{"timestamp": "2026-03-09 10:53:15,037", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:15.037408Z\"}", "module": "main", "function": "startup_event", "line": 127}
{"timestamp": "2026-03-09 10:53:21,658", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": true, \"english_included\": true, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:21.657951Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-03-09 10:53:21,658", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": true, \"english_included\": true, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:21.658535Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-03-09 10:53:21,672", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:21.672156Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:22,857", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:22,861", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 292, \"output_tokens\": 22, \"total_tokens\": 314, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.00095, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:22.861261Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:22,861", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 1.203230857849121, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.8310957065941496, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-03-09T09:53:22.861820Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-03-09 10:53:22,862", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:22.862080Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-03-09 10:53:22,862", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:22.862282Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-03-09 10:53:30,141", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"language\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"type\": null, \"allergens_only\": false, \"english_included\": true, \"event\": \"translate_menu_items_request\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:30.141618Z\"}", "module": "routes", "function": "translate_menu_items", "line": 70}
{"timestamp": "2026-03-09 10:53:30,142", "level": "INFO", "logger": "translation.service", "message": "{\"items_count\": 1, \"language_from\": \"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"allergens_only\": false, \"english_included\": true, \"event\": \"batch_translation_started\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:30.142122Z\"}", "module": "service", "function": "translate_batch", "line": 497}
{"timestamp": "2026-03-09 10:53:30,142", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:30.142786Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:30,147", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:30.147528Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:30,151", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:30.151405Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:30,155", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"english_translation_batch_360654\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:30.155072Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:32,036", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:32,042", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"english_translation_batch_360654\", \"input_tokens\": 134, \"output_tokens\": 65, \"total_tokens\": 199, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.000985, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:32.042357Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:32,124", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:32,128", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"allergens\", \"operation_id\": \"batch_allergens_360654\", \"input_tokens\": 292, \"output_tokens\": 22, \"total_tokens\": 314, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.00095, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:32.128894Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:40,048", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:40,051", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_second\", \"input_tokens\": 202, \"output_tokens\": 725, \"total_tokens\": 927, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.007755, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:40.051675Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:47,854", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:47,858", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"translation\", \"operation_id\": \"batch_item_360654_first\", \"input_tokens\": 202, \"output_tokens\": 788, \"total_tokens\": 990, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.008385, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:47.858016Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:47,858", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"batch_name\": \"batch_translation_\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\", \"total_duration\": 17.7165048122406, \"total_items\": 1, \"successful_items\": 1, \"failed_items\": 0, \"success_rate\": 1.0, \"processing_rate\": 0.056444542001822216, \"cache_hits\": 0, \"cache_misses\": 1, \"cache_hit_rate\": 0.0, \"total_input_tokens\": 0, \"total_output_tokens\": 0, \"total_cost\": 0.0, \"cost_per_item\": 0.0, \"errors\": [], \"timestamp\": \"2026-03-09T09:53:47.858637Z\", \"event\": \"batch_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_summary", "line": 171}
{"timestamp": "2026-03-09 10:53:47,858", "level": "INFO", "logger": "translation.service", "message": "{\"total_items\": 1, \"successful_items\": 1, \"event\": \"batch_translation_completed\", \"logger\": \"translation.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:47.858860Z\"}", "module": "service", "function": "translate_batch", "line": 535}
{"timestamp": "2026-03-09 10:53:47,859", "level": "INFO", "logger": "translation.routes", "message": "{\"count\": 1, \"event\": \"translate_menu_items_response\", \"logger\": \"translation.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:47.859061Z\"}", "module": "routes", "function": "translate_menu_items", "line": 81}
{"timestamp": "2026-03-09 10:53:51,836", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 15, \"model\": null, \"user_prompt_provided\": true, \"event\": \"wine_matcher_request\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:51.836146Z\"}", "module": "routes", "function": "match_wines", "line": 37}
{"timestamp": "2026-03-09 10:53:51,836", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 15, \"model\": \"gpt-4o\", \"user_prompt_provided\": true, \"event\": \"wine_pairing_started\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:51.836579Z\"}", "module": "service", "function": "match_wines", "line": 88}
{"timestamp": "2026-03-09 10:53:51,843", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:51.843441Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:56,533", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:56,536", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"input_tokens\": 777, \"output_tokens\": 472, \"total_tokens\": 1249, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.006663, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:56.536010Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:56,536", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_match\", \"duration\": 4.6997809410095215, \"input_tokens\": 777, \"output_tokens\": 472, \"total_tokens\": 1249, \"cost\": 0.006663, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.21277587456771935, \"timestamp\": \"2026-03-09T09:53:56.536347Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:53:56,536", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"model\": \"gpt-4o-2024-08-06\", \"event\": \"wine_pairing_completed\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:56.536533Z\"}", "module": "service", "function": "match_wines", "line": 185}
{"timestamp": "2026-03-09 10:53:56,536", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:56.536731Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:57,967", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:57,970", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 97, \"output_tokens\": 8, \"total_tokens\": 105, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000322, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:57.970248Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:57,970", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 1.4339478015899658, \"input_tokens\": 97, \"output_tokens\": 8, \"total_tokens\": 105, \"cost\": 0.000322, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.6973754545954859, \"timestamp\": \"2026-03-09T09:53:57.970693Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:53:57,970", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:57.970927Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:53:59,298", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:53:59,301", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 100, \"output_tokens\": 10, \"total_tokens\": 110, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.00035, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:59.301423Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:53:59,301", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 1.33095121383667, \"input_tokens\": 100, \"output_tokens\": 10, \"total_tokens\": 110, \"cost\": 0.00035, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.7513423404283524, \"timestamp\": \"2026-03-09T09:53:59.301900Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:53:59,302", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:53:59.302227Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:00,732", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:00,735", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 99, \"output_tokens\": 10, \"total_tokens\": 109, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000347, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:00.735877Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:00,736", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 1.434049129486084, \"input_tokens\": 99, \"output_tokens\": 10, \"total_tokens\": 109, \"cost\": 0.000347, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.6973261790259355, \"timestamp\": \"2026-03-09T09:54:00.736291Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:00,736", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:00.736533Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:02,440", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:02,441", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 97, \"output_tokens\": 10, \"total_tokens\": 107, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000342, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:02.441258Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:02,441", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 1.7049150466918945, \"input_tokens\": 97, \"output_tokens\": 10, \"total_tokens\": 107, \"cost\": 0.000342, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.5865394888386577, \"timestamp\": \"2026-03-09T09:54:02.441437Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:02,441", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:02.441552Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:03,805", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:03,808", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 100, \"output_tokens\": 10, \"total_tokens\": 110, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.00035, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:03.807994Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:03,808", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 1.3667457103729248, \"input_tokens\": 100, \"output_tokens\": 10, \"total_tokens\": 110, \"cost\": 0.00035, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.7316649998682959, \"timestamp\": \"2026-03-09T09:54:03.808317Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:03,808", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"user_prompt_provided\": true, \"event\": \"wine_matcher_response\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:03.808563Z\"}", "module": "routes", "function": "match_wines", "line": 54}
{"timestamp": "2026-03-09 10:54:12,733", "level": "INFO", "logger": "beer_pairing.routes", "message": "{\"language\": \"en\", \"foods\": 2, \"beer_candidates\": 30, \"model\": null, \"user_prompt_provided\": true, \"event\": \"beer_matcher_request\", \"logger\": \"beer_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:12.733114Z\"}", "module": "routes", "function": "match_beers", "line": 36}
{"timestamp": "2026-03-09 10:54:12,733", "level": "INFO", "logger": "beer_pairing.service", "message": "{\"language\": \"en\", \"foods\": 2, \"beer_candidates\": 30, \"model\": \"gpt-4o\", \"user_prompt_provided\": true, \"event\": \"beer_pairing_started\", \"logger\": \"beer_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:12.733554Z\"}", "module": "service", "function": "match_beers", "line": 87}
{"timestamp": "2026-03-09 10:54:12,734", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"beer_pairing\", \"operation_id\": \"beer_pairing\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:12.734397Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:18,755", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:18,758", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"beer_pairing\", \"operation_id\": \"beer_pairing\", \"input_tokens\": 1021, \"output_tokens\": 463, \"total_tokens\": 1484, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.007182, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:18.758514Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:18,758", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_match\", \"duration\": 6.025401830673218, \"input_tokens\": 1021, \"output_tokens\": 463, \"total_tokens\": 1484, \"cost\": 0.007182, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 2, \"rate\": 0.3319280698954712, \"timestamp\": \"2026-03-09T09:54:18.758938Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:18,759", "level": "INFO", "logger": "beer_pairing.service", "message": "{\"language\": \"en\", \"foods\": 2, \"model\": \"gpt-4o-2024-08-06\", \"event\": \"beer_pairing_completed\", \"logger\": \"beer_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:18.759095Z\"}", "module": "service", "function": "match_beers", "line": 184}
{"timestamp": "2026-03-09 10:54:18,759", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:18.759252Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:20,059", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:20,061", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 95, \"output_tokens\": 7, \"total_tokens\": 102, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000308, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:20.061381Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:20,061", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 1.3024208545684814, \"input_tokens\": 95, \"output_tokens\": 7, \"total_tokens\": 102, \"cost\": 0.000308, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.7678009734659235, \"timestamp\": \"2026-03-09T09:54:20.061685Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:20,061", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:20.061883Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:20,599", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:20,604", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000302, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:20.604399Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:20,605", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 0.5431077480316162, \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"cost\": 0.000302, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.841255264032408, \"timestamp\": \"2026-03-09T09:54:20.605016Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:20,605", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:20.605402Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:21,415", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:21,419", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000302, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:21.419786Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:21,420", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 0.8146529197692871, \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"cost\": 0.000302, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.2275166217819533, \"timestamp\": \"2026-03-09T09:54:21.420050Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:21,420", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:21.420216Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:22,029", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:22,039", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000302, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:22.039656Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:22,040", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 0.6198921203613281, \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"cost\": 0.000302, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.6131839188681916, \"timestamp\": \"2026-03-09T09:54:22.040134Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:22,040", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:22.040407Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:23,465", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:23,467", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000302, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:23.467478Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:23,467", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 1.427356243133545, \"input_tokens\": 93, \"output_tokens\": 7, \"total_tokens\": 100, \"cost\": 0.000302, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.700595947795521, \"timestamp\": \"2026-03-09T09:54:23.467766Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:23,467", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:23.467944Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-09 10:54:24,145", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 10:54:24,149", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"untappd_lookup\", \"operation_id\": \"untappd_rating_lookup\", \"input_tokens\": 94, \"output_tokens\": 7, \"total_tokens\": 101, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000305, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:24.149416Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-09 10:54:24,149", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"beer_pairing_untappd_lookup\", \"duration\": 0.6817018985748291, \"input_tokens\": 94, \"output_tokens\": 7, \"total_tokens\": 101, \"cost\": 0.000305, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.4669168475115109, \"timestamp\": \"2026-03-09T09:54:24.149650Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-09 10:54:24,150", "level": "INFO", "logger": "beer_pairing.routes", "message": "{\"language\": \"en\", \"foods\": 2, \"user_prompt_provided\": true, \"event\": \"beer_matcher_response\", \"logger\": \"beer_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:24.150077Z\"}", "module": "routes", "function": "match_beers", "line": 53}
{"timestamp": "2026-03-09 10:54:51,929", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:51.929384Z\"}", "module": "main", "function": "shutdown_event", "line": 140}
{"timestamp": "2026-03-09 10:54:51,930", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T09:54:51.930332Z\"}", "module": "main", "function": "shutdown_event", "line": 143}
{"timestamp": "2026-03-09 11:02:19,656", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.656030Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:02:19,656", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.656730Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:02:19,657", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.657341Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:02:19,657", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.657756Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:02:19,658", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.658162Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:02:19,658", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.658575Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:02:19,658", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.658972Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:02:19,659", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:19.659370Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:02:43,326", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.326822Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:02:43,327", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.327480Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:02:43,328", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.328014Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:02:43,328", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.328418Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:02:43,328", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.328814Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:02:43,329", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.329205Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:02:43,329", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.329624Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:02:43,330", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:02:43.330064Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:11:15,478", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.478158Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:11:15,478", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.478866Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:11:15,479", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.479652Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:11:15,480", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.480088Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:11:15,480", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.480490Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:11:15,481", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.481077Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:11:15,481", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.481479Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:11:15,481", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:11:15.481904Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:19:22,586", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.586303Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:19:22,586", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.586673Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:19:22,586", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.586850Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:19:22,586", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.586919Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:19:22,586", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.586974Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:19:22,587", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.587216Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:19:22,587", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.587266Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:19:22,587", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.587309Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:19:22,591", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:19:22.591081Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:20:03,639", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 131, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:20:03.639876Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:20:03,640", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:20:03.640689Z\"}", "module": "service", "function": "create_menu_image", "line": 67}
{"timestamp": "2026-03-09 11:20:03,980", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 401 Unauthorized\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:20:03,982", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 401 - {'error': {'message': 'Incorrect API key provided: 1f82e364************************285f. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T10:20:03.982834Z\"}", "module": "service", "function": "create_menu_image", "line": 88}
{"timestamp": "2026-03-09 11:20:03,983", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 401 - {'error': {'message': 'Incorrect API key provided: 1f82e364************************285f. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"4e56884c-68f9-41c2-9e4e-63f3a8bf60ea\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T10:20:03.983411Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 11:21:57,667", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:21:57.667391Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:21:57,668", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:21:57.668685Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.319902Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.320184Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.320337Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.320407Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.320463Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.320520Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.320566Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:22:00,320", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.320609Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:22:00,324", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:00.324444Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:22:03,895", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 131, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:03.895588Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:22:03,896", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:03.896103Z\"}", "module": "service", "function": "create_menu_image", "line": 67}
{"timestamp": "2026-03-09 11:22:37,464", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:22:38,824", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_data_url\": true, \"has_image_url\": false, \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:38.824587Z\"}", "module": "service", "function": "create_menu_image", "line": 104}
{"timestamp": "2026-03-09 11:22:38,824", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"has_data_url\": true, \"has_image_url\": false, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:22:38.824842Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 11:23:37,497", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.497639Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:23:37,498", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.498007Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866135Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866393Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866524Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866591Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866647Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866705Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866752Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:23:37,866", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.866796Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:23:37,870", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:37.870480Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:23:41,607", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.607810Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:23:41,608", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.607994Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:23:41,871", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.871537Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:23:41,871", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.871798Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:23:41,871", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.871942Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:23:41,872", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.872006Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:23:41,872", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.872064Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:23:41,872", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.872122Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:23:41,872", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.872168Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:23:41,872", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.872213Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:23:41,875", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:41.875786Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:23:45,917", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:45.917897Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:23:45,918", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:45.918253Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197325Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197565Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197695Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197759Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197813Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197868Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197920Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:23:46,197", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.197968Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:23:46,201", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:46.201815Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:23:48,519", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.519760Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:23:48,520", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.520507Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:23:48,521", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.521050Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:23:48,521", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.521465Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:23:48,521", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.521870Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:23:48,522", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.522275Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:23:48,522", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.522662Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:23:48,523", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:23:48.523047Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:24:05,659", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 131, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:24:05.659206Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:24:05,659", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:24:05.659774Z\"}", "module": "service", "function": "create_menu_image", "line": 67}
{"timestamp": "2026-03-09 11:24:39,145", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:24:40,154", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_data_url\": true, \"has_image_url\": true, \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:24:40.153979Z\"}", "module": "service", "function": "create_menu_image", "line": 108}
{"timestamp": "2026-03-09 11:24:40,154", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:24:40.154385Z\"}", "module": "routes", "function": "create_menu_image", "line": 47}
{"timestamp": "2026-03-09 11:25:15,405", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:15.404985Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:25:15,409", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:15.409416Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084342Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084580Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084716Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084777Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084831Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084886Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084929Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:25:20,084", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.084975Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:25:20,088", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:20.088498Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:25:23,967", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 131, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:23.967645Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:25:23,968", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:23.968139Z\"}", "module": "service", "function": "create_menu_image", "line": 67}
{"timestamp": "2026-03-09 11:25:58,602", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:25:59,505", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_data_url\": true, \"has_image_url\": true, \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:59.505631Z\"}", "module": "service", "function": "create_menu_image", "line": 108}
{"timestamp": "2026-03-09 11:25:59,509", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:25:59.509412Z\"}", "module": "routes", "function": "create_menu_image", "line": 47}
{"timestamp": "2026-03-09 11:29:53,462", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.462759Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:29:53,467", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.466954Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:29:53,873", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.873317Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:29:53,873", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.873713Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:29:53,873", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.873849Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:29:53,873", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.873913Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:29:53,873", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.873963Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:29:53,874", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.874015Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:29:53,874", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.874060Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:29:53,874", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.874103Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:29:53,877", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:53.877645Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:29:58,827", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:58.827404Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:29:58,827", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:58.827733Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:29:59,100", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.100757Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:29:59,101", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.100997Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:29:59,101", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.101130Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:29:59,101", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.101192Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:29:59,101", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.101246Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:29:59,101", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.101302Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:29:59,101", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.101347Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:29:59,101", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.101391Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:29:59,105", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:29:59.105321Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:30:17,599", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:17.599058Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:30:17,599", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:17.599451Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:30:27,264", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.264547Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:30:27,265", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.265000Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:30:27,265", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.265185Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:30:27,265", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.265257Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:30:27,265", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.265313Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:30:27,265", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.265376Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:30:27,265", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.265420Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:30:27,265", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.265466Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:30:27,269", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:27.269699Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:30:32,218", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.218794Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:30:32,219", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.219038Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494279Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494530Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494676Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494741Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494797Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494851Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494898Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:30:32,494", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.494943Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:30:32,498", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:32.498630Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:30:35,734", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:35.734302Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:30:35,734", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:35.734655Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.016903Z\"}", "module": "main", "function": "<module>", "line": 48}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.017149Z\"}", "module": "main", "function": "<module>", "line": 65}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.017285Z\"}", "module": "main", "function": "<module>", "line": 76}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.017354Z\"}", "module": "main", "function": "<module>", "line": 82}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.017410Z\"}", "module": "main", "function": "<module>", "line": 88}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.017468Z\"}", "module": "main", "function": "<module>", "line": 94}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.017515Z\"}", "module": "main", "function": "<module>", "line": 103}
{"timestamp": "2026-03-09 11:30:36,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.017562Z\"}", "module": "main", "function": "<module>", "line": 109}
{"timestamp": "2026-03-09 11:30:36,021", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:36.021329Z\"}", "module": "main", "function": "startup_event", "line": 138}
{"timestamp": "2026-03-09 11:30:40,971", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:40.971873Z\"}", "module": "main", "function": "shutdown_event", "line": 152}
{"timestamp": "2026-03-09 11:30:40,972", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:40.972124Z\"}", "module": "main", "function": "shutdown_event", "line": 155}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260218Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260572Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260709Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260773Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260827Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260882Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260928Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:30:41,260", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.260972Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:30:41,264", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:41.264774Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 11:30:45,148", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.148284Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:30:45,148", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.148826Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:30:45,149", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.149355Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:30:45,149", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.149765Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:30:45,150", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.150172Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:30:45,150", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.150563Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:30:45,150", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.150952Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:30:45,151", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:45.151384Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:30:48,866", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.866790Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:30:48,867", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.867308Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:30:48,867", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.867841Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:30:48,868", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.868247Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:30:48,868", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.868638Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:30:48,869", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.869037Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:30:48,869", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.869425Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:30:48,869", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:30:48.869820Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:33:03,310", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:03.310013Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 11:33:03,314", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:03.314602Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.360925Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.361162Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.361293Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.361351Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.361400Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.361448Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.361488Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:33:07,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.361525Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:33:07,365", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:33:07.365179Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 11:38:48,281", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 87, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:38:48.280952Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:38:48,287", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:38:48.287302Z\"}", "module": "service", "function": "create_menu_image", "line": 109}
{"timestamp": "2026-03-09 11:39:21,848", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:39:22,795", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_data_url\": true, \"source_had_image_url\": false, \"stored_image_url\": \"/menues/4336/menu_d46c9ee94a844d578eb8c35ccd3b2692.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:39:22.795875Z\"}", "module": "service", "function": "create_menu_image", "line": 156}
{"timestamp": "2026-03-09 11:39:22,796", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:39:22.796263Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 11:46:44,245", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.245811Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 11:46:44,246", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.246120Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 11:46:44,597", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.597755Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:46:44,598", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.598003Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:46:44,598", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.598138Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:46:44,598", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.598202Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:46:44,598", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.598257Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:46:44,598", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.598314Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:46:44,598", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.598364Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:46:44,598", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.598409Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:46:44,602", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:46:44.602237Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 11:47:50,258", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:50.258469Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 11:47:50,258", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:50.258948Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 11:47:51,669", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.669566Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:47:51,669", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.669926Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:47:51,670", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.670144Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:47:51,670", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.670243Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:47:51,670", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.670338Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:47:51,670", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.670426Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:47:51,670", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.670493Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:47:51,670", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.670558Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:47:51,676", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:51.676423Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 11:47:57,816", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.816499Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:47:57,817", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.817040Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:47:57,817", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.817587Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:47:57,817", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.817990Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:47:57,818", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.818379Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:47:57,818", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.818785Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:47:57,819", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.819235Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:47:57,819", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:47:57.819635Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:48:14,206", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:14.206760Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 11:48:14,207", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:14.207282Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929157Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929408Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929546Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929609Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929663Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929719Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929764Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:48:20,929", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.929808Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:48:20,933", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:48:20.933263Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 11:49:28,018", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:49:28.018473Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:49:28,019", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1536x1024\", \"openai_size\": \"1536x1024\", \"has_style_tips\": true, \"has_explicit_dimensions\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:49:28.019041Z\"}", "module": "service", "function": "create_menu_image", "line": 190}
{"timestamp": "2026-03-09 11:50:11,009", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:50:12,106", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/zimages/sofia/big/4336/433663aZWG4ocgXRlGbj9aljWNDRd9QOQtAWxKV.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:50:12,571", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"source_had_image_url\": false, \"source_had_base64\": true, \"stored_image_url\": \"/menues/4336/menu_9aa42b028d3f438eb238c8d0c6fbce95.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:50:12.571236Z\"}", "module": "service", "function": "create_menu_image", "line": 247}
{"timestamp": "2026-03-09 11:50:12,571", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:50:12.571372Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 11:50:53,640", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:50:53.640312Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:50:53,640", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1536x1024\", \"openai_size\": \"1536x1024\", \"has_style_tips\": true, \"has_explicit_dimensions\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:50:53.640850Z\"}", "module": "service", "function": "create_menu_image", "line": 190}
{"timestamp": "2026-03-09 11:51:43,732", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:51:44,673", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/zimages/sofia/big/4336/433663aZWG4ocgXRlGbj9aljWNDRd9QOQtAWxKV.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:51:44,865", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"source_had_image_url\": false, \"source_had_base64\": true, \"stored_image_url\": \"/menues/4336/menu_a59b8d80786c467a9275abbfc97a6e89.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:51:44.865079Z\"}", "module": "service", "function": "create_menu_image", "line": 247}
{"timestamp": "2026-03-09 11:51:44,865", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:51:44.865221Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 11:53:04,999", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:53:04.999645Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:53:05,000", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1536x1024\", \"openai_size\": \"1536x1024\", \"has_style_tips\": true, \"has_explicit_dimensions\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:53:05.000103Z\"}", "module": "service", "function": "create_menu_image", "line": 190}
{"timestamp": "2026-03-09 11:53:53,986", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:53:55,128", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 11:53:55,286", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"source_had_image_url\": false, \"source_had_base64\": true, \"stored_image_url\": \"/menues/4336/menu_37a790031fd94ac69fd7df2be72919a1.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:53:55.286149Z\"}", "module": "service", "function": "create_menu_image", "line": 247}
{"timestamp": "2026-03-09 11:53:55,286", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:53:55.286323Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 11:57:36,658", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.658166Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 11:57:36,659", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.659193Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 11:57:36,980", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.980767Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:57:36,981", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.981036Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:57:36,981", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.981183Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:57:36,981", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.981249Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:57:36,981", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.981304Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:57:36,981", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.981363Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:57:36,981", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.981409Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:57:36,981", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.981457Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:57:36,984", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:36.984960Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 11:57:49,109", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.109051Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:57:49,109", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.109574Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:57:49,110", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.110112Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:57:49,110", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.110517Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:57:49,110", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.110954Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:57:49,111", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.111352Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:57:49,111", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.111744Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:57:49,112", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:57:49.112138Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:59:14,080", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:14.080862Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 11:59:14,081", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:14.081090Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 11:59:18,262", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.262805Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 11:59:18,263", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.263061Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 11:59:18,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.263203Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 11:59:18,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.263271Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 11:59:18,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.263327Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 11:59:18,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.263384Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 11:59:18,263", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.263433Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 11:59:18,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.263479Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 11:59:18,267", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:18.266997Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 11:59:55,252", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:55.252903Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 11:59:55,253", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1080x1920\", \"openai_size\": \"1024x1536\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T10:59:55.253383Z\"}", "module": "service", "function": "create_menu_image", "line": 203}
{"timestamp": "2026-03-09 12:00:39,824", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:00:40,928", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:00:41,067", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"source_had_image_url\": false, \"source_had_base64\": true, \"stored_image_url\": \"/menues/4336/menu_b1b6359df2174ffea7723a6b0343aebb.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:00:41.067104Z\"}", "module": "service", "function": "create_menu_image", "line": 260}
{"timestamp": "2026-03-09 12:00:41,067", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:00:41.067247Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 12:01:43,695", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:01:43.695095Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 12:01:43,695", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1080x1920\", \"openai_size\": \"1024x1536\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:01:43.695760Z\"}", "module": "service", "function": "create_menu_image", "line": 203}
{"timestamp": "2026-03-09 12:02:27,761", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:02:28,607", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:02:28,755", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"source_had_image_url\": false, \"source_had_base64\": true, \"stored_image_url\": \"/menues/4336/menu_c2fa3eed0dc849e2859a57df4494f401.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:02:28.755895Z\"}", "module": "service", "function": "create_menu_image", "line": 260}
{"timestamp": "2026-03-09 12:02:28,756", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:02:28.756036Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 12:05:28,190", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.190545Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:05:28,191", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.191043Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.466888Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.467140Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.467273Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.467335Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.467389Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.467447Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.467496Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:05:28,467", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.467541Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:05:28,471", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:28.471267Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:05:58,478", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.477972Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:05:58,478", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.478233Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769166Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769430Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769570Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769633Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769687Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769743Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769792Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:05:58,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.769836Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:05:58,773", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:05:58.773234Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:06:14,606", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.605945Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:06:14,606", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.606489Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:06:14,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.607026Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:06:14,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.607443Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:06:14,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.607891Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:06:14,608", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.608451Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:06:14,608", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.608845Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:06:14,609", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:14.609234Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:06:45,252", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:45.252108Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:06:45,252", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:06:45.252768Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:07:19,694", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.694605Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:07:19,695", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.695137Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:07:19,695", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.695671Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:07:19,696", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.696078Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:07:19,696", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.696470Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:07:19,696", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.696863Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:07:19,697", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.697245Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:07:19,697", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:19.697660Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.500886Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.501130Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.501263Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.501326Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.501384Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.501441Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.501490Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:07:37,501", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.501537Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:07:37,505", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:37.505027Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:07:51,196", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:51.196865Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 12:07:51,197", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1080x1920\", \"openai_size\": \"1024x1792\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:07:51.197618Z\"}", "module": "service", "function": "create_menu_image", "line": 230}
{"timestamp": "2026-03-09 12:07:51,893", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 400 Bad Request\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:07:51,896", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'response_format'.\\\", 'type': 'invalid_request_error', 'param': 'response_format', 'code': 'unknown_parameter'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:07:51.896212Z\"}", "module": "service", "function": "create_menu_image", "line": 257}
{"timestamp": "2026-03-09 12:07:51,896", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'response_format'.\\\", 'type': 'invalid_request_error', 'param': 'response_format', 'code': 'unknown_parameter'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"f97ca5a0-9813-457f-9be3-5ab21de8978e\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:07:51.896702Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 12:08:36,756", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 767, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:36.756805Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 12:08:36,757", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1024x1792\", \"openai_size\": \"1024x1792\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:36.757407Z\"}", "module": "service", "function": "create_menu_image", "line": 230}
{"timestamp": "2026-03-09 12:08:37,082", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 400 Bad Request\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:08:37,084", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'response_format'.\\\", 'type': 'invalid_request_error', 'param': 'response_format', 'code': 'unknown_parameter'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:08:37.084301Z\"}", "module": "service", "function": "create_menu_image", "line": 257}
{"timestamp": "2026-03-09 12:08:37,084", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'response_format'.\\\", 'type': 'invalid_request_error', 'param': 'response_format', 'code': 'unknown_parameter'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"6c490c6d-a006-4ea0-8864-f2206ac74f1d\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:08:37.084799Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 12:08:55,101", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.101683Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:08:55,102", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.102278Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:08:55,405", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.405558Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:08:55,405", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.405816Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:08:55,405", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.405958Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:08:55,406", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.406022Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:08:55,406", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.406079Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:08:55,406", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.406137Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:08:55,406", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.406183Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:08:55,406", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.406229Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:08:55,409", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:08:55.409646Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:09:00,475", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.475196Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:09:00,475", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.475734Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:09:00,476", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.476262Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:09:00,476", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.476667Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:09:00,477", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.477056Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:09:00,477", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.477489Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:09:00,477", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.477869Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:09:00,478", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:00.478250Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:09:10,564", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:10.564541Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:09:10,564", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:10.564904Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099161Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099425Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099564Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099627Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099684Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099739Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099785Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:09:14,099", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.099831Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:09:14,103", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:14.103233Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:09:20,087", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 767, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:20.087189Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 12:09:20,087", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1024x1792\", \"openai_size\": \"1024x1792\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:20.087880Z\"}", "module": "service", "function": "create_menu_image", "line": 230}
{"timestamp": "2026-03-09 12:09:20,428", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 400 Bad Request\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:09:20,430", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'style'.\\\", 'type': 'invalid_request_error', 'param': 'style', 'code': 'unknown_parameter'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:09:20.430729Z\"}", "module": "service", "function": "create_menu_image", "line": 256}
{"timestamp": "2026-03-09 12:09:20,431", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'style'.\\\", 'type': 'invalid_request_error', 'param': 'style', 'code': 'unknown_parameter'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"b628649f-b409-4864-9337-45e7a14af298\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:09:20.431270Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 12:09:52,693", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.692965Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:09:52,693", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.693439Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.976894Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.977139Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.977273Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.977336Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.977392Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.977450Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.977499Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:09:52,977", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.977544Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:09:52,980", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:52.980949Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:09:56,268", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.268474Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:09:56,269", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.268996Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:09:56,269", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.269569Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:09:56,269", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.269977Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:09:56,270", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.270367Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:09:56,270", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.270764Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:09:56,271", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.271145Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:09:56,271", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:09:56.271524Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:10:07,525", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:07.525065Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:10:07,525", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:07.525640Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:10:12,067", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.067392Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:10:12,067", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.067632Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:10:12,067", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.067768Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:10:12,067", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.067830Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:10:12,067", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.067884Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:10:12,067", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.067943Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:10:12,067", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.067987Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:10:12,068", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.068032Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:10:12,071", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:12.071318Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:10:14,333", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 767, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:14.333919Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 12:10:14,334", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1024x1792\", \"openai_size\": \"1024x1792\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:14.334512Z\"}", "module": "service", "function": "create_menu_image", "line": 230}
{"timestamp": "2026-03-09 12:10:14,683", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 400 Bad Request\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:10:14,685", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 400 - {'error': {'message': \\\"Invalid value: 'hd'. Supported values are: 'low', 'medium', 'high', and 'auto'.\\\", 'type': 'invalid_request_error', 'param': 'quality', 'code': 'invalid_value'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:10:14.685839Z\"}", "module": "service", "function": "create_menu_image", "line": 255}
{"timestamp": "2026-03-09 12:10:14,686", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 400 - {'error': {'message': \\\"Invalid value: 'hd'. Supported values are: 'low', 'medium', 'high', and 'auto'.\\\", 'type': 'invalid_request_error', 'param': 'quality', 'code': 'invalid_value'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"9bba603a-6169-432e-b91f-83ed12ffc7f3\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:10:14.686265Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 12:10:33,802", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:33.802658Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:10:33,803", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:33.803606Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:10:34,101", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.101831Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:10:34,102", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.102083Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:10:34,102", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.102225Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:10:34,102", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.102289Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:10:34,102", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.102344Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:10:34,102", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.102401Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:10:34,102", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.102450Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:10:34,102", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.102495Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:10:34,105", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:34.105874Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:10:36,439", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.439270Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:10:36,439", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.439813Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:10:36,440", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.440363Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:10:36,440", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.440788Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:10:36,441", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.441194Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:10:36,441", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.441596Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:10:36,441", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.441988Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:10:36,442", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:36.442414Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:10:45,114", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:45.114523Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:10:45,115", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:45.114975Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:10:48,348", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.348449Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:10:48,348", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.348664Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:10:48,348", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.348795Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:10:48,348", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.348860Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:10:48,348", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.348975Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:10:48,349", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.349047Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:10:48,349", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.349094Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:10:48,349", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.349140Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:10:48,352", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:48.352503Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:10:50,553", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 767, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:50.553228Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 12:10:50,553", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1024x1792\", \"openai_size\": \"1024x1792\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:10:50.553665Z\"}", "module": "service", "function": "create_menu_image", "line": 230}
{"timestamp": "2026-03-09 12:10:50,886", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 400 Bad Request\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:10:50,888", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 400 - {'error': {'message': \\\"Invalid value: '1024x1792'. Supported values are: '1024x1024', '1024x1536', '1536x1024', and 'auto'.\\\", 'type': 'invalid_request_error', 'param': 'size', 'code': 'invalid_value'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:10:50.888313Z\"}", "module": "service", "function": "create_menu_image", "line": 255}
{"timestamp": "2026-03-09 12:10:50,888", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 400 - {'error': {'message': \\\"Invalid value: '1024x1792'. Supported values are: '1024x1024', '1024x1536', '1536x1024', and 'auto'.\\\", 'type': 'invalid_request_error', 'param': 'size', 'code': 'invalid_value'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"abeefe10-67d4-451e-b851-ec87fc8cadba\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T11:10:50.888803Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 12:57:23,676", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.676006Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:57:23,676", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.676280Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988099Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988375Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988521Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988585Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988641Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988701Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988748Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:57:23,988", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.988794Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:57:23,992", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:23.992553Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:57:39,045", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:39.045351Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 12:57:39,045", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:39.045838Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 12:57:44,439", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.439771Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 12:57:44,440", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.440014Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 12:57:44,440", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.440152Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 12:57:44,440", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.440213Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 12:57:44,440", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.440267Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 12:57:44,440", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.440322Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 12:57:44,440", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.440367Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 12:57:44,440", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.440411Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 12:57:44,443", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:44.443868Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 12:57:49,635", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 767, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:49.635302Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 12:57:49,636", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"target_dimensions\": \"1024x1792\", \"openai_size\": \"1024x1536\", \"has_style_tips\": true, \"has_explicit_dimensions\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:57:49.636143Z\"}", "module": "service", "function": "create_menu_image", "line": 230}
{"timestamp": "2026-03-09 12:58:40,616", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:58:41,663", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 12:58:41,979", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"source_had_image_url\": false, \"source_had_base64\": true, \"stored_image_url\": \"/menues/4336/menu_7e0f2e2e7d7a46f7b5ff67407ff1971f.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:58:41.979232Z\"}", "module": "service", "function": "create_menu_image", "line": 287}
{"timestamp": "2026-03-09 12:58:41,979", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T11:58:41.979392Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 13:00:56,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.017654Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:00:56,018", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.018855Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:00:56,316", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.316492Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:00:56,316", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.316746Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:00:56,316", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.316890Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:00:56,316", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.316955Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:00:56,317", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.317010Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:00:56,317", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.317067Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:00:56,317", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.317114Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:00:56,317", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.317161Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:00:56,320", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:00:56.320584Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:11:48,693", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.693594Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:11:48,693", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.693931Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967328Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967570Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967714Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967780Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967835Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967890Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967937Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:11:48,967", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.967987Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:11:48,971", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:11:48.971630Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:15:32,772", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:32.772621Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:15:32,772", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:32.772907Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056199Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056447Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056592Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056656Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056711Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056771Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056819Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:15:33,056", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.056867Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:15:33,060", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:15:33.060496Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:16:26,116", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:26.116229Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:16:26,119", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:26.119682Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:16:32,447", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.447556Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:16:32,447", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.447809Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:16:32,447", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.447938Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:16:32,448", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.448000Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:16:32,448", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.448054Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:16:32,448", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.448109Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:16:32,448", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.448155Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:16:32,448", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.448201Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:16:32,451", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:32.451756Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:16:54,188", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 767, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:54.188322Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 13:16:54,188", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:16:54.188674Z\"}", "module": "service", "function": "create_menu_image", "line": 116}
{"timestamp": "2026-03-09 13:16:54,340", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:16:54,379", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"'AsyncOpenAI' object has no attribute 'responses'\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:16:54.379258Z\"}", "module": "service", "function": "create_menu_image", "line": 148}
{"timestamp": "2026-03-09 13:16:54,379", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: 'AsyncOpenAI' object has no attribute 'responses'\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"89e27068-e19f-4b22-82a5-7ed20c223439\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:16:54.379705Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 13:17:52,862", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:17:52.862339Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 13:17:52,863", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:17:52.863352Z\"}", "module": "service", "function": "create_menu_image", "line": 116}
{"timestamp": "2026-03-09 13:17:53,001", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:17:53,034", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"'AsyncOpenAI' object has no attribute 'responses'\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:17:53.034134Z\"}", "module": "service", "function": "create_menu_image", "line": 148}
{"timestamp": "2026-03-09 13:17:53,034", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: 'AsyncOpenAI' object has no attribute 'responses'\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"8aa9a16f-2d99-4561-b79b-db34c69fee1c\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:17:53.034705Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 13:19:34,957", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:34.957543Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:19:34,957", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:34.957673Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268072Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268402Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268552Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268625Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268682Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268744Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268791Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:19:35,268", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.268839Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:19:35,272", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.272908Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:19:35,475", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.475705Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:19:35,475", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.475888Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788054Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788315Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788452Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788546Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788603Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788708Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788756Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:19:35,788", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.788801Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:19:35,792", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:19:35.792441Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:20:41,164", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:41.164745Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:20:41,165", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:41.165043Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:20:47,997", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.997808Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:20:47,998", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.998070Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:20:47,998", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.998194Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:20:47,998", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.998255Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:20:47,998", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.998309Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:20:47,998", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.998363Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:20:47,998", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.998417Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:20:47,998", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:47.998460Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:20:48,001", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:20:48.001919Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:22:02,306", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:22:02.306031Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 13:22:02,306", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:22:02.306557Z\"}", "module": "service", "function": "create_menu_image", "line": 116}
{"timestamp": "2026-03-09 13:22:02,462", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:22:03,097", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/responses \"HTTP/1.1 400 Bad Request\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:22:03,100", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 400 - {'error': {'message': \\\"The requested model 'gpt-image-1' is not supported with the Responses API.\\\", 'type': 'invalid_request_error', 'param': 'model', 'code': 'model_not_found'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:22:03.100426Z\"}", "module": "service", "function": "create_menu_image", "line": 148}
{"timestamp": "2026-03-09 13:22:03,101", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 400 - {'error': {'message': \\\"The requested model 'gpt-image-1' is not supported with the Responses API.\\\", 'type': 'invalid_request_error', 'param': 'model', 'code': 'model_not_found'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"765fc1a0-1d09-4186-83e2-2ee40be97208\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:22:03.100994Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 13:24:32,055", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.055650Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:24:32,056", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.056291Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.426993Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.427270Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.427410Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.427474Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.427532Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.427589Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.427637Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:24:32,427", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.427684Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:24:32,431", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:32.431703Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:24:46,175", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:46.175491Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:24:46,176", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:46.176076Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:24:48,768", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.768523Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:24:48,768", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.768749Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:24:48,768", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.768880Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:24:48,768", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.768941Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:24:48,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.768997Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:24:48,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.769051Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:24:48,769", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.769096Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:24:48,769", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.769141Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:24:48,772", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:48.772495Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:24:53,975", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:53.975780Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 13:24:53,976", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:24:53.976304Z\"}", "module": "service", "function": "create_menu_image", "line": 135}
{"timestamp": "2026-03-09 13:24:54,788", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 400 Bad Request\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:24:54,790", "level": "ERROR", "logger": "create_menu_image.service", "message": "{\"error\": \"Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'response_format'.\\\", 'type': 'invalid_request_error', 'param': 'response_format', 'code': 'unknown_parameter'}}\", \"model\": \"gpt-image-1\", \"event\": \"create_menu_image_api_error\", \"logger\": \"create_menu_image.service\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:24:54.790813Z\"}", "module": "service", "function": "create_menu_image", "line": 158}
{"timestamp": "2026-03-09 13:24:54,791", "level": "ERROR", "logger": "error_handler", "message": "{\"error_code\": \"EXTERNAL_SERVICE_ERROR\", \"message\": \"OpenAI error: Error code: 400 - {'error': {'message': \\\"Unknown parameter: 'response_format'.\\\", 'type': 'invalid_request_error', 'param': 'response_format', 'code': 'unknown_parameter'}}\", \"status_code\": 502, \"details\": {\"service\": \"OpenAI\"}, \"request_id\": \"96e94e37-1174-4f3e-8816-0ab47339683e\", \"path\": \"/menu-image/create\", \"method\": \"POST\", \"event\": \"service_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-09T12:24:54.791489Z\"}", "module": "error_handler", "function": "service_exception_handler", "line": 15}
{"timestamp": "2026-03-09 13:25:14,405", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.405043Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:25:14,405", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.405917Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747318Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747576Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747721Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747783Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747839Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747893Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747937Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:25:14,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.747985Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:25:14,751", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:14.751393Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:25:18,387", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.387497Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:25:18,387", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.387604Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689007Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689291Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689437Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689502Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689560Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689619Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689668Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:25:18,689", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.689713Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:25:18,693", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:18.693340Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:25:40,010", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:40.010773Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 13:25:40,011", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:40.010990Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 13:25:44,248", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.248784Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 13:25:44,249", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.249034Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 13:25:44,249", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.249172Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 13:25:44,249", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.249234Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 13:25:44,249", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.249289Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 13:25:44,249", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.249346Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 13:25:44,249", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.249395Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 13:25:44,249", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.249441Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 13:25:44,252", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:44.252837Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 13:25:48,754", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:48.754506Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 13:25:48,755", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:25:48.755049Z\"}", "module": "service", "function": "create_menu_image", "line": 135}
{"timestamp": "2026-03-09 13:26:33,948", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:26:35,118", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:26:35,370", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_65d33b7de95a4d04b9259d95dbd42e07.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:26:35.370154Z\"}", "module": "service", "function": "create_menu_image", "line": 180}
{"timestamp": "2026-03-09 13:26:35,370", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:26:35.370308Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 13:33:36,854", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": true, \"logo_url_present\": true, \"menu_text_length\": 768, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:33:36.854100Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 13:33:36,854", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": true, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:33:36.854378Z\"}", "module": "service", "function": "create_menu_image", "line": 135}
{"timestamp": "2026-03-09 13:34:20,146", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:34:21,373", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 13:34:21,609", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_4f363039ea3348bbabdd1dcf707625a6.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:34:21.609179Z\"}", "module": "service", "function": "create_menu_image", "line": 180}
{"timestamp": "2026-03-09 13:34:21,609", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T12:34:21.609311Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 14:09:01,644", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:01.644754Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:09:01,645", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:01.645553Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117054Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117351Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117490Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117558Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117616Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117673Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117722Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:09:02,117", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.117762Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:09:02,121", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:09:02.121498Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:13:04,876", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:04.876719Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:13:04,877", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:04.877292Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:13:09,772", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.772725Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:13:09,772", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.772977Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:13:09,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.773105Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:13:09,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.773167Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:13:09,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.773222Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:13:09,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.773274Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:13:09,773", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.773321Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:13:09,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.773371Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:13:09,776", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:13:09.776766Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:17:13,801", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:17:13.800868Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 14:17:13,801", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:17:13.801446Z\"}", "module": "service", "function": "create_menu_image", "line": 138}
{"timestamp": "2026-03-09 14:18:03,350", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:18:04,246", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:18:04,553", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_a6fa75333f3a4575acdc728f358627fd.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:18:04.553010Z\"}", "module": "service", "function": "create_menu_image", "line": 183}
{"timestamp": "2026-03-09 14:18:04,553", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:18:04.553175Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 14:20:17,522", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.522835Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:20:17,523", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.523125Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.940943Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.941319Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.941509Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.941612Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.941700Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.941783Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.941863Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:20:17,941", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.941930Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:20:17,946", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:20:17.946726Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:22:51,628", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:51.628338Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:22:51,628", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:51.628628Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:22:52,049", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.049645Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:22:52,049", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.049907Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:22:52,050", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.050052Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:22:52,050", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.050117Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:22:52,050", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.050174Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:22:52,050", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.050230Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:22:52,050", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.050279Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:22:52,050", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.050328Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:22:52,053", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:22:52.053842Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:23:16,613", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:16.613288Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:23:16,614", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:16.614003Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:23:20,901", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.901696Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:23:20,901", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.901927Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:23:20,902", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.902067Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:23:20,902", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.902129Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:23:20,902", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.902184Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:23:20,902", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.902240Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:23:20,902", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.902285Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:23:20,902", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.902330Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:23:20,905", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:20.905733Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:23:41,960", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:41.960574Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 14:23:41,961", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:23:41.961024Z\"}", "module": "service", "function": "create_menu_image", "line": 158}
{"timestamp": "2026-03-09 14:24:29,509", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:24:30,234", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:24:30,841", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_dd6b941592104926afdda0d57a251a99.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:24:30.841726Z\"}", "module": "service", "function": "create_menu_image", "line": 203}
{"timestamp": "2026-03-09 14:24:30,841", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:24:30.841883Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 14:28:39,573", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:39.573151Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:28:39,574", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:39.574308Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:28:43,754", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.754452Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:28:43,754", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.754699Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:28:43,754", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.754833Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:28:43,754", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.754894Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:28:43,754", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.754949Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:28:43,755", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.755005Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:28:43,755", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.755051Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:28:43,755", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.755095Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:28:43,758", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:28:43.758510Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:30:41,323", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:30:41.323116Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 14:30:41,323", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:30:41.323772Z\"}", "module": "service", "function": "create_menu_image", "line": 158}
{"timestamp": "2026-03-09 14:31:26,612", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:31:27,800", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/40/d4/ae/40d4aec2-7f61-15e8-9681-365c319e07b1/Ancona-0-0-1x_U007emarketing-0-8-0-85-220.png/1200x630wa.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:31:28,472", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_9b2d7f3290e1415d8621d64304441c0f.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:31:28.472778Z\"}", "module": "service", "function": "create_menu_image", "line": 203}
{"timestamp": "2026-03-09 14:31:28,472", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:31:28.472937Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 14:42:38,526", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:42:38.526774Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 14:42:38,527", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:42:38.527678Z\"}", "module": "service", "function": "create_menu_image", "line": 158}
{"timestamp": "2026-03-09 14:43:24,174", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:43:25,347", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:43:26,028", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_56ed150286e246998b8cffb18fe6dab4.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.028769Z\"}", "module": "service", "function": "create_menu_image", "line": 203}
{"timestamp": "2026-03-09 14:43:26,028", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.028928Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 14:43:26,029", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.029336Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:43:26,029", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.029523Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:43:26,458", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.458571Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:43:26,458", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.458856Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:43:26,459", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.459001Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:43:26,459", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.459062Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:43:26,459", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.459122Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:43:26,459", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.459175Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:43:26,459", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.459221Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:43:26,459", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.459267Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:43:26,462", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.462657Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:43:26,741", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.741515Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:43:26,741", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.741756Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:43:26,741", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.741890Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:43:26,741", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.741953Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:43:26,742", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.742007Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:43:26,742", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.742061Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:43:26,742", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.742105Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:43:26,742", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.742149Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:43:26,745", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:43:26.745572Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:44:48,682", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:48.682213Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:44:48,682", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:48.682357Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:44:49,058", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.058394Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:44:49,058", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.058660Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:44:49,058", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.058821Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:44:49,058", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.058940Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:44:49,059", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.059019Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:44:49,059", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.059078Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:44:49,059", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.059121Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:44:49,059", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.059165Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:44:49,062", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:44:49.062860Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:45:00,073", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.073863Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:45:00,073", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.073979Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.397851Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.398172Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.398312Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.398377Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.398433Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.398488Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.398534Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:45:00,398", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.398578Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:45:00,402", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:00.402212Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:45:16,164", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:16.164286Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:45:16,164", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:16.164853Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:45:21,927", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.927403Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:45:21,927", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.927627Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:45:21,927", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.927766Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:45:21,927", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.927829Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:45:21,927", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.927884Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:45:21,927", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.927938Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:45:21,927", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.927984Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:45:21,928", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.928029Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:45:21,931", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:21.931362Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:45:25,132", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:25.132240Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 14:45:25,132", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:45:25.132793Z\"}", "module": "service", "function": "create_menu_image", "line": 131}
{"timestamp": "2026-03-09 14:46:18,020", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:46:18,751", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:46:19,122", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_ac5e78bb555e4371b95305b99a72cdf9.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:46:19.122118Z\"}", "module": "service", "function": "create_menu_image", "line": 176}
{"timestamp": "2026-03-09 14:46:19,122", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:46:19.122278Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 14:50:08,761", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:08.761304Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:50:08,761", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:08.761586Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:50:09,085", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.085501Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:50:09,085", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.085812Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:50:09,085", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.085954Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:50:09,086", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.086019Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:50:09,086", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.086077Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:50:09,086", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.086136Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:50:09,086", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.086180Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:50:09,086", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.086227Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:50:09,089", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:09.089867Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:50:50,012", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:50.012812Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:50:50,013", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:50.013356Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:50:53,585", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.585547Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:50:53,585", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.585780Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:50:53,585", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.585922Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:50:53,585", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.585987Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:50:53,586", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.586043Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:50:53,586", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.586098Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:50:53,586", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.586143Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:50:53,586", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.586191Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:50:53,589", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:53.589606Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 14:50:59,884", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:59.884568Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 14:50:59,885", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:50:59.885015Z\"}", "module": "service", "function": "create_menu_image", "line": 129}
{"timestamp": "2026-03-09 14:51:54,208", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:51:55,750", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 14:51:56,350", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_07c92d568e404c7fa8fe12f5b59deae3.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:51:56.350821Z\"}", "module": "service", "function": "create_menu_image", "line": 174}
{"timestamp": "2026-03-09 14:51:56,351", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:51:56.350992Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 14:55:09,859", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:09.859503Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 14:55:09,863", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:09.863287Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 14:55:25,146", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.146782Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 14:55:25,147", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.147058Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 14:55:25,147", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.147213Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 14:55:25,147", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.147279Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 14:55:25,147", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.147335Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 14:55:25,147", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.147395Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 14:55:25,147", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.147440Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 14:55:25,147", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.147490Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 14:55:25,151", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T13:55:25.151873Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:25:47,876", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:47.876193Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:25:47,876", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:47.876580Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139226Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139469Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139613Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139674Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139730Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139785Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139831Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:25:50,139", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.139876Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:25:50,143", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:25:50.143177Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:26:00,438", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:26:00.438808Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 15:26:00,439", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:26:00.439247Z\"}", "module": "service", "function": "create_menu_image", "line": 160}
{"timestamp": "2026-03-09 15:26:51,376", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 15:26:52,530", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 15:26:52,882", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"stored_image_url\": \"/menues/4336/menu_645f95c83a8540e480f656245a26e888.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:26:52.882594Z\"}", "module": "service", "function": "create_menu_image", "line": 205}
{"timestamp": "2026-03-09 15:26:52,882", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:26:52.882780Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 15:47:50,455", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:50.454971Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:47:50,456", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:50.456053Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.624981Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.625233Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.625382Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.625445Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.625496Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.625553Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.625595Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:47:51,625", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.625636Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:47:51,630", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:47:51.630137Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:49:21,245", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:21.245627Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:49:21,246", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:21.246156Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849151Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849379Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849524Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849589Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849646Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849701Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849746Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:49:23,849", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.849796Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:49:23,853", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:23.853176Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:49:30,663", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:30.663193Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 15:49:30,789", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 15:49:30,874", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"brand_colors\": [\"#fefeb7\", \"#f6f2ae\", \"#af7178\"], \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:49:30.874089Z\"}", "module": "service", "function": "create_menu_image", "line": 275}
{"timestamp": "2026-03-09 15:50:23,133", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 15:50:24,428", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"stored_image_url\": \"/menues/4336/menu_0f3de3c895b64609a9e9a2e4ad5b9b4a.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:50:24.428840Z\"}", "module": "service", "function": "create_menu_image", "line": 324}
{"timestamp": "2026-03-09 15:50:24,429", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:50:24.429012Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 15:52:10,109", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.109682Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:52:10,109", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.109938Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:52:10,540", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.540355Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:52:10,540", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.540617Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:52:10,540", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.540761Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:52:10,540", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.540821Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:52:10,540", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.540873Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:52:10,540", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.540925Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:52:10,540", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.540968Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:52:10,541", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.541009Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:52:10,544", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:10.544912Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:52:17,613", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.613393Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:52:17,613", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.613511Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:52:17,916", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.916387Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:52:17,916", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.916636Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:52:17,916", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.916783Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:52:17,916", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.916845Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:52:17,916", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.916901Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:52:17,916", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.916961Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:52:17,917", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.917009Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:52:17,917", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.917058Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:52:17,920", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:17.920480Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:52:38,020", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.020917Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:52:38,021", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.021055Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352195Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352516Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352672Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352740Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352793Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352848Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352894Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:52:38,352", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.352943Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:52:38,356", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:38.356801Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:52:49,574", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.574062Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:52:49,574", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.574183Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:52:49,897", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.897472Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:52:49,897", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.897898Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:52:49,898", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.898104Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:52:49,898", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.898208Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:52:49,898", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.898294Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:52:49,898", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.898383Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:52:49,898", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.898458Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:52:49,898", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.898544Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:52:49,902", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:52:49.902447Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:54:54,154", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:54:54.154743Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 15:54:54,155", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:54:54.155431Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.725847Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.726109Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.726252Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.726314Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.726370Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.726424Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.726470Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 15:55:14,726", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.726515Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 15:55:14,729", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:14.729872Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 15:55:22,110", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:22.110569Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 15:55:22,210", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 15:55:22,278", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"brand_colors\": [\"#fefeb7\", \"#f6f2ae\", \"#af7178\"], \"menu_lines\": 22, \"canvas_size\": \"1024x1536\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:55:22.278606Z\"}", "module": "service", "function": "create_menu_image", "line": 292}
{"timestamp": "2026-03-09 15:56:11,440", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 15:56:12,488", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"stored_image_url\": \"/menues/4336/menu_2afc48c24bca4d1dae382677ca17ecf1.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:56:12.488791Z\"}", "module": "service", "function": "create_menu_image", "line": 343}
{"timestamp": "2026-03-09 15:56:12,488", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T14:56:12.488954Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 16:29:11,044", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.044650Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:29:11,045", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.045152Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:29:11,507", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.507475Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:29:11,507", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.507942Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:29:11,508", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.508228Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:29:11,508", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.508347Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:29:11,508", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.508456Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:29:11,508", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.508593Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:29:11,508", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.508731Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:29:11,508", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.508955Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:29:11,514", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:29:11.513990Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:30:24,238", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:24.238310Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:30:24,238", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:24.238895Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:30:26,924", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.924541Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:30:26,924", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.924779Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:30:26,924", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.924914Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:30:26,924", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.924988Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:30:26,925", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.925052Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:30:26,925", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.925111Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:30:26,925", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.925161Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:30:26,925", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.925209Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:30:26,928", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:26.928671Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:30:37,266", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:37.266628Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 16:30:37,398", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:30:37,444", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"brand_colors\": [\"#fefeb7\", \"#f6f2ae\", \"#af7178\"], \"menu_lines\": 22, \"canvas_size\": \"1024x1536\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:30:37.444824Z\"}", "module": "service", "function": "create_menu_image", "line": 317}
{"timestamp": "2026-03-09 16:31:30,834", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:31:31,868", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"stored_image_url\": \"/menues/4336/menu_294a8cd490dc447aa8096a4c1a8f74c4.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:31:31.868375Z\"}", "module": "service", "function": "create_menu_image", "line": 368}
{"timestamp": "2026-03-09 16:31:31,868", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:31:31.868533Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 16:38:26,961", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:26.961485Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:38:26,961", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:26.961794Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421180Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421465Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421622Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421691Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421747Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421804Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421851Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:38:27,421", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.421896Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:38:27,425", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:38:27.425873Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:41:52,053", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.053083Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:41:52,053", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.053237Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522041Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522340Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522501Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522565Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522617Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522672Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522713Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:41:52,522", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.522757Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:41:52,526", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:41:52.526758Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:43:13,834", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:13.834226Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:43:13,834", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:13.834457Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281048Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281293Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281442Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281505Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281562Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281617Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281669Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:43:14,281", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.281711Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:43:14,285", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:43:14.285488Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:45:07,815", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:07.815635Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:45:07,815", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:07.815891Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:45:10,960", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.960434Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:45:10,960", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.960683Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:45:10,960", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.960817Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:45:10,960", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.960883Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:45:10,960", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.960940Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:45:10,961", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.960995Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:45:10,961", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.961041Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:45:10,961", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.961088Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:45:10,964", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:10.964454Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:45:19,031", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:19.031068Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 16:45:19,143", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:45:19,208", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"brand_colors\": [\"#fefeb7\", \"#f6f2ae\", \"#af7178\"], \"menu_lines\": 22, \"canvas_size\": \"1024x1536\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:45:19.208297Z\"}", "module": "service", "function": "create_menu_image", "line": 348}
{"timestamp": "2026-03-09 16:46:12,644", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:46:14,160", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"stored_image_url\": \"/menues/4336/menu_5366b4a782e54807b906b28cfed4ed47.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:46:14.160562Z\"}", "module": "service", "function": "create_menu_image", "line": 399}
{"timestamp": "2026-03-09 16:46:14,160", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:46:14.160738Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 16:51:00,884", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:00.884860Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:51:00,885", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:00.885105Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.366847Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.367243Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.367444Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.367522Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.367585Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.367649Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.367695Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:51:01,367", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.367743Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:51:01,371", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:01.371562Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:51:28,141", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.141841Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:51:28,142", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.142073Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.645988Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.646327Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.646489Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.646555Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.646609Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.646669Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.646712Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:51:28,646", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.646757Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:51:28,650", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:28.650710Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:51:39,558", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.558766Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:51:39,558", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.558889Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:51:39,908", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.908008Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:51:39,908", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.908484Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:51:39,908", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.908826Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:51:39,908", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.908954Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:51:39,909", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.909127Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:51:39,909", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.909244Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:51:39,909", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.909301Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:51:39,909", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.909357Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:51:39,913", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:39.913123Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:51:46,986", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:46.986012Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:51:46,986", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:46.986167Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302156Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302423Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302572Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302637Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302693Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302754Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302804Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:51:47,302", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.302853Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:51:47,306", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:51:47.306478Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:52:03,676", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:03.676822Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:52:03,677", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:03.677341Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:52:07,599", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.599648Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:52:07,599", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.599896Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:52:07,600", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.600042Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:52:07,600", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.600105Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:52:07,600", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.600160Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:52:07,600", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.600217Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:52:07,600", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.600267Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:52:07,600", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.600312Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:52:07,603", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:07.603659Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:52:15,159", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:15.159100Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 16:52:15,251", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:52:15,297", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"brand_colors\": [\"#fefeb7\", \"#f6f2ae\", \"#af7178\"], \"menu_lines\": 22, \"canvas_size\": \"1024x1536\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:52:15.297321Z\"}", "module": "service", "function": "create_menu_image", "line": 351}
{"timestamp": "2026-03-09 16:53:07,260", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:53:08,591", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"stored_image_url\": \"/menues/4336/menu_07bc7fa88c3d43ffa3367e13eb5a5316.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:53:08.591907Z\"}", "module": "service", "function": "create_menu_image", "line": 402}
{"timestamp": "2026-03-09 16:53:08,592", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:53:08.592111Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 16:54:28,080", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:28.079983Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:54:28,081", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:28.080965Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365156Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365429Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365566Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365626Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365679Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365733Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365774Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:54:30,365", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.365813Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:54:30,369", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:30.369498Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 16:54:45,940", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 488, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:45.940039Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 16:54:46,031", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://zavedenia.com/system/storage/templateImages/246logo_bigsofia.png \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:54:46,093", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"brand_colors\": [\"#fefeb7\", \"#f6f2ae\", \"#af7178\"], \"menu_lines\": 22, \"canvas_size\": \"1024x1536\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:54:46.093541Z\"}", "module": "service", "function": "create_menu_image", "line": 351}
{"timestamp": "2026-03-09 16:55:38,885", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 16:55:39,852", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"stored_image_url\": \"/menues/4336/menu_0d860af6c1134911a682c62d6b2526e1.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:55:39.852562Z\"}", "module": "service", "function": "create_menu_image", "line": 402}
{"timestamp": "2026-03-09 16:55:39,852", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:55:39.852735Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 16:59:38,077", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:38.077467Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 16:59:38,078", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:38.078383Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 16:59:40,697", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.697460Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 16:59:40,697", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.697698Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 16:59:40,697", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.697844Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 16:59:40,697", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.697907Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 16:59:40,697", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.697962Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 16:59:40,698", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.698017Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 16:59:40,698", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.698063Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 16:59:40,698", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.698108Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 16:59:40,701", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T15:59:40.701474Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 17:02:47,076", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 430, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:02:47.076114Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 17:02:47,146", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://scontent.fskp2-1.fna.fbcdn.net/v/t39.30808-6/476452979_1125065186073205_4028224273011254349_n.jpg?_nc_cat=111&ccb=1-7&_nc_sid=2a1932&_nc_ohc=6uzmicmi7LwQ7kNvwFfM_xp&_nc_oc=AdnDg0eWx6BiH43BotzBOFt_-0Z0jnVEDPDV8icHFyF30AZV0Is4o9DuGh7hpGFDsI8&_nc_zt=23&_nc_ht=scontent.fskp2-1.fna&_nc_gid=Jw5EBz-TIyC7W9N3LorWEw&_nc_ss=8&oh=00_Afw3V9bUzi9WlO5JSFS_NpV5INRlJm_kzXZKrTTADqtJgw&oe=69B4BD82 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 17:02:47,223", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"brand_colors\": [\"#b1cd7a\", \"#9a5334\", \"#7c1103\"], \"menu_lines\": 1, \"canvas_size\": \"1024x1024\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:02:47.223003Z\"}", "module": "service", "function": "create_menu_image", "line": 351}
{"timestamp": "2026-03-09 17:03:25,221", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 17:03:26,500", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"Fast Food\", \"stored_image_url\": \"/menues/4336/menu_d0eaa802a2d2465ea48b5ff34e725474.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:03:26.500356Z\"}", "module": "service", "function": "create_menu_image", "line": 402}
{"timestamp": "2026-03-09 17:03:26,500", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:03:26.500507Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 17:05:37,802", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:37.801977Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 17:05:37,802", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:37.802364Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261052Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261301Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261442Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261504Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261555Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261606Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261647Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 17:05:38,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.261688Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 17:05:38,265", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:38.265332Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 17:05:53,305", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.305910Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 17:05:53,306", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.306107Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.770852Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.771171Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.771328Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.771396Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.771451Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.771509Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.771555Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 17:05:53,771", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.771600Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 17:05:53,775", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:05:53.775398Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 17:06:03,271", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.271461Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 17:06:03,271", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.271714Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 17:06:03,689", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.689755Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 17:06:03,690", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.690075Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 17:06:03,690", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.690238Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 17:06:03,690", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.690305Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 17:06:03,690", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.690366Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 17:06:03,690", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.690427Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 17:06:03,690", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.690473Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 17:06:03,690", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.690524Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 17:06:03,694", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:03.694498Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 17:06:51,171", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:51.171045Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 17:06:51,174", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:51.174596Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042007Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042255Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042395Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042456Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042511Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042565Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042612Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 17:06:55,042", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.042658Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 17:06:55,046", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:55.046026Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 17:06:57,021", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 460, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:57.021251Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 17:06:57,085", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://scontent.fskp2-1.fna.fbcdn.net/v/t39.30808-6/476452979_1125065186073205_4028224273011254349_n.jpg?_nc_cat=111&ccb=1-7&_nc_sid=2a1932&_nc_ohc=6uzmicmi7LwQ7kNvwFfM_xp&_nc_oc=AdnDg0eWx6BiH43BotzBOFt_-0Z0jnVEDPDV8icHFyF30AZV0Is4o9DuGh7hpGFDsI8&_nc_zt=23&_nc_ht=scontent.fskp2-1.fna&_nc_gid=Jw5EBz-TIyC7W9N3LorWEw&_nc_ss=8&oh=00_Afw3V9bUzi9WlO5JSFS_NpV5INRlJm_kzXZKrTTADqtJgw&oe=69B4BD82 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 17:06:57,167", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"International\", \"brand_colors\": [\"#b1cd7a\", \"#9a5334\", \"#7c1103\"], \"menu_lines\": 1, \"canvas_size\": \"1024x1024\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:06:57.167051Z\"}", "module": "service", "function": "create_menu_image", "line": 350}
{"timestamp": "2026-03-09 17:07:39,994", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 17:07:41,237", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"International\", \"stored_image_url\": \"/menues/4336/menu_a4d4da28db61437792feac6fed921e93.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:07:41.237569Z\"}", "module": "service", "function": "create_menu_image", "line": 401}
{"timestamp": "2026-03-09 17:07:41,237", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:07:41.237747Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 17:08:49,475", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 460, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:08:49.475609Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-09 17:08:49,521", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://scontent.fskp2-1.fna.fbcdn.net/v/t39.30808-6/476452979_1125065186073205_4028224273011254349_n.jpg?_nc_cat=111&ccb=1-7&_nc_sid=2a1932&_nc_ohc=6uzmicmi7LwQ7kNvwFfM_xp&_nc_oc=AdnDg0eWx6BiH43BotzBOFt_-0Z0jnVEDPDV8icHFyF30AZV0Is4o9DuGh7hpGFDsI8&_nc_zt=23&_nc_ht=scontent.fskp2-1.fna&_nc_gid=Jw5EBz-TIyC7W9N3LorWEw&_nc_ss=8&oh=00_Afw3V9bUzi9WlO5JSFS_NpV5INRlJm_kzXZKrTTADqtJgw&oe=69B4BD82 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 17:08:49,579", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"International\", \"brand_colors\": [\"#b1cd7a\", \"#9a5334\", \"#7c1103\"], \"menu_lines\": 1, \"canvas_size\": \"1024x1024\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:08:49.579639Z\"}", "module": "service", "function": "create_menu_image", "line": 350}
{"timestamp": "2026-03-09 17:09:30,589", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-09 17:09:31,846", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"International\", \"stored_image_url\": \"/menues/4336/menu_1a0fc318d30c45e7b3ed6b38a0fb5360.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:09:31.846565Z\"}", "module": "service", "function": "create_menu_image", "line": 401}
{"timestamp": "2026-03-09 17:09:31,846", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:09:31.846709Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-09 17:14:38,178", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.178146Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 17:14:38,182", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.182127Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 17:14:38,647", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.647586Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 17:14:38,647", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.647837Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 17:14:38,647", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.647987Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 17:14:38,648", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.648056Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 17:14:38,648", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.648111Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 17:14:38,648", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.648166Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 17:14:38,648", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.648212Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 17:14:38,648", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.648262Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 17:14:38,651", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:14:38.651814Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 17:15:34,413", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.413315Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 17:15:34,413", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.413833Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 17:15:34,746", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.746672Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 17:15:34,746", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.746920Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 17:15:34,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.747052Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 17:15:34,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.747117Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 17:15:34,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.747174Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 17:15:34,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.747231Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 17:15:34,747", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.747277Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 17:15:34,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.747323Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 17:15:34,750", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:34.750704Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-09 17:15:58,400", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:58.400861Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-09 17:15:58,401", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:15:58.401374Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-09 17:16:01,732", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.732775Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-09 17:16:01,733", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.733023Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-09 17:16:01,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.733191Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-09 17:16:01,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.733261Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-09 17:16:01,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.733317Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-09 17:16:01,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.733374Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-09 17:16:01,733", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.733419Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-09 17:16:01,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.733464Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-09 17:16:01,736", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-09T16:16:01.736843Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 09:08:12,626", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.626716Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 09:08:12,627", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.627136Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 09:08:12,627", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.627506Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 09:08:12,627", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.627577Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 09:08:12,627", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.627633Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 09:08:12,627", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.627877Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 09:08:12,627", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.627929Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 09:08:12,627", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.627975Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 09:08:12,631", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:12.631572Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 09:08:17,377", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"model\": null, \"has_style_tips\": false, \"logo_url_present\": true, \"menu_text_length\": 460, \"event\": \"create_menu_image_request\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:17.376925Z\"}", "module": "routes", "function": "create_menu_image", "line": 32}
{"timestamp": "2026-03-10 09:08:17,465", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://scontent.fskp2-1.fna.fbcdn.net/v/t39.30808-6/476452979_1125065186073205_4028224273011254349_n.jpg?_nc_cat=111&ccb=1-7&_nc_sid=2a1932&_nc_ohc=6uzmicmi7LwQ7kNvwFfM_xp&_nc_oc=AdnDg0eWx6BiH43BotzBOFt_-0Z0jnVEDPDV8icHFyF30AZV0Is4o9DuGh7hpGFDsI8&_nc_zt=23&_nc_ht=scontent.fskp2-1.fna&_nc_gid=Jw5EBz-TIyC7W9N3LorWEw&_nc_ss=8&oh=00_Afw3V9bUzi9WlO5JSFS_NpV5INRlJm_kzXZKrTTADqtJgw&oe=69B4BD82 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 09:08:17,607", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"International\", \"brand_colors\": [\"#b1cd7a\", \"#9a5334\", \"#7c1103\"], \"menu_lines\": 1, \"canvas_size\": \"1024x1024\", \"has_style_tips\": false, \"event\": \"create_menu_image_started\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:08:17.607246Z\"}", "module": "service", "function": "create_menu_image", "line": 351}
{"timestamp": "2026-03-10 09:08:58,797", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 09:09:00,249", "level": "INFO", "logger": "create_menu_image.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"4336\", \"cuisine\": \"International\", \"stored_image_url\": \"/menues/4336/menu_896efb0af32c4c46a7f1ca35161b4297.png\", \"event\": \"create_menu_image_completed\", \"logger\": \"create_menu_image.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:09:00.249586Z\"}", "module": "service", "function": "create_menu_image", "line": 402}
{"timestamp": "2026-03-10 09:09:00,249", "level": "INFO", "logger": "create_menu_image.routes", "message": "{\"z_id\": \"4336\", \"has_image_url\": true, \"event\": \"create_menu_image_response\", \"logger\": \"create_menu_image.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T08:09:00.249803Z\"}", "module": "routes", "function": "create_menu_image", "line": 48}
{"timestamp": "2026-03-10 11:00:01,185", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.185679Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:00:01,190", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.190471Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.657896Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.658151Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.658286Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.658351Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.658408Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.658466Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.658515Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:00:01,658", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.658561Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:00:01,661", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:01.661899Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:00:02,067", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.067864Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:00:02,068", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.068008Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:00:02,372", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.372601Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:00:02,372", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.372875Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:00:02,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.373022Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:00:02,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.373086Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:00:02,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.373145Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:00:02,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.373202Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:00:02,373", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.373249Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:00:02,373", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.373294Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:00:02,376", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:02.376719Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:00:08,440", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.440593Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:00:08,441", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.441122Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781252Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781505Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781649Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781711Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781769Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781826Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781873Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:00:08,781", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.781917Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:00:08,785", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:08.785238Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:00:09,290", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.290878Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:00:09,291", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.291161Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611273Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611523Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611674Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611738Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611795Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611853Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611902Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:00:09,611", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.611947Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:00:09,615", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:09.615462Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:00:16,791", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:16.791567Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:00:16,792", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:16.792144Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123241Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123469Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123607Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123671Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123728Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123785Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123833Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:00:17,123", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.123879Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:00:17,128", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:00:17.128042Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:01:30,922", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:30.922298Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:01:30,922", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:30.922729Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261264Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261523Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261665Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261730Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261790Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261847Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261894Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:01:31,261", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.261941Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:01:31,265", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:31.265314Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:01:40,159", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.159094Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:01:40,159", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.159346Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:01:40,480", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.480620Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:01:40,480", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.480911Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:01:40,481", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.481075Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:01:40,481", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.481143Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:01:40,481", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.481200Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:01:40,481", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.481257Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:01:40,481", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.481307Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:01:40,481", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_menu_image_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.481356Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:01:40,484", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_menu_image\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_menu_image_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:40.484809Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:01:49,578", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:49.578007Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:01:49,578", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:49.578240Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:01:57,601", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:57.601218Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:01:57,601", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:57.601465Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:01:57,601", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:57.601612Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:01:57,601", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:57.601676Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:01:57,601", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:57.601732Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:01:57,601", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:57.601787Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:01:57,601", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:01:57.601835Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:01:57,601", "level": "ERROR", "logger": "app.main", "message": "{\"error\": \"name 'CreateMenuImageServiceConfig' is not defined\", \"event\": \"service_initialization_failed\", \"logger\": \"app.main\", \"level\": \"error\", \"timestamp\": \"2026-03-10T10:01:57.601883Z\"}", "module": "main", "function": "<module>", "line": 114}
{"timestamp": "2026-03-10 11:02:00,529", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:00.529178Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:02:00,529", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:00.529438Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:02:00,529", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:00.529592Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:02:00,529", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:00.529657Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:02:00,529", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:00.529715Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:02:00,529", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:00.529775Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:02:00,529", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:00.529822Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:02:00,529", "level": "ERROR", "logger": "app.main", "message": "{\"error\": \"name 'CreateMenuImageServiceConfig' is not defined\", \"event\": \"service_initialization_failed\", \"logger\": \"app.main\", \"level\": \"error\", \"timestamp\": \"2026-03-10T10:02:00.529867Z\"}", "module": "main", "function": "<module>", "line": 114}
{"timestamp": "2026-03-10 11:02:05,074", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.074397Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:02:05,074", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.074733Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:02:05,074", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.074975Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:02:05,075", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.075068Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:02:05,075", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.075129Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:02:05,075", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.075190Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:02:05,075", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.075237Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:02:05,075", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:05.075292Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614027Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614280Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614423Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614489Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614544Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614601Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614647Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:02:07,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:07.614694Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:02:14,529", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_menu_image\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.529496Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:02:14,529", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.529751Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:02:14,529", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.529894Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:02:14,529", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.529957Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:02:14,530", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.530013Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:02:14,530", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.530069Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:02:14,530", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.530115Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:02:14,530", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.530161Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:02:14,533", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:14.533544Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:02:24,439", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.439177Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:02:24,439", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.439545Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773225Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773489Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773627Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773691Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773747Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773805Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773852Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:02:24,773", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.773900Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:02:24,777", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:24.777406Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:02:35,904", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:35.904537Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:02:35,905", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:35.905242Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:02:36,245", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.245759Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:02:36,246", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.246000Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:02:36,246", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.246148Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:02:36,246", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.246211Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:02:36,246", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.246266Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:02:36,246", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.246321Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:02:36,246", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.246370Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:02:36,246", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.246416Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:02:36,249", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:36.249716Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:02:38,273", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.273666Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:02:38,274", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.274558Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613000Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613265Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613419Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613486Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613542Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613600Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613647Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:02:38,613", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.613694Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:02:38,617", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:02:38.617006Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:07:44,338", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:44.338310Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:07:44,338", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:44.338916Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:07:50,565", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.565406Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:07:50,565", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.565642Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:07:50,565", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.565774Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:07:50,565", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.565836Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:07:50,565", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.565891Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:07:50,565", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.565946Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:07:50,566", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.565994Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:07:50,566", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.566040Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:07:50,569", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:07:50.569388Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:08:17,160", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 151, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:08:17.160678Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 11:08:17,440", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg \"HTTP/1.1 403 Forbidden\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:08:17,462", "level": "ERROR", "logger": "error_handler", "message": "{\"error\": \"Client error '403 Forbidden' for url 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg'\\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403\", \"error_type\": \"HTTPStatusError\", \"request_id\": \"b23e40b2-a831-496f-9b6b-17d496933118\", \"path\": \"/restaurant-offer/create\", \"method\": \"POST\", \"event\": \"unexpected_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-10T10:08:17.442911Z\", \"exception\": \"Traceback (most recent call last):\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py\\\", line 165, in __call__\\n    await self.app(scope, receive, _send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py\\\", line 62, in __call__\\n    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 62, in wrapped_app\\n    raise exc\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 51, in wrapped_app\\n    await app(scope, receive, sender)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 715, in __call__\\n    await self.middleware_stack(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 735, in app\\n    await route.handle(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 288, in handle\\n    await self.app(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 76, in app\\n    await wrap_app_handling_exceptions(app, request)(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 62, in wrapped_app\\n    raise exc\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 51, in wrapped_app\\n    await app(scope, receive, sender)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 73, in app\\n    response = await f(request)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/fastapi/routing.py\\\", line 301, in app\\n    raw_response = await run_endpoint_function(\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/fastapi/routing.py\\\", line 212, in run_endpoint_function\\n    return await dependant.call(**values)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/routes.py\\\", line 42, in create_restaurant_offer\\n    image_result = await create_restaurant_offer_service.create_restaurant_offer(request)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/service.py\\\", line 357, in create_restaurant_offer\\n    logo_bytes = await self._download_image_bytes(request.logo_image_url)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/service.py\\\", line 301, in _download_image_bytes\\n    response.raise_for_status()\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/httpx/_models.py\\\", line 763, in raise_for_status\\n    raise HTTPStatusError(message, request=request, response=self)\\nhttpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg'\\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403\"}", "module": "error_handler", "function": "generic_exception_handler", "line": 44}
{"timestamp": "2026-03-10 11:09:51,318", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:51.318729Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:09:51,319", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:51.319260Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294162Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294394Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294535Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294597Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294651Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294705Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294750Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:09:57,294", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.294795Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:09:57,298", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:09:57.298207Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:10:06,430", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 151, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:10:06.430255Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 11:10:06,665", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg \"HTTP/1.1 403 Forbidden\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:10:06,680", "level": "ERROR", "logger": "error_handler", "message": "{\"error\": \"Client error '403 Forbidden' for url 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg'\\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403\", \"error_type\": \"HTTPStatusError\", \"request_id\": \"65ecb84b-2821-4ec1-b89b-d2156fca52fd\", \"path\": \"/restaurant-offer/create\", \"method\": \"POST\", \"event\": \"unexpected_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-10T10:10:06.667183Z\", \"exception\": \"Traceback (most recent call last):\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py\\\", line 165, in __call__\\n    await self.app(scope, receive, _send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py\\\", line 62, in __call__\\n    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 62, in wrapped_app\\n    raise exc\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 51, in wrapped_app\\n    await app(scope, receive, sender)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 715, in __call__\\n    await self.middleware_stack(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 735, in app\\n    await route.handle(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 288, in handle\\n    await self.app(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 76, in app\\n    await wrap_app_handling_exceptions(app, request)(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 62, in wrapped_app\\n    raise exc\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 51, in wrapped_app\\n    await app(scope, receive, sender)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 73, in app\\n    response = await f(request)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/fastapi/routing.py\\\", line 301, in app\\n    raw_response = await run_endpoint_function(\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/fastapi/routing.py\\\", line 212, in run_endpoint_function\\n    return await dependant.call(**values)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/routes.py\\\", line 42, in create_restaurant_offer\\n    image_result = await create_restaurant_offer_service.create_restaurant_offer(request)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/service.py\\\", line 357, in create_restaurant_offer\\n    logo_bytes = await self._download_image_bytes(request.logo_image_url)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/service.py\\\", line 301, in _download_image_bytes\\n    response.raise_for_status()\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/httpx/_models.py\\\", line 763, in raise_for_status\\n    raise HTTPStatusError(message, request=request, response=self)\\nhttpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg'\\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403\"}", "module": "error_handler", "function": "generic_exception_handler", "line": 44}
{"timestamp": "2026-03-10 11:12:13,636", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 147, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:12:13.636370Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 11:12:13,814", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQQ0KF-dMJ_8VJfmJq-2WbqgOxPWpYR3bRVfA&s \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:12:13,849", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"theme_mood\": \"feminine, fresh, celebratory, spring\", \"brand_colors\": [\"#b3d17d\", \"#9d5638\", \"#7c1103\"], \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:12:13.849542Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 360}
{"timestamp": "2026-03-10 11:13:13,172", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:13:14,143", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"stored_image_url\": \"/menues/restaurant123/offer_90858fc9bedd42dfa5e58c8031c686ea.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:13:14.143498Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 410}
{"timestamp": "2026-03-10 11:13:14,143", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:13:14.143647Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-10 11:15:20,345", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 147, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:15:20.345776Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 11:15:20,560", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQQ0KF-dMJ_8VJfmJq-2WbqgOxPWpYR3bRVfA&s \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:15:20,578", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"theme_mood\": \"feminine, fresh, celebratory, spring\", \"brand_colors\": [\"#b3d17d\", \"#9d5638\", \"#7c1103\"], \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:15:20.578664Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 360}
{"timestamp": "2026-03-10 11:16:18,206", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:16:19,359", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"8 March\", \"stored_image_url\": \"/menues/restaurant123/offer_0911da943d47433f9d963a513daef192.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:16:19.359078Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 410}
{"timestamp": "2026-03-10 11:16:19,359", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:16:19.359219Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-10 11:17:58,377", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Vallentines Day\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 147, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:17:58.377766Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 11:17:58,599", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQQ0KF-dMJ_8VJfmJq-2WbqgOxPWpYR3bRVfA&s \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:17:58,616", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Vallentines Day\", \"theme_mood\": \"elegant, premium, refined, professional\", \"brand_colors\": [\"#b3d17d\", \"#9d5638\", \"#7c1103\"], \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:17:58.616760Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 360}
{"timestamp": "2026-03-10 11:18:58,774", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /images/generations in 0.422494 seconds", "module": "_base_client", "function": "_sleep_for_retry", "line": 1618}
{"timestamp": "2026-03-10 11:19:53,840", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:19:55,300", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Vallentines Day\", \"stored_image_url\": \"/menues/restaurant123/offer_1e3c6a3468cb4b24b1e965a4b8074dec.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:19:55.300044Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 410}
{"timestamp": "2026-03-10 11:19:55,300", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:19:55.300197Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-10 11:31:39,412", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.412364Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:31:39,412", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.412856Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751093Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751348Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751499Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751563Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751619Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751675Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751722Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:31:39,751", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.751769Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:31:39,755", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:39.755253Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:31:43,292", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.291932Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:31:43,292", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.292223Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614102Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614376Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614527Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614594Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614650Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614707Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614752Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:31:43,614", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.614798Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:31:43,618", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:43.618197Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:31:53,020", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.020730Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:31:53,021", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.021053Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.339952Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.340215Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.340367Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.340432Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.340489Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.340547Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.340594Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:31:53,340", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.340646Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:31:53,344", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:53.344114Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:31:58,695", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:58.695733Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:31:58,695", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:58.695968Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.016911Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.017165Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.017314Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.017378Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.017432Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.017491Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.017545Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:31:59,017", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.017596Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:31:59,021", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:31:59.021272Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:32:08,220", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.220037Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:32:08,220", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.220767Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564144Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564403Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564549Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564612Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564668Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564726Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564774Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:32:08,564", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.564822Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:32:08,568", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:08.568289Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:32:18,169", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.169364Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:32:18,169", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.169568Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:32:18,482", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.482768Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:32:18,483", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.483020Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:32:18,483", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.483160Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:32:18,483", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.483224Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:32:18,483", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.483279Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:32:18,483", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.483335Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:32:18,483", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.483381Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:32:18,483", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.483428Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:32:18,486", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:18.486796Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:32:23,841", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:23.841264Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:32:23,841", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:23.841681Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.151987Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.152243Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.152387Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.152451Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.152506Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.152560Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.152606Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:32:24,152", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.152656Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:32:24,155", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:32:24.155980Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:33:18,513", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:18.513863Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 11:33:18,514", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:18.514325Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495202Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495439Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495581Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495646Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495703Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495762Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495810Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 11:33:21,495", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.495857Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 11:33:21,499", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:21.499249Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 11:33:58,341", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Vallentines Day\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 147, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:58.341745Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 11:33:58,578", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQQ0KF-dMJ_8VJfmJq-2WbqgOxPWpYR3bRVfA&s \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:33:58,594", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Vallentines Day\", \"theme_mood\": \"elegant, premium, refined, professional\", \"brand_colors\": [\"#b3d17d\", \"#9d5638\", \"#7c1103\"], \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:33:58.594812Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 390}
{"timestamp": "2026-03-10 11:34:58,896", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /images/generations in 0.419137 seconds", "module": "_base_client", "function": "_sleep_for_retry", "line": 1618}
{"timestamp": "2026-03-10 11:35:53,984", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 11:35:55,553", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Vallentines Day\", \"stored_image_url\": \"/menues/restaurant123/offer_af75bca5f5184f558601fb0e063646ce.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:35:55.553158Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 440}
{"timestamp": "2026-03-10 11:35:55,553", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T10:35:55.553325Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-10 12:37:42,115", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 215, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:37:42.114878Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 12:37:42,197", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://instagram.fskp2-1.fna.fbcdn.net/v/t51.2885-19/496310889_17846249814470513_8282482492065824086_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDI0LmMyIn0&_nc_ht=instagram.fskp2-1.fna.fbcdn.net&_nc_cat=105&_nc_oc=Q6cZ2QFhM9L5rJvlPWTbKaQQPwjzova-jibhLd2l0Av4V-c1mHOfMo0Pg5Lu7ZtgM6XwgZ8&_nc_ohc=iZ21iWc03WcQ7kNvwFUKOoe&_nc_gid=Dx7MGETmq_mBmBfFF8zO9A&edm=AEYEu-QBAAAA&ccb=7-5&oh=00_AfyYOm_f3-w4jiVrCrOFAvilSj0_Le50q-jIhJmUGXMT4Q&oe=69B5C0AC&_nc_sid=ead929 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 12:37:42,202", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"theme_mood\": \"elegant, premium, refined, professional\", \"brand_colors\": [\"#eee2cc\", \"#ebdfca\", \"#66574e\"], \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:37:42.202362Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 390}
{"timestamp": "2026-03-10 12:38:37,589", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 12:38:38,709", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"stored_image_url\": \"/menues/restaurant123/offer_c47de1911d4b44b7a5613132dd215958.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:38:38.709418Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 440}
{"timestamp": "2026-03-10 12:38:38,709", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:38:38.709563Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-10 12:41:46,960", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:46.960034Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 12:41:46,960", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:46.960467Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412208Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412460Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412597Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412658Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412709Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412762Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412806Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 12:41:47,412", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.412846Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 12:41:47,416", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:47.416343Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 12:41:52,572", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.572160Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 12:41:52,572", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.572451Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907020Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907265Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907402Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907468Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907525Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907581Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907632Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 12:41:52,907", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.907678Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 12:41:52,911", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:52.911145Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 12:41:59,385", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.384984Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 12:41:59,385", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.385526Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747118Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747388Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747536Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747601Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747659Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747719Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747767Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 12:41:59,747", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.747815Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 12:41:59,751", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:41:59.751349Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 12:42:20,067", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:20.067386Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-10 12:42:20,067", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:20.067703Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140320Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140555Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140690Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140751Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140809Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140866Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140914Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-10 12:42:22,140", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.140961Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-10 12:42:22,144", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:42:22.144356Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-10 12:43:44,257", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 215, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:43:44.257519Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-10 12:43:44,338", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://instagram.fskp2-1.fna.fbcdn.net/v/t51.2885-19/496310889_17846249814470513_8282482492065824086_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDI0LmMyIn0&_nc_ht=instagram.fskp2-1.fna.fbcdn.net&_nc_cat=105&_nc_oc=Q6cZ2QFhM9L5rJvlPWTbKaQQPwjzova-jibhLd2l0Av4V-c1mHOfMo0Pg5Lu7ZtgM6XwgZ8&_nc_ohc=iZ21iWc03WcQ7kNvwFUKOoe&_nc_gid=Dx7MGETmq_mBmBfFF8zO9A&edm=AEYEu-QBAAAA&ccb=7-5&oh=00_AfyYOm_f3-w4jiVrCrOFAvilSj0_Le50q-jIhJmUGXMT4Q&oe=69B5C0AC&_nc_sid=ead929 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 12:43:44,353", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"theme_mood\": \"elegant, premium, refined, professional\", \"brand_colors\": [\"#eee2cc\", \"#ebdfca\", \"#66574e\"], \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:43:44.353480Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 396}
{"timestamp": "2026-03-10 12:44:44,599", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /images/generations in 0.486999 seconds", "module": "_base_client", "function": "_sleep_for_retry", "line": 1618}
{"timestamp": "2026-03-10 12:45:45,232", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /images/generations in 0.895306 seconds", "module": "_base_client", "function": "_sleep_for_retry", "line": 1618}
{"timestamp": "2026-03-10 12:46:40,585", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-10 12:46:41,593", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"stored_image_url\": \"/menues/restaurant123/offer_80fc7de0c6e946708d4c83562e8c1f6f.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:46:41.593797Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 446}
{"timestamp": "2026-03-10 12:46:41,593", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T11:46:41.593959Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-11 00:06:08,093", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.092227Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:06:08,094", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.094426Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:06:08,606", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.606710Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:06:08,606", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.606984Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:06:08,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.607126Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:06:08,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.607191Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:06:08,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.607246Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:06:08,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.607303Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:06:08,607", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.607349Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:06:08,607", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.607397Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:06:08,611", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:08.611105Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:06:12,350", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.350599Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:06:12,350", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.350821Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:06:12,680", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.680692Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:06:12,680", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.680972Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:06:12,681", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.681136Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:06:12,681", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.681203Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:06:12,681", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.681262Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:06:12,681", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.681331Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:06:12,681", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.681389Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:06:12,681", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.681440Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:06:12,685", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:12.685051Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:06:16,423", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.423415Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:06:16,423", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.423691Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:06:16,779", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.779313Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:06:16,779", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.779582Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:06:16,779", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.779733Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:06:16,779", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.779798Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:06:16,779", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.779854Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:06:16,779", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.779911Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:06:16,779", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:16.779956Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:06:16,780", "level": "ERROR", "logger": "app.main", "message": "{\"error\": \"__init__() missing 1 required positional argument: 'translation_model'\", \"event\": \"service_initialization_failed\", \"logger\": \"app.main\", \"level\": \"error\", \"timestamp\": \"2026-03-10T23:06:16.780003Z\"}", "module": "main", "function": "<module>", "line": 114}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665075Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665542Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665702Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665767Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665827Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665888Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665933Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:06:20,665", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.665979Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:06:20,669", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:20.669430Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:06:38,759", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:38.759636Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:06:38,763", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:38.763290Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220030Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220296Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220480Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220573Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220640Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220706Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220756Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:06:39,220", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.220801Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:06:39,224", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:39.224720Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:06:52,758", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:52.758450Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:06:52,758", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:52.758895Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:06:53,205", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.205752Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:06:53,206", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.206017Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:06:53,206", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.206157Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:06:53,206", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.206218Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:06:53,206", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.206268Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:06:53,206", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.206321Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:06:53,206", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.206362Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:06:53,206", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.206401Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:06:53,209", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:53.209919Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:06:56,445", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.445614Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:06:56,445", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.445902Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:06:56,782", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.782348Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:06:56,782", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.782622Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:06:56,782", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.782771Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:06:56,782", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.782837Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:06:56,782", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.782894Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:06:56,782", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.782953Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:06:56,783", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.783001Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:06:56,783", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.783047Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:06:56,786", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:06:56.786582Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:07:00,525", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.525085Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:07:00,525", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.525544Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895235Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895524Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895669Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895737Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895794Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895856Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895906Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:07:00,895", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.895953Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:07:00,899", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:00.899735Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:07:04,231", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.231847Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:07:04,232", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.231987Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:07:04,558", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.558667Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:07:04,558", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.558969Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:07:04,559", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.559124Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:07:04,559", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.559195Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:07:04,559", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.559249Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:07:04,559", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.559308Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:07:04,559", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.559354Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:07:04,559", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.559403Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:07:04,562", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:04.562972Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:07:07,895", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:07.895786Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:07:07,899", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:07.899493Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:07:08,262", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.262449Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:07:08,262", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.262722Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:07:08,262", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.262874Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:07:08,262", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.262940Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:07:08,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.262997Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:07:08,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.263058Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:07:08,263", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.263103Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:07:08,263", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.263152Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:07:08,266", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:08.266588Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:07:11,395", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.395083Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:07:11,395", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.395412Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:07:11,732", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.732661Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:07:11,732", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.732954Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:07:11,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.733104Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:07:11,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.733167Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:07:11,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.733225Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:07:11,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.733290Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:07:11,733", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.733337Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:07:11,733", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.733394Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:07:11,736", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:11.736797Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:07:15,173", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.173599Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:07:15,174", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.174588Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:07:15,518", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.518585Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:07:15,518", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.518880Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:07:15,519", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.519037Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:07:15,519", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.519105Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:07:15,519", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.519160Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:07:15,519", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.519220Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:07:15,519", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.519269Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:07:15,519", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.519316Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:07:15,522", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:15.522765Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:07:25,018", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.018611Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:07:25,018", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.018872Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361120Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361377Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361511Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361573Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361628Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361684Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361730Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:07:25,361", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.361777Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:07:25,365", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:25.365103Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:07:54,466", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:54.466814Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:07:54,467", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:07:54.467731Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:08:00,671", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.671463Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:08:00,671", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.671866Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:08:00,672", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.672025Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:08:00,672", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.672091Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:08:00,672", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.672147Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:08:00,672", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.672205Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:08:00,672", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.672250Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:08:00,672", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.672298Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:08:00,675", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:00.675799Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:08:36,935", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 215, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:36.935298Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-11 00:08:36,936", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"target_language\": \"mk\", \"event\": \"translate_offer_content_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:36.935965Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 461}
{"timestamp": "2026-03-11 00:08:36,949", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"create_restaurant_offer\", \"operation_id\": \"translate_offer_content\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:36.949552Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-11 00:08:40,690", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:08:40,699", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"create_restaurant_offer\", \"operation_id\": \"translate_offer_content\", \"input_tokens\": 219, \"output_tokens\": 154, \"total_tokens\": 373, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.002087, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:40.699779Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-11 00:08:40,700", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"target_language\": \"mk\", \"event\": \"translate_offer_content_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:40.700143Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 467}
{"timestamp": "2026-03-11 00:08:40,810", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://instagram.fskp2-1.fna.fbcdn.net/v/t51.2885-19/496310889_17846249814470513_8282482492065824086_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDI0LmMyIn0&_nc_ht=instagram.fskp2-1.fna.fbcdn.net&_nc_cat=105&_nc_oc=Q6cZ2QFhM9L5rJvlPWTbKaQQPwjzova-jibhLd2l0Av4V-c1mHOfMo0Pg5Lu7ZtgM6XwgZ8&_nc_ohc=iZ21iWc03WcQ7kNvwFUKOoe&_nc_gid=Dx7MGETmq_mBmBfFF8zO9A&edm=AEYEu-QBAAAA&ccb=7-5&oh=00_AfyYOm_f3-w4jiVrCrOFAvilSj0_Le50q-jIhJmUGXMT4Q&oe=69B5C0AC&_nc_sid=ead929 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:08:40,854", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"\\u041f\\u0435\\u0442\\u043e\\u043a \\u043d\\u0430\\u0432\\u0435\\u0447\\u0435\\u0440\", \"theme_mood\": \"elegant, premium, refined, professional\", \"brand_colors\": [\"#eee2cc\", \"#ebdfca\", \"#66574e\"], \"target_language\": \"mk\", \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:08:40.854805Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 473}
{"timestamp": "2026-03-11 00:09:35,683", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:09:36,860", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"\\u041f\\u0435\\u0442\\u043e\\u043a \\u043d\\u0430\\u0432\\u0435\\u0447\\u0435\\u0440\", \"stored_image_url\": \"/menues/restaurant123/offer_49e2a9bcf21d456ea79b661817e49d30.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:09:36.860725Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 525}
{"timestamp": "2026-03-11 00:09:36,860", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:09:36.860872Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-11 00:11:28,915", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:28.915759Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:11:28,917", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:28.917133Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:11:29,383", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.383793Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:11:29,384", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.384078Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:11:29,384", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.384221Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:11:29,384", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.384283Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:11:29,384", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.384336Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:11:29,384", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.384390Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:11:29,384", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.384431Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:11:29,384", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.384472Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:11:29,388", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:29.388168Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:11:36,967", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:36.967707Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:11:36,968", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:36.968041Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:11:37,306", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.306644Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:11:37,306", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.306916Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:11:37,307", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.307075Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:11:37,307", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.307138Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:11:37,307", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.307208Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:11:37,307", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.307324Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:11:37,307", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.307377Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:11:37,307", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.307426Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:11:37,311", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:37.311188Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:11:47,315", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:47.315143Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 00:11:47,315", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:47.315701Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234256Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234513Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234650Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234715Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234772Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234828Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234873Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 00:11:51,234", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.234920Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 00:11:51,238", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:11:51.238324Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 00:12:00,321", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 215, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:00.321179Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-11 00:12:00,321", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"target_language\": \"mk\", \"event\": \"translate_offer_content_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:00.321489Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 467}
{"timestamp": "2026-03-11 00:12:00,333", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"create_restaurant_offer\", \"operation_id\": \"translate_offer_content\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:00.333207Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-11 00:12:02,844", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Friday Night\", \"model\": null, \"has_visual_prompt\": true, \"logo_url_present\": true, \"offer_items_length\": 215, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:02.844025Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 32}
{"timestamp": "2026-03-11 00:12:02,844", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"target_language\": \"mk\", \"event\": \"translate_offer_content_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:02.844655Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 467}
{"timestamp": "2026-03-11 00:12:02,844", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"create_restaurant_offer\", \"operation_id\": \"translate_offer_content\", \"model\": \"gpt-4o-mini\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:02.844849Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-11 00:12:04,270", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:12:04,284", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"create_restaurant_offer\", \"operation_id\": \"translate_offer_content\", \"input_tokens\": 219, \"output_tokens\": 154, \"total_tokens\": 373, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.002087, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:04.284537Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-11 00:12:04,284", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"target_language\": \"mk\", \"event\": \"translate_offer_content_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:04.284855Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 473}
{"timestamp": "2026-03-11 00:12:04,379", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://instagram.fskp2-1.fna.fbcdn.net/v/t51.2885-19/496310889_17846249814470513_8282482492065824086_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDI0LmMyIn0&_nc_ht=instagram.fskp2-1.fna.fbcdn.net&_nc_cat=105&_nc_oc=Q6cZ2QFhM9L5rJvlPWTbKaQQPwjzova-jibhLd2l0Av4V-c1mHOfMo0Pg5Lu7ZtgM6XwgZ8&_nc_ohc=iZ21iWc03WcQ7kNvwFUKOoe&_nc_gid=Dx7MGETmq_mBmBfFF8zO9A&edm=AEYEu-QBAAAA&ccb=7-5&oh=00_AfyYOm_f3-w4jiVrCrOFAvilSj0_Le50q-jIhJmUGXMT4Q&oe=69B5C0AC&_nc_sid=ead929 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:12:04,405", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"\\u041f\\u0435\\u0442\\u043e\\u043a \\u043d\\u0430\\u0432\\u0435\\u0447\\u0435\\u0440\", \"theme_mood\": \"elegant, premium, refined, professional\", \"brand_colors\": [\"#eee2cc\", \"#ebdfca\", \"#66574e\"], \"target_language\": \"mk\", \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:04.405474Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 479}
{"timestamp": "2026-03-11 00:12:06,198", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:12:06,207", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"create_restaurant_offer\", \"operation_id\": \"translate_offer_content\", \"input_tokens\": 219, \"output_tokens\": 154, \"total_tokens\": 373, \"model\": \"gpt-4o-mini-2024-07-18\", \"cost\": 0.002087, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:06.207790Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-11 00:12:06,208", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"target_language\": \"mk\", \"event\": \"translate_offer_content_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:06.208264Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 473}
{"timestamp": "2026-03-11 00:12:06,273", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://instagram.fskp2-1.fna.fbcdn.net/v/t51.2885-19/496310889_17846249814470513_8282482492065824086_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDI0LmMyIn0&_nc_ht=instagram.fskp2-1.fna.fbcdn.net&_nc_cat=105&_nc_oc=Q6cZ2QFhM9L5rJvlPWTbKaQQPwjzova-jibhLd2l0Av4V-c1mHOfMo0Pg5Lu7ZtgM6XwgZ8&_nc_ohc=iZ21iWc03WcQ7kNvwFUKOoe&_nc_gid=Dx7MGETmq_mBmBfFF8zO9A&edm=AEYEu-QBAAAA&ccb=7-5&oh=00_AfyYOm_f3-w4jiVrCrOFAvilSj0_Le50q-jIhJmUGXMT4Q&oe=69B5C0AC&_nc_sid=ead929 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:12:06,280", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"\\u041f\\u0435\\u0442\\u043e\\u043a \\u043d\\u0430\\u0432\\u0435\\u0447\\u0435\\u0440\", \"theme_mood\": \"elegant, premium, refined, professional\", \"brand_colors\": [\"#eee2cc\", \"#ebdfca\", \"#66574e\"], \"target_language\": \"mk\", \"has_visual_prompt\": true, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:06.279950Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 479}
{"timestamp": "2026-03-11 00:12:56,828", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:12:58,108", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"\\u041f\\u0435\\u0442\\u043e\\u043a \\u043d\\u0430\\u0432\\u0435\\u0447\\u0435\\u0440\", \"stored_image_url\": \"/menues/restaurant123/offer_0a157c7b1c544c749af0a3cba975c3a8.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:58.108842Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 531}
{"timestamp": "2026-03-11 00:12:58,109", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:12:58.109001Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-11 00:13:00,161", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 00:13:01,312", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"\\u041f\\u0435\\u0442\\u043e\\u043a \\u043d\\u0430\\u0432\\u0435\\u0447\\u0435\\u0440\", \"stored_image_url\": \"/menues/restaurant123/offer_9a8e94e6e2524de2abd34e584b315f79.png\", \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:13:01.312188Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 531}
{"timestamp": "2026-03-11 00:13:01,312", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"has_image_url\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-10T23:13:01.312353Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 49}
{"timestamp": "2026-03-11 10:48:58,853", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.853269Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 10:48:58,853", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.853672Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 10:48:58,854", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.854033Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 10:48:58,854", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.854113Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 10:48:58,854", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.854175Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 10:48:58,854", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.854426Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 10:48:58,854", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.854486Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 10:48:58,854", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.854536Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 10:48:58,857", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:48:58.857914Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 10:49:01,851", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": true, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:49:01.851086Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 10:49:01,851", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"z_id\": \"restaurant123\", \"event\": \"create_restaurant_offer_mock_mode\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:49:01.851655Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 444}
{"timestamp": "2026-03-11 10:49:01,853", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"mock\", \"total_tokens\": 0, \"price_usd\": 0.0, \"mock\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:49:01.853921Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 52}
{"timestamp": "2026-03-11 10:49:22,705", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": false, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:49:22.704985Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 10:49:22,978", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg \"HTTP/1.1 403 Forbidden\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 10:49:23,000", "level": "ERROR", "logger": "error_handler", "message": "{\"error\": \"Client error '403 Forbidden' for url 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg'\\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403\", \"error_type\": \"HTTPStatusError\", \"request_id\": \"ed0ed130-740b-47d8-8c19-47082bf6753d\", \"path\": \"/restaurant-offer/create\", \"method\": \"POST\", \"event\": \"unexpected_exception\", \"logger\": \"error_handler\", \"level\": \"error\", \"timestamp\": \"2026-03-11T09:49:22.980215Z\", \"exception\": \"Traceback (most recent call last):\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py\\\", line 165, in __call__\\n    await self.app(scope, receive, _send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py\\\", line 62, in __call__\\n    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 62, in wrapped_app\\n    raise exc\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 51, in wrapped_app\\n    await app(scope, receive, sender)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 715, in __call__\\n    await self.middleware_stack(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 735, in app\\n    await route.handle(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 288, in handle\\n    await self.app(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 76, in app\\n    await wrap_app_handling_exceptions(app, request)(scope, receive, send)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 62, in wrapped_app\\n    raise exc\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py\\\", line 51, in wrapped_app\\n    await app(scope, receive, sender)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/starlette/routing.py\\\", line 73, in app\\n    response = await f(request)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/fastapi/routing.py\\\", line 301, in app\\n    raw_response = await run_endpoint_function(\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/fastapi/routing.py\\\", line 212, in run_endpoint_function\\n    return await dependant.call(**values)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/routes.py\\\", line 41, in create_restaurant_offer\\n    result = await create_restaurant_offer_service.create_restaurant_offer(request)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/service.py\\\", line 478, in create_restaurant_offer\\n    logo_bytes = await self._download_image_bytes(request.logo_image_url)\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/app/services/create_restaurant_offer/service.py\\\", line 391, in _download_image_bytes\\n    response.raise_for_status()\\n  File \\\"/Users/bitmaster/Development/AppFactory/ai_menu_translator/.venv/lib/python3.9/site-packages/httpx/_models.py\\\", line 763, in raise_for_status\\n    raise HTTPStatusError(message, request=request, response=self)\\nhttpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/320px-Camponotus_flavomarginatus_ant.jpg'\\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403\"}", "module": "error_handler", "function": "generic_exception_handler", "line": 44}
{"timestamp": "2026-03-11 10:51:03,718", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": false, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:51:03.718281Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 10:51:03,933", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://setec.mk/_next/image?url=https%3A%2F%2Fsetec-pos-web.fra1.cdn.digitaloceanspaces.com%2Fsetec_big_logo_4b4b413041.png&w=256&q=75 \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 10:51:03,963", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"theme_mood\": \"romantic, intimate, luxurious\", \"brand_colors\": [\"#fb8722\", \"#f58220\", \"#f48120\"], \"target_language\": null, \"has_visual_prompt\": false, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:51:03.963850Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 481}
{"timestamp": "2026-03-11 10:51:58,553", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 10:52:00,017", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"input_tokens\": 671, \"output_tokens\": 6240, \"total_tokens\": 6911, \"price_usd\": 0.252955, \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:00.017947Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 537}
{"timestamp": "2026-03-11 10:52:00,018", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"gpt-image-1\", \"total_tokens\": 6911, \"price_usd\": 0.252955, \"mock\": false, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:00.018116Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 52}
{"timestamp": "2026-03-11 10:52:21,850", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:21.850526Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 10:52:21,855", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:21.854974Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 10:52:24,267", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.267401Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 10:52:24,267", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.267654Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 10:52:24,267", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.267794Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 10:52:24,267", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.267857Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 10:52:24,267", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.267914Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 10:52:24,267", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.267969Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 10:52:24,268", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.268015Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 10:52:24,268", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.268065Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 10:52:24,271", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:24.271315Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 10:52:34,199", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": true, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:34.199078Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 10:52:34,199", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"z_id\": \"restaurant123\", \"event\": \"create_restaurant_offer_mock_mode\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:34.199585Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 444}
{"timestamp": "2026-03-11 10:52:34,204", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"mock\", \"total_tokens\": 0, \"price_usd\": 0.0, \"mock\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:52:34.204222Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 52}
{"timestamp": "2026-03-11 10:53:23,880", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": true, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:53:23.880774Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 10:53:23,881", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"z_id\": \"restaurant123\", \"event\": \"create_restaurant_offer_mock_mode\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:53:23.881779Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 444}
{"timestamp": "2026-03-11 10:53:23,883", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"mock\", \"total_tokens\": 0, \"price_usd\": 0.0, \"mock\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:53:23.883528Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 52}
{"timestamp": "2026-03-11 10:53:26,388", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": true, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:53:26.388128Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 10:53:26,388", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"z_id\": \"restaurant123\", \"event\": \"create_restaurant_offer_mock_mode\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:53:26.388763Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 444}
{"timestamp": "2026-03-11 10:53:26,390", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"mock\", \"total_tokens\": 0, \"price_usd\": 0.0, \"mock\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:53:26.390210Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 52}
{"timestamp": "2026-03-11 10:54:39,990", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:39.989870Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 10:54:39,994", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:39.993969Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441082Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441334Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441470Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441535Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441591Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441645Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441691Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 10:54:40,441", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.441737Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 10:54:40,445", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:40.445054Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 10:54:44,891", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:44.891181Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 10:54:44,891", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:44.891393Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208277Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208519Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208651Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208720Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208777Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208834Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208882Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 10:54:45,208", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.208929Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 10:54:45,212", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:45.212415Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 10:54:49,055", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:49.055531Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 10:54:49,055", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:49.055880Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.785928Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.786173Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.786312Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.786376Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.786432Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.786491Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.786540Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 10:54:59,786", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.786587Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 10:54:59,790", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:54:59.790031Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 10:58:28,960", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:28.960485Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 10:58:28,967", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:28.967503Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 10:58:37,577", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.577463Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 10:58:37,577", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.577758Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 10:58:37,577", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.577904Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 10:58:37,577", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.577972Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 10:58:37,578", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.578030Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 10:58:37,578", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.578087Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 10:58:37,578", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.578136Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 10:58:37,578", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.578185Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 10:58:37,581", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:37.581671Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 10:58:40,514", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:40.514105Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 10:58:40,514", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:40.514612Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 10:58:44,310", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.310512Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 10:58:44,310", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.310751Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 10:58:44,310", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.310895Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 10:58:44,310", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.310961Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 10:58:44,311", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.311018Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 10:58:44,311", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.311075Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 10:58:44,311", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.311124Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 10:58:44,311", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.311172Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 10:58:44,314", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T09:58:44.314609Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 11:02:06,551", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": true, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:06.551683Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 11:02:06,555", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"z_id\": \"restaurant123\", \"event\": \"create_restaurant_offer_mock_mode\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:06.555755Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 444}
{"timestamp": "2026-03-11 11:02:06,557", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"mock\", \"total_tokens\": 0, \"price_usd\": 0.0, \"mock\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:06.557458Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 43}
{"timestamp": "2026-03-11 11:02:23,645", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": true, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:23.645385Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 11:02:23,646", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"z_id\": \"restaurant123\", \"event\": \"create_restaurant_offer_mock_mode\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:23.645964Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 444}
{"timestamp": "2026-03-11 11:02:23,647", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"mock\", \"total_tokens\": 0, \"price_usd\": 0.0, \"mock\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:23.647295Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 43}
{"timestamp": "2026-03-11 11:02:40,905", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": true, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:40.905235Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 11:02:40,905", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"z_id\": \"restaurant123\", \"event\": \"create_restaurant_offer_mock_mode\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:40.905663Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 444}
{"timestamp": "2026-03-11 11:02:40,907", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"mock\", \"total_tokens\": 0, \"price_usd\": 0.0, \"mock\": true, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:40.907070Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 43}
{"timestamp": "2026-03-11 11:02:46,708", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": false, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:46.708473Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 11:02:46,902", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://media.designrush.com/inspiration_images/131726/conversions/_1528990179_257_Iconic-Playboy-Logo-Design_b32952520db2-desktop.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 11:02:46,933", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"theme_mood\": \"romantic, intimate, luxurious\", \"brand_colors\": [\"#afafaf\", \"#444444\"], \"target_language\": null, \"has_visual_prompt\": false, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:02:46.932939Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 481}
{"timestamp": "2026-03-11 11:03:43,796", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/images/generations \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 11:03:44,903", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"z_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"input_tokens\": 669, \"output_tokens\": 6240, \"total_tokens\": 6909, \"price_usd\": 0.252945, \"event\": \"create_restaurant_offer_completed\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:03:44.903907Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 537}
{"timestamp": "2026-03-11 11:03:44,904", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"z_id\": \"restaurant123\", \"model\": \"gpt-image-1\", \"total_tokens\": 6909, \"price_usd\": 0.252945, \"mock\": false, \"event\": \"create_restaurant_offer_response\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:03:44.904076Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 43}
{"timestamp": "2026-03-11 11:05:55,353", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:05:55.353813Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-11 11:05:55,354", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T10:05:55.354553Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-11 15:30:39,379", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.379673Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-11 15:30:39,379", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.379934Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-11 15:30:39,380", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.380130Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-11 15:30:39,380", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.380202Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-11 15:30:39,380", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.380267Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-11 15:30:39,380", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.380339Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-11 15:30:39,380", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.380390Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-11 15:30:39,380", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.380439Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-11 15:30:39,384", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:39.384671Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-11 15:30:47,529", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"offer_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": false, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:47.529795Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 15:30:47,910", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://media.designrush.com/inspiration_images/131726/conversions/_1528990179_257_Iconic-Playboy-Logo-Design_b32952520db2-desktop.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 15:30:48,238", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"offer_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"theme_mood\": \"romantic, intimate, luxurious\", \"brand_colors\": [\"#afafaf\", \"#444444\"], \"target_language\": null, \"has_visual_prompt\": false, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:30:48.238309Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 481}
{"timestamp": "2026-03-11 15:31:05,015", "level": "INFO", "logger": "create_restaurant_offer.routes", "message": "{\"offer_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"model\": null, \"has_visual_prompt\": false, \"mock_data\": false, \"logo_url_present\": true, \"offer_items_length\": 65, \"event\": \"create_restaurant_offer_request\", \"logger\": \"create_restaurant_offer.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:31:05.015238Z\"}", "module": "routes", "function": "create_restaurant_offer", "line": 30}
{"timestamp": "2026-03-11 15:31:05,193", "level": "INFO", "logger": "httpx", "message": "HTTP Request: GET https://media.designrush.com/inspiration_images/131726/conversions/_1528990179_257_Iconic-Playboy-Logo-Design_b32952520db2-desktop.jpg \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-11 15:31:05,473", "level": "INFO", "logger": "create_restaurant_offer.service", "message": "{\"model\": \"gpt-image-1\", \"offer_id\": \"restaurant123\", \"occasion\": \"Valentines Day in Playboy Caffe\", \"theme_mood\": \"romantic, intimate, luxurious\", \"brand_colors\": [\"#afafaf\", \"#444444\"], \"target_language\": null, \"has_visual_prompt\": false, \"event\": \"create_restaurant_offer_started\", \"logger\": \"create_restaurant_offer.service\", \"level\": \"info\", \"timestamp\": \"2026-03-11T14:31:05.472982Z\"}", "module": "service", "function": "create_restaurant_offer", "line": 481}
{"timestamp": "2026-03-11 15:31:48,562", "level": "INFO", "logger": "openai._base_client", "message": "Retrying request to /images/generations in 0.457671 seconds", "module": "_base_client", "function": "_sleep_for_retry", "line": 1618}
{"timestamp": "2026-03-27 16:18:18,631", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.631808Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-27 16:18:18,632", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.632065Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-27 16:18:18,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.632210Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-27 16:18:18,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.632283Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-27 16:18:18,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.632345Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-27 16:18:18,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.632400Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-27 16:18:18,632", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.632446Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-27 16:18:18,632", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.632487Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-27 16:18:18,636", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:18.636469Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-27 16:18:47,450", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 12, \"model\": null, \"user_prompt_provided\": true, \"event\": \"wine_matcher_request\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:47.450329Z\"}", "module": "routes", "function": "match_wines", "line": 37}
{"timestamp": "2026-03-27 16:18:47,450", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 12, \"model\": \"gpt-4o\", \"user_prompt_provided\": true, \"event\": \"wine_pairing_started\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:47.450667Z\"}", "module": "service", "function": "match_wines", "line": 88}
{"timestamp": "2026-03-27 16:18:47,460", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:47.460499Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:18:51,209", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:18:51,219", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"input_tokens\": 757, \"output_tokens\": 341, \"total_tokens\": 1098, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.005302, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:51.219429Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:18:51,219", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_match\", \"duration\": 3.769212007522583, \"input_tokens\": 757, \"output_tokens\": 341, \"total_tokens\": 1098, \"cost\": 0.005302, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.26530744304225995, \"timestamp\": \"2026-03-27T14:18:51.219937Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:18:51,220", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"model\": \"gpt-4o-2024-08-06\", \"event\": \"wine_pairing_completed\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:51.220171Z\"}", "module": "service", "function": "match_wines", "line": 185}
{"timestamp": "2026-03-27 16:18:51,220", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:51.220345Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:18:51,822", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:18:51,825", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 95, \"output_tokens\": 8, \"total_tokens\": 103, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000318, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:51.825215Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:18:51,825", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 0.6052589416503906, \"input_tokens\": 95, \"output_tokens\": 8, \"total_tokens\": 103, \"cost\": 0.000318, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.6521854221157786, \"timestamp\": \"2026-03-27T14:18:51.825636Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:18:51,825", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:51.825892Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:18:52,436", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:18:52,438", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 98, \"output_tokens\": 8, \"total_tokens\": 106, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000325, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:52.438605Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:18:52,439", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 0.6130669116973877, \"input_tokens\": 98, \"output_tokens\": 8, \"total_tokens\": 106, \"cost\": 0.000325, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.6311433237055926, \"timestamp\": \"2026-03-27T14:18:52.438969Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:18:52,439", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:52.439185Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:18:53,162", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:18:53,165", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 101, \"output_tokens\": 10, \"total_tokens\": 111, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000353, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:53.165126Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:18:53,165", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 0.7262871265411377, \"input_tokens\": 101, \"output_tokens\": 10, \"total_tokens\": 111, \"cost\": 0.000353, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.3768659300935013, \"timestamp\": \"2026-03-27T14:18:53.165488Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:18:53,165", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"user_prompt_provided\": true, \"event\": \"wine_matcher_response\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:18:53.165850Z\"}", "module": "routes", "function": "match_wines", "line": 54}
{"timestamp": "2026-03-27 16:45:48,336", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 12, \"model\": null, \"user_prompt_provided\": true, \"event\": \"wine_matcher_request\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:48.336861Z\"}", "module": "routes", "function": "match_wines", "line": 37}
{"timestamp": "2026-03-27 16:45:48,337", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 12, \"model\": \"gpt-4o\", \"user_prompt_provided\": true, \"event\": \"wine_pairing_started\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:48.337346Z\"}", "module": "service", "function": "match_wines", "line": 88}
{"timestamp": "2026-03-27 16:45:48,338", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:48.337952Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:45:52,612", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:45:52,614", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"input_tokens\": 757, \"output_tokens\": 302, \"total_tokens\": 1059, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.004913, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:52.614702Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:45:52,615", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_match\", \"duration\": 4.2777509689331055, \"input_tokens\": 757, \"output_tokens\": 302, \"total_tokens\": 1059, \"cost\": 0.004913, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.2337676987890217, \"timestamp\": \"2026-03-27T14:45:52.615097Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:45:52,615", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"model\": \"gpt-4o-2024-08-06\", \"event\": \"wine_pairing_completed\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:52.615338Z\"}", "module": "service", "function": "match_wines", "line": 185}
{"timestamp": "2026-03-27 16:45:52,615", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:52.615561Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:45:53,312", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:45:53,316", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 95, \"output_tokens\": 8, \"total_tokens\": 103, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000318, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:53.316575Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:45:53,317", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 0.7015931606292725, \"input_tokens\": 95, \"output_tokens\": 8, \"total_tokens\": 103, \"cost\": 0.000318, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.4253274634306308, \"timestamp\": \"2026-03-27T14:45:53.317188Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:45:53,317", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:53.317571Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:45:54,147", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:45:54,149", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 98, \"output_tokens\": 8, \"total_tokens\": 106, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000325, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:54.149516Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:45:54,149", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 0.8323459625244141, \"input_tokens\": 98, \"output_tokens\": 8, \"total_tokens\": 106, \"cost\": 0.000325, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.2014235005923615, \"timestamp\": \"2026-03-27T14:45:54.149919Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:45:54,150", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:54.150128Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 16:45:55,016", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 16:45:55,018", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 99, \"output_tokens\": 10, \"total_tokens\": 109, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000347, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:55.018204Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 16:45:55,018", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 0.8683462142944336, \"input_tokens\": 99, \"output_tokens\": 10, \"total_tokens\": 109, \"cost\": 0.000347, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.1516143947406283, \"timestamp\": \"2026-03-27T14:45:55.018480Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 16:45:55,018", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"user_prompt_provided\": true, \"event\": \"wine_matcher_response\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-27T14:45:55.018667Z\"}", "module": "routes", "function": "match_wines", "line": 54}
{"timestamp": "2026-03-27 17:00:21,285", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.285859Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-27 17:00:21,286", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.286046Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.637867Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.638116Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.638253Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.638314Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.638366Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.638419Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.638462Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-27 17:00:21,638", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.638503Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-27 17:00:21,642", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:21.642042Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-27 17:00:41,433", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"application_shutdown\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.433706Z\"}", "module": "main", "function": "shutdown_event", "line": 159}
{"timestamp": "2026-03-27 17:00:41,434", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"openai_client_closed\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.434275Z\"}", "module": "main", "function": "shutdown_event", "line": 162}
{"timestamp": "2026-03-27 17:00:41,771", "level": "INFO", "logger": "app.main", "message": "{\"services\": [\"wine_pairing\", \"beer_pairing\", \"translation\", \"insert_menu_items\", \"create_restaurant_offer\", \"menu_extraction\"], \"event\": \"configuration_loaded\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.771655Z\"}", "module": "main", "function": "<module>", "line": 50}
{"timestamp": "2026-03-27 17:00:41,771", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"authentication_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.771900Z\"}", "module": "main", "function": "<module>", "line": 67}
{"timestamp": "2026-03-27 17:00:41,772", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o-mini\", \"event\": \"translation_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.772038Z\"}", "module": "main", "function": "<module>", "line": 78}
{"timestamp": "2026-03-27 17:00:41,772", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"wine_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.772102Z\"}", "module": "main", "function": "<module>", "line": 84}
{"timestamp": "2026-03-27 17:00:41,772", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"beer_pairing_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.772156Z\"}", "module": "main", "function": "<module>", "line": 90}
{"timestamp": "2026-03-27 17:00:41,772", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-4o\", \"event\": \"menu_extraction_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.772211Z\"}", "module": "main", "function": "<module>", "line": 96}
{"timestamp": "2026-03-27 17:00:41,772", "level": "INFO", "logger": "app.main", "message": "{\"event\": \"insert_menu_items_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.772255Z\"}", "module": "main", "function": "<module>", "line": 105}
{"timestamp": "2026-03-27 17:00:41,772", "level": "INFO", "logger": "app.main", "message": "{\"model\": \"gpt-image-1\", \"event\": \"create_restaurant_offer_service_initialized\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.772298Z\"}", "module": "main", "function": "<module>", "line": 111}
{"timestamp": "2026-03-27 17:00:41,775", "level": "INFO", "logger": "app.main", "message": "{\"version\": \"2.0.0\", \"services\": [\"translation\", \"wine_pairing\", \"beer_pairing\", \"menu_extraction\", \"insert_menu_items\", \"create_restaurant_offer\"], \"translation_model\": \"gpt-4o-mini\", \"wine_pairing_model\": \"gpt-4o\", \"beer_pairing_model\": \"gpt-4o\", \"menu_extraction_model\": \"gpt-4o\", \"create_restaurant_offer_model\": \"gpt-image-1\", \"event\": \"application_startup\", \"logger\": \"app.main\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:00:41.775945Z\"}", "module": "main", "function": "startup_event", "line": 145}
{"timestamp": "2026-03-27 17:01:05,774", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 12, \"model\": null, \"user_prompt_provided\": true, \"event\": \"wine_matcher_request\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:05.774548Z\"}", "module": "routes", "function": "match_wines", "line": 37}
{"timestamp": "2026-03-27 17:01:05,774", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"wine_candidates\": 12, \"model\": \"gpt-4o\", \"user_prompt_provided\": true, \"event\": \"wine_pairing_started\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:05.774892Z\"}", "module": "service", "function": "match_wines", "line": 90}
{"timestamp": "2026-03-27 17:01:05,783", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:05.783729Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 17:01:18,099", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 17:01:18,109", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"wine_pairing\", \"operation_id\": \"wine_pairing\", \"input_tokens\": 757, \"output_tokens\": 340, \"total_tokens\": 1097, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.005293, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:18.109697Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 17:01:18,110", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_match\", \"duration\": 12.335206985473633, \"input_tokens\": 757, \"output_tokens\": 340, \"total_tokens\": 1097, \"cost\": 0.005293, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.0810687652973829, \"timestamp\": \"2026-03-27T15:01:18.110166Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 17:01:18,110", "level": "INFO", "logger": "wine_pairing.service", "message": "{\"language\": \"bg\", \"foods\": 1, \"model\": \"gpt-4o-2024-08-06\", \"event\": \"wine_pairing_completed\", \"logger\": \"wine_pairing.service\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:18.110345Z\"}", "module": "service", "function": "match_wines", "line": 191}
{"timestamp": "2026-03-27 17:01:18,110", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:18.110527Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 17:01:19,125", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 17:01:19,125", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 95, \"output_tokens\": 8, \"total_tokens\": 103, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000318, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:19.125710Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 17:01:19,125", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 1.0152781009674072, \"input_tokens\": 95, \"output_tokens\": 8, \"total_tokens\": 103, \"cost\": 0.000318, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.9849518068469619, \"timestamp\": \"2026-03-27T15:01:19.125794Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 17:01:19,125", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:19.125862Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 17:01:20,358", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 17:01:20,361", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 98, \"output_tokens\": 8, \"total_tokens\": 106, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000325, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:20.361118Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 17:01:20,361", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 1.2355608940124512, \"input_tokens\": 98, \"output_tokens\": 8, \"total_tokens\": 106, \"cost\": 0.000325, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 0.8093490210365323, \"timestamp\": \"2026-03-27T15:01:20.361451Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 17:01:20,361", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"model\": \"gpt-4o\", \"event\": \"openai_request\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:20.361680Z\"}", "module": "openai_client", "function": "json_completion", "line": 47}
{"timestamp": "2026-03-27 17:01:21,277", "level": "INFO", "logger": "httpx", "message": "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"", "module": "_client", "function": "_send_single_request", "line": 1786}
{"timestamp": "2026-03-27 17:01:21,279", "level": "INFO", "logger": "openai_client", "message": "{\"service\": \"vivino_lookup\", \"operation_id\": \"vivino_rating_lookup\", \"input_tokens\": 99, \"output_tokens\": 10, \"total_tokens\": 109, \"model\": \"gpt-4o-2024-08-06\", \"cost\": 0.000347, \"event\": \"openai_response\", \"logger\": \"openai_client\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:21.279439Z\"}", "module": "openai_client", "function": "json_completion", "line": 122}
{"timestamp": "2026-03-27 17:01:21,279", "level": "INFO", "logger": "app.utils.metrics", "message": "{\"operation\": \"wine_pairing_vivino_lookup\", \"duration\": 0.9180657863616943, \"input_tokens\": 99, \"output_tokens\": 10, \"total_tokens\": 109, \"cost\": 0.000347, \"model\": \"gpt-4o-2024-08-06\", \"cache_hit\": false, \"items_count\": 1, \"rate\": 1.089246560383229, \"timestamp\": \"2026-03-27T15:01:21.279752Z\", \"success\": true, \"event\": \"operation_completed\", \"logger\": \"app.utils.metrics\", \"level\": \"info\"}", "module": "metrics", "function": "log_completion", "line": 74}
{"timestamp": "2026-03-27 17:01:21,280", "level": "INFO", "logger": "wine_pairing.routes", "message": "{\"language\": \"bg\", \"foods\": 1, \"user_prompt_provided\": true, \"event\": \"wine_matcher_response\", \"logger\": \"wine_pairing.routes\", \"level\": \"info\", \"timestamp\": \"2026-03-27T15:01:21.280092Z\"}", "module": "routes", "function": "match_wines", "line": 54}
