shl-recommender / utils.py
hirdeshds's picture
Upload 33 files
e4fd939 verified
Raw
History Blame Contribute Delete
2.17 kB
def get_latest_user_message(messages):
"""
Returns the latest user message.
"""
for message in reversed(messages):
if message.role == "user":
return message.content
return ""
def get_conversation_text(messages):
"""
Converts the conversation into plain text.
"""
conversation = []
for message in messages:
conversation.append(
f"{message.role}: {message.content}"
)
return "\n".join(conversation)
KEY_TO_CODE = {
"Ability & Aptitude": "A",
"Personality & Behavior": "P",
"Biodata & Situational Judgment": "B",
"Knowledge & Skills": "K",
"Simulations": "S",
"Competencies": "C",
"Development & 360": "D",
"Assessment Exercises": "E"
}
def get_test_type(item):
name = item.get("name", "").lower()
keys = item.get("keys") or []
# SVAR exception
if "svar" in name:
return "K"
# Development & 360 exception
if "Development & 360" in keys:
return "D"
key_set = set(keys)
if len(key_set) == 1:
single_key = list(key_set)[0]
return KEY_TO_CODE.get(single_key, "K")
# Combinations:
if { "Competencies", "Knowledge & Skills" }.issubset(key_set):
return "C, K"
if { "Personality & Behavior", "Competencies" }.issubset(key_set):
return "P,C"
if { "Biodata & Situational Judgment", "Simulations" }.issubset(key_set):
return "B,S"
if { "Ability & Aptitude", "Simulations" }.issubset(key_set):
return "A,S"
if { "Knowledge & Skills", "Simulations" }.issubset(key_set):
return "K,S"
# Fallback
mapped_codes = [KEY_TO_CODE.get(k) for k in keys if k in KEY_TO_CODE]
if mapped_codes:
return ",".join(mapped_codes)
return "K"
import re
def clean_catalog_name(name: str) -> str:
n = name.lower()
while True:
next_n = re.sub(r'\s*\([^)]*\)\s*$', '', n)
if next_n == n:
break
n = next_n
n = re.sub(r'\s+new\s*$', '', n)
return n.strip()