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"})
|
||||
"""
|
||||
extracted = {}
|
||||
missing_fields = []
|
||||
available_fields = []
|
||||
|
||||
try:
|
||||
for db_field_name, template in self.field_mappings.items():
|
||||
|
|
@ -215,12 +217,21 @@ class DetectionPipeline:
|
|||
result_data = branch_data['result']
|
||||
if isinstance(result_data, dict) and field_name in result_data:
|
||||
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}")
|
||||
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}")
|
||||
else:
|
||||
missing_fields.append(f"{field_name} (branch {branch_id} missing)")
|
||||
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:
|
||||
logger.error(f"Error extracting fields from branches: {e}", exc_info=True)
|
||||
|
||||
|
|
@ -338,7 +349,17 @@ class DetectionPipeline:
|
|||
car_brand = extracted_fields.get('brand')
|
||||
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
|
||||
del self.session_processing_results[session_id_for_lookup]
|
||||
|
|
@ -367,7 +388,18 @@ class DetectionPipeline:
|
|||
|
||||
# Send 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:
|
||||
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', [])
|
||||
branch_results = context.get('branch_results', {})
|
||||
|
||||
# Check if all required branches have completed
|
||||
for branch_id in wait_for_branches:
|
||||
if branch_id not in branch_results:
|
||||
logger.warning(f"Branch {branch_id} result not available for database update")
|
||||
return {'status': 'error', 'message': f'Missing branch result: {branch_id}'}
|
||||
# Log missing branches but don't block the update (allow partial results)
|
||||
missing_branches = [b for b in wait_for_branches if b not in branch_results]
|
||||
if missing_branches:
|
||||
logger.warning(f"Some branches missing from results (will use null): {missing_branches}")
|
||||
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
|
||||
table = action.params.get('table', 'car_frontal_info')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue