66 lines
1.8 KiB
Python
Raw Normal View History

2025-04-09 18:47:39 +00:00
import logging
2025-06-13 18:01:40 +00:00
from typing import Dict
from pre_processing import pre_processing
from processing import processing
from post_processing import post_processing
from parse_report import extract_model_variables
2025-04-09 16:45:43 +00:00
2025-04-09 18:47:39 +00:00
# Configure logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s - %(message)s",
)
logger = logging.getLogger(__name__)
2025-06-13 18:01:40 +00:00
def __main__(application_id: str, creditBureau: dict) -> Dict:
"""
Process a single application record via the scoring pipeline.
Returns:
A dict containing:
- prediction: float
- grade: str
2025-06-18 17:12:25 +00:00
- reason_codes: list or None
2025-06-13 18:01:40 +00:00
"""
record = extract_model_variables(creditBureau)
2025-06-18 10:47:36 +00:00
if not record or all(v is None for v in record.values()):
2025-06-18 10:15:49 +00:00
final_result = {
'application_id': application_id,
'prediction': 0.99,
'grade': 'M14',
2025-06-18 17:12:25 +00:00
"reason_codes": [{
"code": None,
"rank": None,
"description": "Lack of account information"
}]
2025-06-18 10:15:49 +00:00
}
2025-06-18 17:12:25 +00:00
logger.info(
f"final_result (early exit due to missing or empty extracted variables): {final_result}")
2025-06-18 10:15:49 +00:00
return final_result
2025-06-13 18:01:40 +00:00
processed = pre_processing(record)
out = processing(processed)
2025-06-18 17:12:25 +00:00
final = post_processing(out, record)
2025-06-13 18:01:40 +00:00
final_result = {
'application_id': application_id,
'prediction': out['prediction'],
'grade': final['grade'],
2025-06-18 17:12:25 +00:00
'reason_codes': final['reason_codes'],
2025-06-13 18:01:40 +00:00
}
logger.info(f"final_result: {final_result}")
return final_result
2025-06-18 10:15:49 +00:00
2025-06-13 18:01:40 +00:00
if __name__ == "__main__":
2025-06-18 17:12:25 +00:00
import json
import sys
2025-06-13 18:01:40 +00:00
with open(sys.argv[1]) as f:
data = json.load(f)
2025-06-18 17:12:25 +00:00
__main__(application_id=data["application_id"], creditBureau=data)