import random import requests from bs4 import BeautifulSoup from .constants import API_KEY def remove_html_tags(text): text = text.replace("

", "\n") soup = BeautifulSoup(text, "html.parser") for item in soup.find_all("li"): item_text = item.get_text() item.replace_with(f"\n- {item_text}") cleaned_text = soup.get_text().strip('"').replace('\\"', '"') return cleaned_text def api_call(url, payload, headers=None): headers = { "x-api-key": API_KEY, "Content-Type": "application/json" } try: response = requests.post(url, headers=headers, json=payload) return response except Exception as e: print(f"Error: {str(e)}") return "Error: Unable to reach the API or invalid response received." def generate_session_id(): return random.randint(3000, 20000) def highlight_feedback(feedback_output): if not feedback_output["feedback_by_category"]: return False, [(str(feedback_output["feedback_text"]), None)] return True, [(item["text"], item["category"]) for item in feedback_output["feedback_by_category"]] def show_popup(selected_resume, selected_company, selected_job_description): if selected_resume: return """""" elif selected_company: return """""" elif selected_job_description: return """""" return "" def reset_popup(): return "" def generate_skills_evaluation_markdown(skills_data): job_skills = skills_data["job_skills"] candidate_skills = skills_data["candidate_skills"]["proven_skills"] unproven_skills = skills_data["candidate_skills"]["mentioned_but_unproven_skills"] missing_skills = skills_data["candidate_skills"]["missing_skills"] total_job_skills = len(job_skills) proven_skills_count = len(candidate_skills) unproven_skills_count = len(unproven_skills) missing_skills_count = len(missing_skills) html = "
" html += ( f"

The job requires {total_job_skills} skills, and the candidate has {proven_skills_count} proven skills. " f"There are {unproven_skills_count} unproven skills and {missing_skills_count} missing skills.


" ) html += "
" return html