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