docs: README.md
Browse files- README.md +3 -6
- src/service/interview_analyzer.py +32 -32
- tests/conftest.py +14 -14
- tests/test_base.py +5 -5
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 |
-
βββ
|
27 |
-
βββ
|
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
|
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 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
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
|
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 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
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
|
tests/test_base.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
from project_name.base import NAME
|
2 |
-
|
3 |
-
|
4 |
-
def test_base():
|
5 |
-
|
|
|
1 |
+
# from project_name.base import NAME
|
2 |
+
#
|
3 |
+
#
|
4 |
+
# def test_base():
|
5 |
+
# assert NAME == "project_name"
|