|
1 | 1 | # job_recommendation_system.py
|
2 | 2 |
|
3 |
| -from neo4j_model import Neo4jModel |
4 |
| -from resume_processor import ResumeProcessor |
5 |
| -from retrieval_engine import RetrievalEngine |
6 |
| -from recommendation_generator import RecommendationGenerator |
7 |
| -from view import CLIView |
8 |
| -import sys |
| 3 | +import logging |
9 | 4 |
|
10 |
| -def main(): |
11 |
| - |
12 |
| - |
13 |
| - # Redirect standard output to a file |
14 |
| - sys.stdout = open('output.log', 'w') |
15 |
| - |
16 |
| - # Your code here |
17 |
| - print("Lots of output") |
| 5 | +from .neo4j_model import Neo4jModel |
| 6 | +from .recommendation_generator import RecommendationGenerator |
| 7 | +from .resume_processor import ResumeProcessor |
| 8 | +from .retrieval_engine import RetrievalEngine |
| 9 | +from .view import CLIView |
18 | 10 |
|
19 | 11 |
|
| 12 | +def job_recommend(resume_text, user_id): |
20 | 13 | # Setup Logging
|
21 |
| - import logging |
22 | 14 | logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
23 | 15 | logger = logging.getLogger(__name__)
|
24 |
| - |
| 16 | + |
| 17 | + # Get Resume Input from User |
| 18 | + if not resume_text.strip(): |
| 19 | + logger.error(f'No resume text provided, user_id: {user_id}.') |
| 20 | + return 'Error: No resume text provided.' |
| 21 | + |
25 | 22 | # Neo4j Connection Details
|
26 | 23 | NEO4J_URI = "neo4j+ssc://7bf5a48e.databases.neo4j.io" # Replace with your Neo4j URI
|
27 |
| - NEO4J_USERNAME = "neo4j" # Replace with your Neo4j username |
28 |
| - NEO4J_PASSWORD = "oxsK7V5_86emZlYQlvCfQHfVWS95wXz29OhtU8GAdFc" # Replace with your Neo4j password |
| 24 | + NEO4J_USERNAME = "neo4j" # Replace with your Neo4j username |
| 25 | + NEO4J_PASSWORD = "oxsK7V5_86emZlYQlvCfQHfVWS95wXz29OhtU8GAdFc" # Replace with your Neo4j password |
29 | 26 |
|
30 | 27 | # Initialize Model
|
31 | 28 | neo4j_model = Neo4jModel(
|
32 | 29 | uri=NEO4J_URI,
|
33 | 30 | username=NEO4J_USERNAME,
|
34 | 31 | password=NEO4J_PASSWORD
|
35 | 32 | )
|
36 |
| - |
| 33 | + |
| 34 | + node_label = "JTitle" # Adjust as needed; could be dynamic based on user input or other criteria |
| 35 | + |
37 | 36 | # Initialize Controller Components
|
38 | 37 | resume_processor = ResumeProcessor()
|
39 | 38 | retrieval_engine = RetrievalEngine(resume_processor, neo4j_model)
|
40 | 39 | recommendation_generator = RecommendationGenerator()
|
41 |
| - |
| 40 | + |
42 | 41 | # Initialize View
|
43 | 42 | view = CLIView()
|
44 |
| - |
45 |
| - # Get Resume Input from User |
46 |
| - resume_text = view.get_resume_input() |
47 |
| - |
48 |
| - if not resume_text.strip(): |
49 |
| - logger.error("No resume text provided.") |
50 |
| - print("Error: No resume text provided.") |
51 |
| - return |
52 |
| - |
53 |
| - # Perform Mixed Retrieval for 'JD' Node Label |
54 |
| - node_label = "JD" # Adjust as needed; could be dynamic based on user input or other criteria |
| 43 | + |
| 44 | + # Perform Mixed Retrieval |
55 | 45 | similar_docs, graph_results = retrieval_engine.perform_mixed_retrieval(resume_text, node_label=node_label)
|
56 |
| - |
| 46 | + |
57 | 47 | if not similar_docs and not graph_results:
|
58 |
| - print("No job recommendations found based on your resume.") |
59 |
| - return |
60 |
| - |
| 48 | + return 'No job recommendations found based on your resume.' |
| 49 | + |
61 | 50 | # Generate Recommendations
|
62 | 51 | try:
|
63 | 52 | recommendations = recommendation_generator.generate_recommendations(similar_docs, graph_results)
|
64 | 53 | except Exception as e:
|
65 |
| - print("Error: Failed to generate job recommendations.") |
66 |
| - return |
67 |
| - |
68 |
| - # Display Recommendations |
69 |
| - view.display_recommendations(recommendations) |
| 54 | + return 'Error: Failed to generate job recommendations.' |
70 | 55 |
|
71 |
| - # Close the file |
72 |
| - sys.stdout.close() |
73 |
| - |
74 |
| -if __name__ == "__main__": |
75 |
| - main() |
| 56 | + # Display Recommendations |
| 57 | + return view.display_recommendations(recommendations) |
0 commit comments