diff --git a/README.md b/README.md index 59a3efc..dc19b7e 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -**Hello world!!!** +Score block diff --git a/block.py b/block.py index 3b227f9..89e2c28 100644 --- a/block.py +++ b/block.py @@ -1,21 +1,67 @@ -@flowx_block -def example_function(request: dict) -> dict: +import logging +from rules_processing import processing - # Processing logic here... +# Configure logging +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(name)s - %(message)s", +) +logger = logging.getLogger(__name__) - return { - "meta_info": [ - { - "name": "created_date", - "type": "string", - "value": "2024-11-05" - } - ], - "fields": [ - { - "name": "", - "type": "", - "value": "" - } - ] - } +def __main__( + hd_score_m1: float + ) -> dict: + """ + Computes recommended action based on hd_score_m1 and returns relevant details. + """ + + score_threshold = 1200 + + # Compute recommended_action + try: + recommended_action = ( + "Decline Application" + if hd_score_m1 > score_threshold + else "Pass Application" + ) + logging.info(f"recommended_action: {recommended_action}") + except Exception as e: + logging.error(f"Error assigning recommended_action: {e}") + return {} + + # Compute description + try: + if hd_score_m1 > score_threshold: + description = ( + f"HD Fraud Score M1 is above the risk threshold {score_threshold}, " + f"Recommended action: Decline Application" + ) + else: + description = ( + f"HD Fraud Score M1 is below the risk threshold {score_threshold}, " + f"Recommended action: Pass Application" + ) + logging.info(f"description: {description}") + except Exception as e: + logging.error(f"Error assigning description: {e}") + return {} + + # Compute action_reasoncode + try: + # For multiple checks, you might iterate over a dictionary. For now, a single check suffices: + if hd_score_m1 > score_threshold: + hd_action_reasoncode = "M1 Triggered" + else: + hd_action_reasoncode = "Pass" + + logging.info(f"action_reasoncode: {hd_action_reasoncode}") + except Exception as e: + logging.error(f"Error compiling action_reasoncode: {e}") + return {} + + return { + "hd_score_m1": hd_score_m1, + "recommended_action": recommended_action, + "description": description, + "hd_action_reasoncode": hd_action_reasoncode, + } diff --git a/request_schema.json b/request_schema.json index 0967ef4..a74b35a 100644 --- a/request_schema.json +++ b/request_schema.json @@ -1 +1,11 @@ -{} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "hd_score_m1": { + "type": ["number", "null"], + "description": "HD Fraud Score M1 value." + } + }, + "required": [] +} diff --git a/response_schema.json b/response_schema.json index 0967ef4..269d1d6 100644 --- a/response_schema.json +++ b/response_schema.json @@ -1 +1,23 @@ -{} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "hd_score_m1": { + "type": ["number", "null"], + "description": "HD Fraud Score M1" + }, + "recommended_action": { + "type": ["string", "null"], + "description": "Outcome of the score check (Pass or Decline)" + }, + "description": { + "type": ["string", "null"], + "description": "Explanation or summary of the recommended action" + }, + "hd_action_reasoncode": { + "type": ["string", "null"], + "description": "Reason code describing why the recommended action was chosen" + } + }, + "required": [] +} \ No newline at end of file