File size: 1,306 Bytes
a9a45af
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import pandas as pd
from datetime import datetime
import os 
import yaml

def save_result(jd_file, cv_file, weighted_score, section_scores, RESULTS_FILE="results.csv"):
    record = {
        "JD": os.path.basename(jd_file),
        "Resume": os.path.basename(cv_file),
        "Similarity Score": float(weighted_score),
        "Timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    }

    for sec, val in section_scores.items():
        record[f"{sec} Score"] = round(val, 4)

    if os.path.exists(RESULTS_FILE):
        df = pd.read_csv(RESULTS_FILE)
        df = pd.concat([df, pd.DataFrame([record])], ignore_index=True)
    else:
        df = pd.DataFrame([record])

    df.to_csv(RESULTS_FILE, index=False)
    print(f"Result saved to {RESULTS_FILE}")

def list_ranked_results(jd_name=None, results_file='results.csv', sort=False, top_k=None):
    if not os.path.exists(results_file):
        print("No results found.")
        return

    df = pd.read_csv(results_file)

    if jd_name:
        df = df[df["JD"] == jd_name]

    if sort:
        df = df.sort_values(by="Similarity Score", ascending=False)

    if top_k:
        df = df.head(top_k)
    
    print(df.to_string(index=False))

def load_weights_from_file(path):
    with open(path, 'r') as f:
        return yaml.safe_load(f)