

from transcription import transcribe_large_audio
from evaluation_report import candidate_evaluation
from graphs import creating_graphs
import json
import re
import time
import logging
from helpers import *

logger = logging.getLogger("pm2_logger")
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

def json_report(audio_path):
    print(f"++++++++++INSIDE JSON REPORT METHOD +++++++++++++")
    retries = 5
    trans = transcribe_large_audio(audio_path)
    logger.info("Transcription done")
    for attempt in range(retries):
        try:
            
            report_response = candidate_evaluation(trans)
            print(f"+++++++++++++REPORT RESPONSE: {report_response}++++++++++++++++++++")
            logger.info("Evaluation done")

            with open("reponse.json", "w") as file:
                json.dump(report_response, file, indent=4)
            

            data = markdown_to_json(report_response)
            logger.info("json formated")
            strengths, weaknesses = classify_technical_skills(data)
            graphs = creating_graphs(data, audio_path)
            # converted_json = convert_keys_to_camel_case(graphs)
            # json_graph = json.dumps(converted_json, indent=4)

            data['strengths'] = strengths
            data['weaknesses'] = weaknesses
            data['graphs'] = graphs

            with open("final.json", "w") as file:
                json.dump(data, file, indent=4)

            logger.info("Structured Interview-candidate wise")
            print(f"+++++++++++++FINAL JSON: {data}++++++++++++++++++++")
            return data
        except Exception as e:
            logger.info(f"Error occurred: {e}")
            if attempt < retries - 1:
                logger.info("Retrying...")
                time.sleep(2)  # Optional: Wait before retrying
            else:
                logger.info("Max retries reached. Exiting.")
                raise


