QuentinL52 commited on
Commit
037629b
·
verified ·
1 Parent(s): 1e52c25

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +25 -2
main.py CHANGED
@@ -12,9 +12,15 @@ from src.services.cv_service import CVParsingService
12
  from src.services.interview_service import InterviewProcessor
13
  from src.services.analysis_service import AnalysisService
14
 
 
 
 
 
15
  os.environ['HOME'] = '/tmp'
16
  os.makedirs('/tmp/feedbacks', exist_ok=True)
17
 
 
 
18
  app = FastAPI(
19
  title="AIrh Interview Assistant",
20
  description="API pour l'analyse de CV et la simulation d'entretiens d'embauche avec analyse asynchrone.",
@@ -72,6 +78,23 @@ async def health_check():
72
  }
73
  return HealthCheck(services=services)
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  @app.post("/parse-cv/", tags=["CV Parsing"])
76
  async def parse_cv(file: UploadFile = File(...)):
77
  if file.content_type != "application/pdf":
@@ -89,7 +112,7 @@ async def parse_cv(file: UploadFile = File(...)):
89
  os.remove(tmp_path)
90
 
91
  return result
92
-
93
  @app.post("/simulate-interview/", tags=["Interview"])
94
  async def simulate_interview(request: InterviewRequest, background_tasks: BackgroundTasks):
95
  processor = InterviewProcessor(
@@ -114,7 +137,7 @@ async def simulate_interview(request: InterviewRequest, background_tasks: Backgr
114
  )
115
 
116
  return {"response": response_content}
117
-
118
  @app.get("/get-feedback/{user_id}", response_model=Feedback, tags=["Analysis"])
119
  async def get_feedback(user_id: str):
120
  feedback_path = f"/tmp/feedbacks/{user_id}.json"
 
12
  from src.services.interview_service import InterviewProcessor
13
  from src.services.analysis_service import AnalysisService
14
 
15
+ from services.graph_service import GraphConversationManager
16
+ from fastapi.responses import JSONResponse
17
+ from bson import ObjectId
18
+
19
  os.environ['HOME'] = '/tmp'
20
  os.makedirs('/tmp/feedbacks', exist_ok=True)
21
 
22
+ graph_manager = GraphConversationManager()
23
+
24
  app = FastAPI(
25
  title="AIrh Interview Assistant",
26
  description="API pour l'analyse de CV et la simulation d'entretiens d'embauche avec analyse asynchrone.",
 
78
  }
79
  return HealthCheck(services=services)
80
 
81
+ class MongoJSONEncoder(json.JSONEncoder):
82
+ def default(self, o):
83
+ if isinstance(o, ObjectId):
84
+ return str(o)
85
+ return super().default(o)
86
+
87
+ @app.post("/simulate-interview/")
88
+ async def simulate_interview(request: Request):
89
+ try:
90
+ payload = await request.json()
91
+ result = graph_manager.invoke(payload)
92
+ return JSONResponse(content=result)
93
+
94
+ except Exception as e:
95
+ logger.error(f"Error in simulate-interview endpoint: {e}", exc_info=True)
96
+ return JSONResponse(content={"error": "An internal error occurred."}, status_code=500)
97
+
98
  @app.post("/parse-cv/", tags=["CV Parsing"])
99
  async def parse_cv(file: UploadFile = File(...)):
100
  if file.content_type != "application/pdf":
 
112
  os.remove(tmp_path)
113
 
114
  return result
115
+ '''
116
  @app.post("/simulate-interview/", tags=["Interview"])
117
  async def simulate_interview(request: InterviewRequest, background_tasks: BackgroundTasks):
118
  processor = InterviewProcessor(
 
137
  )
138
 
139
  return {"response": response_content}
140
+ '''
141
  @app.get("/get-feedback/{user_id}", response_model=Feedback, tags=["Analysis"])
142
  async def get_feedback(user_id: str):
143
  feedback_path = f"/tmp/feedbacks/{user_id}.json"