owenkaplinsky Basti-1995 commited on
Commit
e714817
·
verified ·
1 Parent(s): 6f34672

Delete src/database/context/__init__.py (#1)

Browse files

- Delete src/database/context/__init__.py (b29249c1f25b166a9f8a5942a0996dc4315df703)


Co-authored-by: Sebastian Wefers <Basti-1995@users.noreply.huggingface.co>

Files changed (1) hide show
  1. src/database/context/__init__.py +0 -153
src/database/context/__init__.py DELETED
@@ -1,153 +0,0 @@
1
- from sqlalchemy import (
2
- Column, String, Integer, Float, Enum, DateTime, Text, ForeignKey, JSON
3
- )
4
- from sqlalchemy.dialects.postgresql import UUID
5
- from sqlalchemy.orm import declarative_base, relationship
6
- from datetime import datetime
7
- import enum
8
- import uuid
9
-
10
- Base = declarative_base()
11
-
12
-
13
- # ==============================================================
14
- # ENUM DEFINITIONS
15
- # ==============================================================
16
-
17
- class CandidateStatus(enum.Enum):
18
- APPLIED = "applied"
19
- CV_SCREENED = "cv_screened"
20
- INVITED_VOICE = "invited_voice"
21
- VOICE_DONE = "voice_done"
22
- SCHEDULED_HR = "scheduled_hr"
23
- DECISION_PENDING = "decision_pending"
24
- REJECTED = "rejected"
25
- HIRED = "hired"
26
-
27
-
28
- class InterviewStatus(enum.Enum):
29
- SCHEDULED = "scheduled"
30
- COMPLETED = "completed"
31
- CANCELLED = "cancelled"
32
-
33
-
34
- class Decision(enum.Enum):
35
- HIRE = "hire"
36
- REJECT = "reject"
37
- MAYBE = "maybe"
38
-
39
-
40
- # ==============================================================
41
- # MAIN TABLES
42
- # ==============================================================
43
-
44
- class Candidate(Base):
45
- __tablename__ = "candidates"
46
-
47
- id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
48
- full_name = Column(String(255), nullable=False)
49
- email = Column(String(255), nullable=False, unique=True)
50
- phone_number = Column(String(50), nullable=True)
51
- cv_file_path = Column(String(500), nullable=True)
52
- parsed_cv_json = Column(JSON, nullable=True)
53
- status = Column(Enum(CandidateStatus), default=CandidateStatus.APPLIED)
54
- created_at = Column(DateTime, default=datetime.utcnow)
55
- updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
56
-
57
- # Relationships
58
- cv_results = relationship("CVScreeningResult", back_populates="candidate", cascade="all, delete-orphan")
59
- voice_results = relationship("VoiceScreeningResult", back_populates="candidate", cascade="all, delete-orphan")
60
- interviews = relationship("InterviewScheduling", back_populates="candidate", cascade="all, delete-orphan")
61
- decision = relationship("FinalDecision", back_populates="candidate", uselist=False, cascade="all, delete-orphan")
62
-
63
-
64
- # ==============================================================
65
- # CV SCREENING RESULTS
66
- # ==============================================================
67
-
68
- class CVScreeningResult(Base):
69
- __tablename__ = "cv_screening_results"
70
-
71
- id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
72
- candidate_id = Column(UUID(as_uuid=True), ForeignKey("candidates.id"), nullable=False)
73
- job_title = Column(String(255), nullable=True)
74
-
75
- skills_match_score = Column(Float, nullable=True)
76
- experience_match_score = Column(Float, nullable=True)
77
- education_match_score = Column(Float, nullable=True)
78
- overall_fit_score = Column(Float, nullable=True)
79
-
80
- llm_feedback = Column(Text, nullable=True)
81
- reasoning_trace = Column(JSON, nullable=True)
82
-
83
- timestamp = Column(DateTime, default=datetime.utcnow)
84
-
85
- candidate = relationship("Candidate", back_populates="cv_results")
86
-
87
-
88
- # ==============================================================
89
- # VOICE SCREENING RESULTS
90
- # ==============================================================
91
-
92
- class VoiceScreeningResult(Base):
93
- __tablename__ = "voice_screening_results"
94
-
95
- id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
96
- candidate_id = Column(UUID(as_uuid=True), ForeignKey("candidates.id"), nullable=False)
97
-
98
- call_sid = Column(String(255), nullable=True)
99
- transcript_text = Column(Text, nullable=True)
100
-
101
- sentiment_score = Column(Float, nullable=True)
102
- confidence_score = Column(Float, nullable=True)
103
- communication_score = Column(Float, nullable=True)
104
-
105
- llm_summary = Column(Text, nullable=True)
106
- llm_judgment_json = Column(JSON, nullable=True)
107
- audio_url = Column(String(500), nullable=True)
108
-
109
- timestamp = Column(DateTime, default=datetime.utcnow)
110
-
111
- candidate = relationship("Candidate", back_populates="voice_results")
112
-
113
-
114
- # ==============================================================
115
- # INTERVIEW SCHEDULING
116
- # ==============================================================
117
-
118
- class InterviewScheduling(Base):
119
- __tablename__ = "interview_scheduling"
120
-
121
- id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
122
- candidate_id = Column(UUID(as_uuid=True), ForeignKey("candidates.id"), nullable=False)
123
-
124
- calendar_event_id = Column(String(255), nullable=True)
125
- event_summary = Column(String(255), nullable=True)
126
-
127
- start_time = Column(DateTime, nullable=True)
128
- end_time = Column(DateTime, nullable=True)
129
- status = Column(Enum(InterviewStatus), default=InterviewStatus.SCHEDULED)
130
-
131
- timestamp = Column(DateTime, default=datetime.utcnow)
132
-
133
- candidate = relationship("Candidate", back_populates="interviews")
134
-
135
-
136
- # ==============================================================
137
- # FINAL DECISION
138
- # ==============================================================
139
-
140
- class FinalDecision(Base):
141
- __tablename__ = "final_decision"
142
-
143
- id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
144
- candidate_id = Column(UUID(as_uuid=True), ForeignKey("candidates.id"), nullable=False, unique=True)
145
-
146
- overall_score = Column(Float, nullable=True)
147
- decision = Column(Enum(Decision), default=Decision.MAYBE)
148
- llm_rationale = Column(Text, nullable=True)
149
- human_notes = Column(Text, nullable=True)
150
-
151
- timestamp = Column(DateTime, default=datetime.utcnow)
152
-
153
- candidate = relationship("Candidate", back_populates="decision")