RainPoo commited on
Commit
18b9ae2
Β·
1 Parent(s): e734216

docs: README.md

Browse files
README.md CHANGED
@@ -23,13 +23,10 @@ The project follows a clean, **layered monolith architecture**:
23
  src/
24
  β”œβ”€β”€ domain/ # Core business logic and entities
25
  β”œβ”€β”€ service/ # Use cases and business rules
26
- β”œβ”€β”€ frontend/ # UI and API interfaces
27
- └── utils/ # Helper functions and utilities
28
  tests/
29
  └── integration/ # Integration tests
30
- .gitignore # Git ignore file
31
- README.md # Project documentation
32
- requirements.txt # Dependencies
33
  ```
34
 
35
  ### Key Components
@@ -39,7 +36,7 @@ requirements.txt # Dependencies
39
  - DeepFace for emotion analysis
40
  - Google Speech-to-Text for audio transcription
41
  - LlamaParse for resume parsing
42
- - **Frontend Layer**: Gradio-based user interface
43
  - **Utils**: Helper functions and utilities
44
 
45
  ## Technologies Used
 
23
  src/
24
  β”œβ”€β”€ domain/ # Core business logic and entities
25
  β”œβ”€β”€ service/ # Use cases and business rules
26
+ β”œβ”€β”€ utils/ # Helper functions and utilities
27
+ └── app.py # Frontend interface
28
  tests/
29
  └── integration/ # Integration tests
 
 
 
30
  ```
31
 
32
  ### Key Components
 
36
  - DeepFace for emotion analysis
37
  - Google Speech-to-Text for audio transcription
38
  - LlamaParse for resume parsing
39
+ - **Frontend Interface**: Gradio-based user interface
40
  - **Utils**: Helper functions and utilities
41
 
42
  ## Technologies Used
src/service/interview_analyzer.py CHANGED
@@ -1,32 +1,32 @@
1
- from src.domain.enums.file_types import VideoFileType
2
- from src.domain.enums.emotion_types import EmotionType
3
- from src.domain.entities.interview import Interview
4
- from typing import Dict, List
5
-
6
-
7
- class InterviewAnalyzer:
8
- def validate_video(self, video_path: str) -> bool:
9
- file_extension = video_path[video_path.rfind(".") :]
10
- return VideoFileType.validate_format(file_extension)
11
-
12
- def analyze_emotions(
13
- self, emotion_data: Dict[str, float]
14
- ) -> Dict[EmotionType, float]:
15
- analyzed_emotions = {}
16
- for emotion_name, score in emotion_data.items():
17
- try:
18
- emotion_type = EmotionType(emotion_name.lower())
19
- analyzed_emotions[emotion_type] = score
20
- except ValueError:
21
- continue
22
- return analyzed_emotions
23
-
24
- def get_dominant_emotion(
25
- self, emotion_scores: Dict[EmotionType, float]
26
- ) -> EmotionType:
27
- return max(emotion_scores.items(), key=lambda x: x[1])[0]
28
-
29
- def is_positive_response(self, emotion_scores: Dict[EmotionType, float]) -> bool:
30
- positive_emotions = EmotionType.get_positive_emotions()
31
- dominant_emotion = self.get_dominant_emotion(emotion_scores)
32
- return dominant_emotion in positive_emotions
 
1
+ # from src.domain.enums.file_types import VideoFileType
2
+ # from src.domain.enums.emotion_types import EmotionType
3
+ # from src.domain.entities.interview import Interview
4
+ # from typing import Dict, List
5
+ #
6
+ #
7
+ # class InterviewAnalyzer:
8
+ # def validate_video(self, video_path: str) -> bool:
9
+ # file_extension = video_path[video_path.rfind(".") :]
10
+ # return VideoFileType.validate_format(file_extension)
11
+ #
12
+ # def analyze_emotions(
13
+ # self, emotion_data: Dict[str, float]
14
+ # ) -> Dict[EmotionType, float]:
15
+ # analyzed_emotions = {}
16
+ # for emotion_name, score in emotion_data.items():
17
+ # try:
18
+ # emotion_type = EmotionType(emotion_name.lower())
19
+ # analyzed_emotions[emotion_type] = score
20
+ # except ValueError:
21
+ # continue
22
+ # return analyzed_emotions
23
+ #
24
+ # def get_dominant_emotion(
25
+ # self, emotion_scores: Dict[EmotionType, float]
26
+ # ) -> EmotionType:
27
+ # return max(emotion_scores.items(), key=lambda x: x[1])[0]
28
+ #
29
+ # def is_positive_response(self, emotion_scores: Dict[EmotionType, float]) -> bool:
30
+ # positive_emotions = EmotionType.get_positive_emotions()
31
+ # dominant_emotion = self.get_dominant_emotion(emotion_scores)
32
+ # return dominant_emotion in positive_emotions
tests/conftest.py CHANGED
@@ -1,14 +1,14 @@
1
- import sys
2
- import pytest
3
-
4
-
5
- # each test runs on cwd to its temp dir
6
- @pytest.fixture(autouse=True)
7
- def go_to_tmpdir(request):
8
- # Get the fixture dynamically by its name.
9
- tmpdir = request.getfixturevalue("tmpdir")
10
- # ensure local test created packages can be imported
11
- sys.path.insert(0, str(tmpdir))
12
- # Chdir only for the duration of the test.
13
- with tmpdir.as_cwd():
14
- yield
 
1
+ # import sys
2
+ # import pytest
3
+ #
4
+ #
5
+ # # each test runs on cwd to its temp dir
6
+ # @pytest.fixture(autouse=True)
7
+ # def go_to_tmpdir(request):
8
+ # # Get the fixture dynamically by its name.
9
+ # tmpdir = request.getfixturevalue("tmpdir")
10
+ # # ensure local test created packages can be imported
11
+ # sys.path.insert(0, str(tmpdir))
12
+ # # Chdir only for the duration of the test.
13
+ # with tmpdir.as_cwd():
14
+ # yield
tests/test_base.py CHANGED
@@ -1,5 +1,5 @@
1
- from project_name.base import NAME
2
-
3
-
4
- def test_base():
5
- assert NAME == "project_name"
 
1
+ # from project_name.base import NAME
2
+ #
3
+ #
4
+ # def test_base():
5
+ # assert NAME == "project_name"