fix: send partial results
Some checks failed
Build Worker Base and Application Images / check-base-changes (push) Successful in 11s
Build Worker Base and Application Images / build-base (push) Has been cancelled
Build Worker Base and Application Images / build-docker (push) Has been cancelled
Build Worker Base and Application Images / deploy-stack (push) Has been cancelled
Some checks failed
Build Worker Base and Application Images / check-base-changes (push) Successful in 11s
Build Worker Base and Application Images / build-base (push) Has been cancelled
Build Worker Base and Application Images / build-docker (push) Has been cancelled
Build Worker Base and Application Images / deploy-stack (push) Has been cancelled
This commit is contained in:
parent
a4cfb264b9
commit
d102f1c4de
1 changed files with 41 additions and 7 deletions
|
|
@ -199,6 +199,8 @@ class DetectionPipeline:
|
||||||
Dictionary with extracted field values (e.g., {"car_brand": "Honda", "body_type": "Sedan"})
|
Dictionary with extracted field values (e.g., {"car_brand": "Honda", "body_type": "Sedan"})
|
||||||
"""
|
"""
|
||||||
extracted = {}
|
extracted = {}
|
||||||
|
missing_fields = []
|
||||||
|
available_fields = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for db_field_name, template in self.field_mappings.items():
|
for db_field_name, template in self.field_mappings.items():
|
||||||
|
|
@ -215,12 +217,21 @@ class DetectionPipeline:
|
||||||
result_data = branch_data['result']
|
result_data = branch_data['result']
|
||||||
if isinstance(result_data, dict) and field_name in result_data:
|
if isinstance(result_data, dict) and field_name in result_data:
|
||||||
extracted[field_name] = result_data[field_name]
|
extracted[field_name] = result_data[field_name]
|
||||||
|
available_fields.append(f"{field_name}={result_data[field_name]}")
|
||||||
logger.debug(f"[DYNAMIC EXTRACT] {field_name}={result_data[field_name]} from branch {branch_id}")
|
logger.debug(f"[DYNAMIC EXTRACT] {field_name}={result_data[field_name]} from branch {branch_id}")
|
||||||
else:
|
else:
|
||||||
|
missing_fields.append(f"{field_name} (field not in branch {branch_id})")
|
||||||
logger.debug(f"[DYNAMIC EXTRACT] Field '{field_name}' not found in branch {branch_id}")
|
logger.debug(f"[DYNAMIC EXTRACT] Field '{field_name}' not found in branch {branch_id}")
|
||||||
else:
|
else:
|
||||||
|
missing_fields.append(f"{field_name} (branch {branch_id} missing)")
|
||||||
logger.debug(f"[DYNAMIC EXTRACT] Branch '{branch_id}' not in results")
|
logger.debug(f"[DYNAMIC EXTRACT] Branch '{branch_id}' not in results")
|
||||||
|
|
||||||
|
# Log summary of extraction
|
||||||
|
if available_fields:
|
||||||
|
logger.info(f"[FIELD EXTRACTION] Available fields: {', '.join(available_fields)}")
|
||||||
|
if missing_fields:
|
||||||
|
logger.warning(f"[FIELD EXTRACTION] Missing fields (will be null): {', '.join(missing_fields)}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error extracting fields from branches: {e}", exc_info=True)
|
logger.error(f"Error extracting fields from branches: {e}", exc_info=True)
|
||||||
|
|
||||||
|
|
@ -338,7 +349,17 @@ class DetectionPipeline:
|
||||||
car_brand = extracted_fields.get('brand')
|
car_brand = extracted_fields.get('brand')
|
||||||
body_type = extracted_fields.get('body_type')
|
body_type = extracted_fields.get('body_type')
|
||||||
|
|
||||||
logger.info(f"[LICENSE PLATE] Extracted fields: brand={car_brand}, body_type={body_type}")
|
# Log extraction results
|
||||||
|
fields_status = []
|
||||||
|
if car_brand is not None:
|
||||||
|
fields_status.append(f"brand={car_brand}")
|
||||||
|
else:
|
||||||
|
fields_status.append("brand=null")
|
||||||
|
if body_type is not None:
|
||||||
|
fields_status.append(f"bodyType={body_type}")
|
||||||
|
else:
|
||||||
|
fields_status.append("bodyType=null")
|
||||||
|
logger.info(f"[LICENSE PLATE] Extracted fields: {', '.join(fields_status)}")
|
||||||
|
|
||||||
# Clean up stored results after use
|
# Clean up stored results after use
|
||||||
del self.session_processing_results[session_id_for_lookup]
|
del self.session_processing_results[session_id_for_lookup]
|
||||||
|
|
@ -367,7 +388,18 @@ class DetectionPipeline:
|
||||||
|
|
||||||
# Send message
|
# Send message
|
||||||
await self.message_sender(detection_message)
|
await self.message_sender(detection_message)
|
||||||
logger.info(f"[COMBINED MESSAGE] Sent imageDetection with brand='{car_brand}', bodyType='{body_type}', license='{license_text}' to '{subscription_id}'")
|
|
||||||
|
# Log with indication of partial results
|
||||||
|
null_fields = []
|
||||||
|
if car_brand is None:
|
||||||
|
null_fields.append('brand')
|
||||||
|
if body_type is None:
|
||||||
|
null_fields.append('bodyType')
|
||||||
|
|
||||||
|
if null_fields:
|
||||||
|
logger.info(f"[COMBINED MESSAGE] Sent imageDetection with PARTIAL results (null: {', '.join(null_fields)}) - brand='{car_brand}', bodyType='{body_type}', license='{license_text}' to '{subscription_id}'")
|
||||||
|
else:
|
||||||
|
logger.info(f"[COMBINED MESSAGE] Sent imageDetection with brand='{car_brand}', bodyType='{body_type}', license='{license_text}' to '{subscription_id}'")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error sending license plate imageDetection message: {e}", exc_info=True)
|
logger.error(f"Error sending license plate imageDetection message: {e}", exc_info=True)
|
||||||
|
|
@ -1033,11 +1065,13 @@ class DetectionPipeline:
|
||||||
wait_for_branches = action.params.get('waitForBranches', [])
|
wait_for_branches = action.params.get('waitForBranches', [])
|
||||||
branch_results = context.get('branch_results', {})
|
branch_results = context.get('branch_results', {})
|
||||||
|
|
||||||
# Check if all required branches have completed
|
# Log missing branches but don't block the update (allow partial results)
|
||||||
for branch_id in wait_for_branches:
|
missing_branches = [b for b in wait_for_branches if b not in branch_results]
|
||||||
if branch_id not in branch_results:
|
if missing_branches:
|
||||||
logger.warning(f"Branch {branch_id} result not available for database update")
|
logger.warning(f"Some branches missing from results (will use null): {missing_branches}")
|
||||||
return {'status': 'error', 'message': f'Missing branch result: {branch_id}'}
|
available_branches = [b for b in wait_for_branches if b in branch_results]
|
||||||
|
if available_branches:
|
||||||
|
logger.info(f"Available branches for database update: {available_branches}")
|
||||||
|
|
||||||
# Prepare fields for database update
|
# Prepare fields for database update
|
||||||
table = action.params.get('table', 'car_frontal_info')
|
table = action.params.get('table', 'car_frontal_info')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue