Skip to content

Commit 807469b

Browse files
author
Bob Strahan
committed
feat: Add dynamic Assessment context names for granular vs regular modes
- Enhanced Pattern-2 Assessment function to use 'GranularAssessment' vs 'Assessment' context - Enhanced Pattern-3 Assessment function to use 'GranularAssessment' vs 'Assessment' context - Dynamic context detection based on config.assessment.granular.enabled setting - Applied to both skip and successful execution paths in both patterns Benefits: - Separate cost tracking for regular vs granular assessment approaches - Performance comparison analytics between assessment methods - Better cost optimization insights for different assessment strategies - Enhanced resource utilization analysis per assessment mode Example output: - Regular: 'Assessment/lambda/duration': {'gb_seconds': 0.80} - Granular: 'GranularAssessment/lambda/duration': {'gb_seconds': 1.45}
1 parent aff8e76 commit 807469b

File tree

2 files changed

+20
-8
lines changed
  • patterns
    • pattern-2/src/assessment_function
    • pattern-3/src/assessment_function

2 files changed

+20
-8
lines changed

patterns/pattern-2/src/assessment_function/index.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ def handler(event, context):
128128
if not section:
129129
raise ValueError(f"Section {section_id} not found in document")
130130

131+
# Check if granular assessment is enabled (moved earlier for Lambda metering context)
132+
granular_config = config.get('assessment', {}).get('granular', {})
133+
granular_enabled = granular_config.get('enabled', False)
134+
assessment_context = "GranularAssessment" if granular_enabled else "Assessment"
135+
logger.info(f"Assessment mode: {'Granular' if granular_enabled else 'Regular'} (context: {assessment_context})")
136+
131137
# Intelligent Assessment Skip: Check if extraction results already contain explainability_info
132138
if section.extraction_result_uri and section.extraction_result_uri.strip():
133139
try:
@@ -167,9 +173,9 @@ def handler(event, context):
167173
# Add only the section being processed (preserve existing data)
168174
section_document.sections = [section]
169175

170-
# Add Lambda metering for assessment skip execution
176+
# Add Lambda metering for assessment skip execution with dynamic context
171177
try:
172-
lambda_metering = calculate_lambda_metering("Assessment", context, start_time)
178+
lambda_metering = calculate_lambda_metering(assessment_context, context, start_time)
173179
section_document.metering = merge_metering_data(section_document.metering, lambda_metering)
174180
except Exception as e:
175181
logger.warning(f"Failed to add Lambda metering for assessment skip: {str(e)}")
@@ -301,9 +307,9 @@ def handler(event, context):
301307
updated_document.errors.extend(validation_errors)
302308
logger.error(f"Validation Error: {validation_errors}")
303309

304-
# Add Lambda metering for successful assessment execution
310+
# Add Lambda metering for successful assessment execution with dynamic context
305311
try:
306-
lambda_metering = calculate_lambda_metering("Assessment", context, start_time)
312+
lambda_metering = calculate_lambda_metering(assessment_context, context, start_time)
307313
updated_document.metering = merge_metering_data(updated_document.metering, lambda_metering)
308314
except Exception as e:
309315
logger.warning(f"Failed to add Lambda metering for assessment: {str(e)}")

patterns/pattern-3/src/assessment_function/index.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ def handler(event, context):
5656
if not section:
5757
raise ValueError(f"Section {section_id} not found in document")
5858

59+
# Check if granular assessment is enabled (for Lambda metering context)
60+
granular_config = config.get('assessment', {}).get('granular', {})
61+
granular_enabled = granular_config.get('enabled', False)
62+
assessment_context = "GranularAssessment" if granular_enabled else "Assessment"
63+
logger.info(f"Assessment mode: {'Granular' if granular_enabled else 'Regular'} (context: {assessment_context})")
64+
5965
# Intelligent Assessment Skip: Check if extraction results already contain explainability_info
6066
if section.extraction_result_uri and section.extraction_result_uri.strip():
6167
try:
@@ -96,9 +102,9 @@ def handler(event, context):
96102
# Add only the section being processed (preserve existing data)
97103
section_document.sections = [section]
98104

99-
# Add Lambda metering for assessment skip execution
105+
# Add Lambda metering for assessment skip execution with dynamic context
100106
try:
101-
lambda_metering = calculate_lambda_metering("Assessment", context, start_time)
107+
lambda_metering = calculate_lambda_metering(assessment_context, context, start_time)
102108
section_document.metering = merge_metering_data(section_document.metering, lambda_metering)
103109
except Exception as e:
104110
logger.warning(f"Failed to add Lambda metering for assessment skip: {str(e)}")
@@ -147,9 +153,9 @@ def handler(event, context):
147153
logger.error(error_message)
148154
raise Exception(error_message)
149155

150-
# Add Lambda metering for successful assessment execution
156+
# Add Lambda metering for successful assessment execution with dynamic context
151157
try:
152-
lambda_metering = calculate_lambda_metering("Assessment", context, start_time)
158+
lambda_metering = calculate_lambda_metering(assessment_context, context, start_time)
153159
updated_document.metering = merge_metering_data(updated_document.metering, lambda_metering)
154160
except Exception as e:
155161
logger.warning(f"Failed to add Lambda metering for assessment: {str(e)}")

0 commit comments

Comments
 (0)