Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -929,7 +929,7 @@ def process_pdf(file):
|
|
| 929 |
formatted_skills = format_skill_cards(joined_skills)
|
| 930 |
formatted_ccog = format_ccog_card(result_data['ccoq_levels'])
|
| 931 |
formatted_esco_levels = format_esco_card(result_data['esco_levels'])
|
| 932 |
-
formatted_esco_skills = format_skill_cards(
|
| 933 |
|
| 934 |
|
| 935 |
return (
|
|
@@ -1015,9 +1015,9 @@ def generate_word_document(json_path: Optional[str]) -> str:
|
|
| 1015 |
"responsibilities": "No responsibilities extracted.",
|
| 1016 |
"classified_job_family": "No job family identified.",
|
| 1017 |
"qualification": ["No qualification information available."],
|
| 1018 |
-
"
|
| 1019 |
"skills": {"skills": [{"skill_name": "No skills identified", "description": "", "code": ""}]},
|
| 1020 |
-
"
|
| 1021 |
}
|
| 1022 |
|
| 1023 |
# Safely build the result dictionary with fallbacks
|
|
@@ -1027,10 +1027,10 @@ def generate_word_document(json_path: Optional[str]) -> str:
|
|
| 1027 |
"responsibilities": data.get("responsibilities", default_values["responsibilities"]),
|
| 1028 |
"classified_job_family": data.get("job_family", default_values["classified_job_family"]),
|
| 1029 |
"qualification": data.get("qualification", default_values["qualification"]),
|
| 1030 |
-
"
|
| 1031 |
"skills": data.get("skills", default_values["skills"]),
|
| 1032 |
-
"
|
| 1033 |
-
"
|
| 1034 |
"esco_levels": data.get("esco_levels", {})
|
| 1035 |
}
|
| 1036 |
|
|
@@ -1076,32 +1076,35 @@ def generate_word_document(json_path: Optional[str]) -> str:
|
|
| 1076 |
if isinstance(skills_list, dict):
|
| 1077 |
skills_list = skills_list.get("skills", [])
|
| 1078 |
for skill in skills_list:
|
| 1079 |
-
doc.
|
| 1080 |
-
|
| 1081 |
-
add_skill_detail("
|
| 1082 |
add_skill_detail("Type:", skill.get('type', 'N/A'))
|
|
|
|
| 1083 |
add_skill_detail("Proficiency Level:", skill.get('proficiency_level', 'N/A'))
|
| 1084 |
add_skill_detail("Distinctive Elements:", skill.get('distinctive_elements', 'N/A'))
|
| 1085 |
add_skill_detail("Resume Signals:", skill.get('resume_signals', 'N/A'))
|
| 1086 |
add_skill_detail("Assessment Method:", skill.get('assessment_method', 'N/A'))
|
| 1087 |
|
|
|
|
| 1088 |
doc.add_heading('Suggested Qualifications', level=2)
|
| 1089 |
for item in result['qualification']:
|
| 1090 |
-
doc.add_paragraph(item, style='
|
| 1091 |
|
| 1092 |
doc.add_heading('Suggested Interview Questions', level=2)
|
| 1093 |
-
for item in result['
|
| 1094 |
-
doc.add_paragraph(item, style='
|
| 1095 |
|
| 1096 |
|
| 1097 |
-
if result["
|
| 1098 |
doc.add_heading('UN Common Classification of Occupational Groups', level=2)
|
| 1099 |
-
for key, value in result["
|
| 1100 |
paragraph = doc.add_paragraph()
|
| 1101 |
run = paragraph.add_run(f"{key}: ")
|
| 1102 |
run.bold = True
|
| 1103 |
paragraph.add_run(str(value))
|
| 1104 |
|
|
|
|
| 1105 |
if result["esco_levels"]:
|
| 1106 |
doc.add_heading('ESCO Framework Occupational Groups', level=2)
|
| 1107 |
for key, value in result["esco_levels"].items():
|
|
@@ -1113,20 +1116,22 @@ def generate_word_document(json_path: Optional[str]) -> str:
|
|
| 1113 |
|
| 1114 |
|
| 1115 |
# Skills (ESCO)
|
| 1116 |
-
doc.add_heading('Mapped
|
| 1117 |
-
esco_skills_list = result['
|
| 1118 |
if isinstance(esco_skills_list, dict):
|
| 1119 |
esco_skills_list = esco_skills_list.get("skills", [])
|
| 1120 |
for skill in esco_skills_list:
|
| 1121 |
-
doc.
|
| 1122 |
-
|
| 1123 |
-
add_skill_detail("
|
| 1124 |
add_skill_detail("Type:", skill.get('type', 'N/A'))
|
|
|
|
| 1125 |
add_skill_detail("Proficiency Level:", skill.get('proficiency_level', 'N/A'))
|
| 1126 |
add_skill_detail("Distinctive Elements:", skill.get('distinctive_elements', 'N/A'))
|
| 1127 |
add_skill_detail("Resume Signals:", skill.get('resume_signals', 'N/A'))
|
| 1128 |
add_skill_detail("Assessment Method:", skill.get('assessment_method', 'N/A'))
|
| 1129 |
|
|
|
|
| 1130 |
|
| 1131 |
|
| 1132 |
except Exception as e:
|
|
|
|
| 929 |
formatted_skills = format_skill_cards(joined_skills)
|
| 930 |
formatted_ccog = format_ccog_card(result_data['ccoq_levels'])
|
| 931 |
formatted_esco_levels = format_esco_card(result_data['esco_levels'])
|
| 932 |
+
formatted_esco_skills = format_skill_cards(joined_skills_esco)
|
| 933 |
|
| 934 |
|
| 935 |
return (
|
|
|
|
| 1015 |
"responsibilities": "No responsibilities extracted.",
|
| 1016 |
"classified_job_family": "No job family identified.",
|
| 1017 |
"qualification": ["No qualification information available."],
|
| 1018 |
+
"interview_questions": ["No interview questions generated."],
|
| 1019 |
"skills": {"skills": [{"skill_name": "No skills identified", "description": "", "code": ""}]},
|
| 1020 |
+
"esco_skills": {"skills": [{"skill_name": "No ESCO skills identified", "description": "", "code": ""}]}
|
| 1021 |
}
|
| 1022 |
|
| 1023 |
# Safely build the result dictionary with fallbacks
|
|
|
|
| 1027 |
"responsibilities": data.get("responsibilities", default_values["responsibilities"]),
|
| 1028 |
"classified_job_family": data.get("job_family", default_values["classified_job_family"]),
|
| 1029 |
"qualification": data.get("qualification", default_values["qualification"]),
|
| 1030 |
+
"interview_questions": data.get("interview_questions", default_values["interview_questions"]),
|
| 1031 |
"skills": data.get("skills", default_values["skills"]),
|
| 1032 |
+
"esco_skills": data.get("skills_esco", default_values["esco_skills"]),
|
| 1033 |
+
"ccoq_levels": data.get("ccoq_levels", {}),
|
| 1034 |
"esco_levels": data.get("esco_levels", {})
|
| 1035 |
}
|
| 1036 |
|
|
|
|
| 1076 |
if isinstance(skills_list, dict):
|
| 1077 |
skills_list = skills_list.get("skills", [])
|
| 1078 |
for skill in skills_list:
|
| 1079 |
+
doc.add_heading(f"• {skill.get('skill_name', 'Unnamed Skill')}", level=3)
|
| 1080 |
+
add_skill_detail("Description:", skill.get('skill_description', 'N/A'))
|
| 1081 |
+
add_skill_detail("Code:", skill.get('skill_code', 'N/A'))
|
| 1082 |
add_skill_detail("Type:", skill.get('type', 'N/A'))
|
| 1083 |
+
add_skill_detail("Importance:", skill.get('importance', 'N/A'))
|
| 1084 |
add_skill_detail("Proficiency Level:", skill.get('proficiency_level', 'N/A'))
|
| 1085 |
add_skill_detail("Distinctive Elements:", skill.get('distinctive_elements', 'N/A'))
|
| 1086 |
add_skill_detail("Resume Signals:", skill.get('resume_signals', 'N/A'))
|
| 1087 |
add_skill_detail("Assessment Method:", skill.get('assessment_method', 'N/A'))
|
| 1088 |
|
| 1089 |
+
doc.add_page_break()
|
| 1090 |
doc.add_heading('Suggested Qualifications', level=2)
|
| 1091 |
for item in result['qualification']:
|
| 1092 |
+
doc.add_paragraph(item, style='Body Text')
|
| 1093 |
|
| 1094 |
doc.add_heading('Suggested Interview Questions', level=2)
|
| 1095 |
+
for item in result['interview_questions']:
|
| 1096 |
+
doc.add_paragraph(item, style='Body Text')
|
| 1097 |
|
| 1098 |
|
| 1099 |
+
if result["ccoq_levels"]:
|
| 1100 |
doc.add_heading('UN Common Classification of Occupational Groups', level=2)
|
| 1101 |
+
for key, value in result["ccoq_levels"].items():
|
| 1102 |
paragraph = doc.add_paragraph()
|
| 1103 |
run = paragraph.add_run(f"{key}: ")
|
| 1104 |
run.bold = True
|
| 1105 |
paragraph.add_run(str(value))
|
| 1106 |
|
| 1107 |
+
doc.add_page_break()
|
| 1108 |
if result["esco_levels"]:
|
| 1109 |
doc.add_heading('ESCO Framework Occupational Groups', level=2)
|
| 1110 |
for key, value in result["esco_levels"].items():
|
|
|
|
| 1116 |
|
| 1117 |
|
| 1118 |
# Skills (ESCO)
|
| 1119 |
+
doc.add_heading('Skills (Mapped from ESCO)', level=2)
|
| 1120 |
+
esco_skills_list = result['esco_skills']
|
| 1121 |
if isinstance(esco_skills_list, dict):
|
| 1122 |
esco_skills_list = esco_skills_list.get("skills", [])
|
| 1123 |
for skill in esco_skills_list:
|
| 1124 |
+
doc.add_heading(f"• {skill.get('skill_name', 'Unnamed Skill')}", level=3)
|
| 1125 |
+
add_skill_detail("Description:", skill.get('skill_description', 'N/A'))
|
| 1126 |
+
add_skill_detail("Code:", skill.get('skill_code', 'N/A'))
|
| 1127 |
add_skill_detail("Type:", skill.get('type', 'N/A'))
|
| 1128 |
+
add_skill_detail("Importance:", skill.get('importance', 'N/A'))
|
| 1129 |
add_skill_detail("Proficiency Level:", skill.get('proficiency_level', 'N/A'))
|
| 1130 |
add_skill_detail("Distinctive Elements:", skill.get('distinctive_elements', 'N/A'))
|
| 1131 |
add_skill_detail("Resume Signals:", skill.get('resume_signals', 'N/A'))
|
| 1132 |
add_skill_detail("Assessment Method:", skill.get('assessment_method', 'N/A'))
|
| 1133 |
|
| 1134 |
+
doc.add_page_break()
|
| 1135 |
|
| 1136 |
|
| 1137 |
except Exception as e:
|