def get_autoapproval_status()

in microservices/upload_service/src/utils/autoapproval.py [0:0]


def get_autoapproval_status(validation_score, extraction_score, matching_score,
                            document_label, document_type):
  """
  Used to calculate the approval status of a document depending on the
  validation, extraction and Matching Score
  Input:
  validation_score : Validation Score
  extraction_score : Extraction Score
  matching_score : Matching Score
  Output:
  status : Accept/Reject or Review
  flag : Yes or no
  """

  data = AUTO_APPROVAL_MAPPING

  Logger.info(f"Validation_Score:{validation_score}, Extraction_score :"
              f"{extraction_score},Matching_Score:{matching_score},"
              f"DocumentLabel:{document_label},DocumentType:{document_type}")
  if document_type in ("supporting_documents", "claims_form"):
    if document_type == "claims_form":
      if extraction_score == 0.0:
        flag = "no"
        status = STATUS_REVIEW
        return status, flag

    for i in data[document_label]:
      if i != "Reject":
        v_limit = data[document_label][i]["Validation_Score"]
        e_limit = data[document_label][i]["Extraction_Score"]
        m_limit = data[document_label][i]["Matching_Score"]
        print(v_limit, e_limit, m_limit)

        if (validation_score > v_limit and extraction_score > e_limit and
            matching_score > m_limit):
          flag = "yes"
          status = STATUS_APPROVED
          return status, flag

      else:
        v_limit = data[document_label][i]["Validation_Score"]
        e_limit = data[document_label][i]["Extraction_Score"]
        m_limit = data[document_label][i]["Matching_Score"]
        flag = "no"

        if (validation_score > v_limit and extraction_score > e_limit and
            matching_score > m_limit):
          status = STATUS_REVIEW
          Logger.info(f"Status :{status}")
          return status, flag

        else:
          status = STATUS_REJECTED
          Logger.info(f"Status :{status}")
          return status, flag

  elif document_type == "application_form":
    if extraction_score == 0.0:
      flag = "no"
      status = STATUS_REVIEW
      return status, flag

    for i in data[document_label]:
      if i != "Reject":
        e_limit = data[document_label][i]["Extraction_Score"]
        if extraction_score > e_limit:
          flag = "yes"
          status = STATUS_APPROVED
          Logger.info(f"Status :{status}")
          return status, flag

      else:
        e_limit = data[document_label][i]["Extraction_Score"]
        flag = "no"
        if extraction_score > e_limit:
          status = STATUS_REVIEW
          Logger.info(f"Status :{status}")
          return status, flag

        else:
          status = STATUS_REJECTED
          Logger.info(f"Status :{status}")
          return status, flag

  else:
    status = STATUS_REVIEW
    Logger.info(f"Status :{status}")
    return status, flag