Muhammad541 commited on
Commit
ed32658
·
verified ·
1 Parent(s): 0c0efde

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -11
app.py CHANGED
@@ -8,14 +8,14 @@ from sklearn.metrics.pairwise import cosine_similarity
8
  import time
9
  import os
10
 
11
- # Set cache directory explicitly (optional, as Dockerfile ENV should handle this)
12
  os.environ["HF_HOME"] = "/app/cache"
13
  os.environ["TRANSFORMERS_CACHE"] = "/app/cache"
14
 
15
  app = FastAPI()
16
 
17
- # Load datasets (updated path to match Dockerfile)
18
- DATA_DIR = "/app/data/" # Changed from "data/" to "/app/data/"
19
  job_df = pd.read_csv(os.path.join(DATA_DIR, "Updated_Job_Posting_Dataset.csv"), encoding="latin1")
20
  course_df = pd.read_csv(os.path.join(DATA_DIR, "coursera_course_dataset_v2_no_null.csv"))
21
  coding_df = pd.read_csv(os.path.join(DATA_DIR, "Software Questions.csv"), encoding="latin1")
@@ -88,19 +88,27 @@ def recommend_jobs(skills):
88
  def read_root():
89
  return {"message": "Skill Assessment API"}
90
 
 
 
 
 
 
 
 
 
 
 
 
91
  @app.post("/assess")
92
  def assess_skills(user_input: UserInput):
93
- # Extract user data from request
94
  user_name = user_input.name
95
  user_skills = user_input.skills
96
 
97
  if not user_skills:
98
  raise HTTPException(status_code=400, detail="Skills list cannot be empty")
99
 
100
- # Fetch coding challenges based on provided skills
101
  challenges = get_coding_challenges(user_skills)
102
 
103
- # Evaluate skills
104
  user_scores = {}
105
  for skill, challenge_list in challenges.items():
106
  if not challenge_list:
@@ -111,7 +119,6 @@ def assess_skills(user_input: UserInput):
111
  num_questions = len(challenge_list)
112
 
113
  if user_input.answers and skill in user_input.answers:
114
- # Use provided answers
115
  for challenge in challenge_list:
116
  question = challenge["question"]
117
  if question in user_input.answers[skill]:
@@ -121,18 +128,15 @@ def assess_skills(user_input: UserInput):
121
  score = evaluate_coding_with_time(user_code, correct_code, start_time)
122
  total_score += score
123
  else:
124
- total_score += 0 # No answer provided for this question
125
  else:
126
- # No answers provided; assign default score (50% per question)
127
  total_score = 50 * num_questions
128
 
129
  user_scores[skill] = round(total_score / num_questions, 2)
130
 
131
- # Proficiency levels
132
  proficiency_levels = {skill: get_proficiency_level(score) for skill, score in user_scores.items()}
133
  weak_skills = [skill for skill, level in proficiency_levels.items() if level in ["Beginner", "Intermediate"]]
134
 
135
- # Recommendations
136
  courses = recommend_courses(weak_skills)
137
  jobs = recommend_jobs(user_skills)
138
 
 
8
  import time
9
  import os
10
 
11
+ # Set cache directory
12
  os.environ["HF_HOME"] = "/app/cache"
13
  os.environ["TRANSFORMERS_CACHE"] = "/app/cache"
14
 
15
  app = FastAPI()
16
 
17
+ # Load datasets
18
+ DATA_DIR = "/app/data/"
19
  job_df = pd.read_csv(os.path.join(DATA_DIR, "Updated_Job_Posting_Dataset.csv"), encoding="latin1")
20
  course_df = pd.read_csv(os.path.join(DATA_DIR, "coursera_course_dataset_v2_no_null.csv"))
21
  coding_df = pd.read_csv(os.path.join(DATA_DIR, "Software Questions.csv"), encoding="latin1")
 
88
  def read_root():
89
  return {"message": "Skill Assessment API"}
90
 
91
+ # New endpoint to provide challenges
92
+ @app.get("/challenges")
93
+ def get_user_challenges(skills: List[str]):
94
+ if not skills:
95
+ raise HTTPException(status_code=400, detail="Skills list cannot be empty")
96
+ challenges = get_coding_challenges(skills)
97
+ # Return only questions (exclude solutions for the user)
98
+ return {
99
+ "challenges": {skill: [challenge["question"] for challenge in challenge_list] for skill, challenge_list in challenges.items()}
100
+ }
101
+
102
  @app.post("/assess")
103
  def assess_skills(user_input: UserInput):
 
104
  user_name = user_input.name
105
  user_skills = user_input.skills
106
 
107
  if not user_skills:
108
  raise HTTPException(status_code=400, detail="Skills list cannot be empty")
109
 
 
110
  challenges = get_coding_challenges(user_skills)
111
 
 
112
  user_scores = {}
113
  for skill, challenge_list in challenges.items():
114
  if not challenge_list:
 
119
  num_questions = len(challenge_list)
120
 
121
  if user_input.answers and skill in user_input.answers:
 
122
  for challenge in challenge_list:
123
  question = challenge["question"]
124
  if question in user_input.answers[skill]:
 
128
  score = evaluate_coding_with_time(user_code, correct_code, start_time)
129
  total_score += score
130
  else:
131
+ total_score += 0
132
  else:
 
133
  total_score = 50 * num_questions
134
 
135
  user_scores[skill] = round(total_score / num_questions, 2)
136
 
 
137
  proficiency_levels = {skill: get_proficiency_level(score) for skill, score in user_scores.items()}
138
  weak_skills = [skill for skill, level in proficiency_levels.items() if level in ["Beginner", "Intermediate"]]
139
 
 
140
  courses = recommend_courses(weak_skills)
141
  jobs = recommend_jobs(user_skills)
142