@adaptware/eagles-db 0.1.45 → 0.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "prisma-client-a3d9b695d947951ed70e866b5fe5fe9438d58ee410e3c62d37e70587ea2ee8f9",
2
+ "name": "prisma-client-95e41a9407bdb0a6491bc324c19e7a0da21afab1ecf10c8bd9872d3ff8bdc1e3",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "index-browser.js",
@@ -77,6 +77,29 @@ model Action {
77
77
  @@index([due_date])
78
78
  }
79
79
 
80
+ enum ActivityActorType {
81
+ USER
82
+ AI
83
+ SYSTEM
84
+ }
85
+
86
+ model ActivityLog {
87
+ id String @id @default(uuid())
88
+ application_id String
89
+ actor_id String?
90
+ actor_type ActivityActorType @default(USER)
91
+ message String
92
+ timestamp DateTime @default(now())
93
+ metadata Json?
94
+ created_at DateTime @default(now())
95
+ is_active Boolean @default(true)
96
+ // Relations
97
+ actor User? @relation("ActorActivityLogs", fields: [actor_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
98
+ application Application @relation(fields: [application_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
99
+
100
+ @@index([application_id])
101
+ }
102
+
80
103
  // PENDING could be understood as unscreened
81
104
  enum ApplicationStatus {
82
105
  PENDING
@@ -86,20 +109,19 @@ enum ApplicationStatus {
86
109
  }
87
110
 
88
111
  model Application {
89
- id String @id @default(uuid())
90
- candidate_id String
91
- resume_id String
92
- organisation_id String
93
- job_description_id String
94
- status ApplicationStatus @default(PENDING)
95
- fit_check_score Float?
96
- fit_check_status FitCheckStatus?
97
- applied_at DateTime @default(now())
98
- evaluation_plan_id String?
99
- evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id])
100
- fit_check_id String? @unique
101
- round_no Int @default(0)
102
-
112
+ id String @id @default(uuid())
113
+ candidate_id String
114
+ resume_id String
115
+ organisation_id String
116
+ job_description_id String
117
+ status ApplicationStatus @default(PENDING)
118
+ fit_check_score Float?
119
+ fit_check_status FitCheckStatus?
120
+ applied_at DateTime @default(now())
121
+ evaluation_plan_id String?
122
+ evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id])
123
+ fit_check_id String? @unique
124
+ round_no Int @default(0)
103
125
  // Relations
104
126
  candidate User @relation(fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
105
127
  organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
@@ -108,18 +130,17 @@ model Application {
108
130
  fit_check FitCheck? @relation(fields: [fit_check_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
109
131
  interviews Interview[]
110
132
  ongoing_evaluations OngoingEvaluation[]
111
-
112
- created_at DateTime @default(now())
113
- updated_at DateTime @updatedAt
114
- created_by String
115
- updated_by String
116
- is_active Boolean @default(true)
133
+ activity_logs ActivityLog[]
134
+ // Audit fields
135
+ created_at DateTime @default(now())
136
+ updated_at DateTime @updatedAt
137
+ created_by String
138
+ updated_by String
139
+ is_active Boolean @default(true)
117
140
 
118
141
  @@unique([candidate_id, job_description_id]) // Ensures candidate applies only once per job
119
142
  @@index([candidate_id])
120
143
  @@index([job_description_id])
121
- @@index([organisation_id])
122
- @@index([resume_id])
123
144
  }
124
145
 
125
146
  model Approval {
@@ -168,8 +189,6 @@ model Assessment {
168
189
  reviewer User? @relation("ReviewerAssessments", fields: [reviewer_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
169
190
  questions AssessmentQuestion[] @relation("AssessmentToAssessmentQuestion")
170
191
  candidateResponse CandidateQuestionResponse[]
171
- Panelist Panelist? @relation(fields: [panelistId], references: [id])
172
- panelistId String?
173
192
  User User? @relation(fields: [userId], references: [id])
174
193
  userId String?
175
194
 
@@ -209,7 +228,6 @@ model AssessmentLibrary {
209
228
  evaluation_Plans EvaluationPlan[]
210
229
 
211
230
  @@index([organisation_id])
212
- @@index([created_at])
213
231
  }
214
232
 
215
233
  /**
@@ -248,7 +266,6 @@ model AssignmentLibrary {
248
266
  evaluationPlan EvaluationPlan[]
249
267
 
250
268
  @@index([job_description_id])
251
- @@index([created_at])
252
269
  }
253
270
 
254
271
  enum JobType {
@@ -423,22 +440,26 @@ model EvaluationPlan {
423
440
  // Relations
424
441
  jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade)
425
442
  questions Question[] // One evaluation plan → many questions
426
- panelists Panelist[]
427
- interviews Interview[]
428
443
  applications Application[]
429
- // New optional one-to-one relation with AssessmentLibrary
430
444
  assessment AssessmentLibrary? @relation(fields: [assessment_id], references: [id], onDelete: SetNull)
431
445
  assignment_library AssignmentLibrary? @relation(fields: [assignment_library_id], references: [id], onDelete: SetNull)
432
446
  ongoing_evaluations OngoingEvaluation[]
447
+ interviews Interview[]
433
448
 
434
449
  @@unique([job_description_id, order_no])
435
450
  @@index([job_description_id])
436
451
  }
437
452
 
453
+ enum FeedbackType {
454
+ SECTION
455
+ OVERALL
456
+ }
457
+
438
458
  model Feedback {
439
- id String @id @default(uuid())
440
- interview_id String
441
- order_no Int
459
+ id String @id @default(uuid())
460
+ interview_id String
461
+ feedback_type FeedbackType
462
+ order_no Int?
442
463
 
443
464
  ai_feedback Json?
444
465
  human_feedback Json?
@@ -465,6 +486,7 @@ model FitCheck {
465
486
  id String @id @default(uuid())
466
487
  /// FK to organisations table
467
488
  organisation_id String?
489
+ candidate_id String?
468
490
  resume_id String
469
491
  job_description_id String
470
492
 
@@ -502,6 +524,7 @@ model FitCheck {
502
524
  updated_at DateTime @updatedAt
503
525
  /// Relations
504
526
  organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
527
+ candidate User? @relation(fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
505
528
  resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
506
529
  job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
507
530
  application Application?
@@ -528,25 +551,6 @@ model Google {
528
551
  is_active Boolean @default(true)
529
552
  }
530
553
 
531
- model IntermediateFeedback {
532
- id String @id @default(uuid())
533
- interview_id String
534
- overall_feedback_id String?
535
- intermediate_feedback Json
536
- order_no Int @default(autoincrement())
537
- created_at DateTime @default(now())
538
- updated_at DateTime @updatedAt
539
- created_by String
540
- updated_by String
541
- is_active Boolean @default(true)
542
- // Relations
543
- interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
544
- OverallFeedback OverallFeedback? @relation(fields: [overall_feedback_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
545
- transcripts Transcript[]
546
-
547
- @@index([interview_id])
548
- }
549
-
550
554
  enum InterviewStatus {
551
555
  INTERVIEW_REQUESTED
552
556
  SCHEDULED
@@ -557,96 +561,52 @@ enum InterviewStatus {
557
561
  EVALUATED // Feedback completed and locked
558
562
  }
559
563
 
560
- enum InterviewFeedback {
561
- STRONG_HIRE
562
- HIRE
563
- NO_HIRE
564
- STRONG_NO_HIRE
565
- }
566
-
567
564
  model Interview {
568
- id String @id @default(uuid())
569
- candidate_id String
570
- interviewer_id String?
571
- evaluation_plan_id String
572
- application_id String?
573
- resume_id String
574
- job_description_id String
575
- organisation_id String
576
- room_name String?
577
- interview_summary String[]
578
- ai_interview_feedback InterviewFeedback?
579
- interview_feedback InterviewFeedback?
580
- interview_rating Float? // Overall rating out of 100 based on evaluation
581
- scheduled_start_time DateTime?
582
- scheduled_end_time DateTime?
583
- actual_start_time DateTime?
584
- actual_end_time DateTime?
585
- recording_url String?
586
- interview_status InterviewStatus @default(SCHEDULED)
587
- google_event_id String?
588
- created_at DateTime @default(now())
589
- updated_at DateTime @updatedAt
590
- created_by String
591
- updated_by String
592
- is_active Boolean @default(true)
565
+ id String @id @default(uuid())
566
+ /// Foreign keys
567
+ candidate_id String
568
+ interviewer_id String?
569
+ application_id String?
570
+ evaluation_plan_id String?
571
+ resume_id String
572
+ job_description_id String
573
+ organisation_id String
574
+ /// Data
575
+ room_name String?
576
+ interview_summary String[]
577
+ scheduled_start_time DateTime?
578
+ scheduled_end_time DateTime?
579
+ actual_start_time DateTime?
580
+ actual_end_time DateTime?
581
+ recording_url String?
582
+ interview_status InterviewStatus @default(SCHEDULED)
583
+ google_event_id String?
584
+ /// Audit fields
585
+ created_at DateTime @default(now())
586
+ updated_at DateTime @updatedAt
587
+ created_by String
588
+ updated_by String
589
+ is_active Boolean @default(true)
593
590
  // Relations
594
- candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
595
- interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
596
- organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
597
- job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
598
- resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
599
- evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
600
- application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
601
- ongoing_evaluation OngoingEvaluation?
602
- intermediateFeedbacks IntermediateFeedback[]
603
- transcripts Transcript[]
604
- suggestions Suggestion[]
605
- overallFeedback OverallFeedback[]
606
- feedback Feedback[]
607
- interviewNotes InterviewNotes[]
591
+ candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
592
+ interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
593
+ organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
594
+ job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
595
+ resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
596
+ application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
597
+ evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
598
+ ongoing_evaluation OngoingEvaluation?
599
+ transcripts Transcript[]
600
+ suggestions Suggestion[]
601
+ feedback Feedback[]
602
+ interviewNotes InterviewNotes[]
608
603
 
609
604
  @@unique([interviewer_id, candidate_id, evaluation_plan_id])
610
- @@index([application_id])
611
605
  @@index([candidate_id])
612
606
  @@index([interviewer_id])
613
607
  @@index([job_description_id])
614
608
  }
615
609
 
616
- /// Defines the category or purpose of the interview, suitable for any job role.
617
- enum InterviewCategory {
618
- SCREENING // Initial screening interview
619
- TECHNICAL // Skill or role-specific interview
620
- BEHAVIORAL // Behavioral or situational round
621
- CASE_STUDY // Case-based or analytical round
622
- MANAGERIAL // Leadership or management-focused
623
- CULTURAL_FIT // Checks alignment with company culture
624
- FINAL_DISCUSSION // Final HR or offer discussion
625
- GENERAL // Generic or flexible-purpose interview
626
- }
627
-
628
- /// Represents a reusable interview template applicable to any job type.
629
- model InterviewLibrary {
630
- id String @id @default(uuid())
631
- title String
632
- description String
633
- organisation_id String
634
- category InterviewCategory
635
- evaluation_type EvaluationType
636
- duration Float
637
- passing_marks Float
638
- is_active Boolean @default(true)
639
- created_by String
640
- updated_by String
641
- created_at DateTime @default(now())
642
- updated_at DateTime @updatedAt
643
- organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
644
-
645
- @@index([organisation_id])
646
- @@index([category])
647
- @@index([created_at])
648
- }
649
-
650
610
  model InterviewNotes {
651
611
  id String @id @default(uuid())
652
612
  interview_id String
@@ -725,7 +685,6 @@ model JobDescriptionData {
725
685
  jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
726
686
 
727
687
  @@unique([job_description_id, key])
728
- @@index([created_at])
729
688
  }
730
689
 
731
690
  model Message {
@@ -835,7 +794,6 @@ model Organisation {
835
794
  address String
836
795
  company_values Json[]
837
796
 
838
- interviewers User[]
839
797
  created_at DateTime @default(now())
840
798
  updated_at DateTime @updatedAt
841
799
  created_by String
@@ -844,15 +802,14 @@ model Organisation {
844
802
  alias String? @unique
845
803
  logo String?
846
804
  applications Application[]
805
+ interviewers User[]
847
806
  user_roles UserRole[]
848
807
  job_descriptions JobDescription[]
849
808
  assessment_library AssessmentLibrary[]
850
809
  assignment_library AssignmentLibrary[]
851
- interview_library InterviewLibrary[]
852
810
  interviews Interview[]
853
811
  fit_check FitCheck[] // one-to-many link
854
812
  resumes Resume[] // one-to-many link
855
- panelists Panelist[] // one-to-many link
856
813
  approvals Approval[] // one-to-many link
857
814
  suggestions Suggestion[]
858
815
  ongoing_evaluations OngoingEvaluation[] // optional one-to-many
@@ -861,67 +818,6 @@ model Organisation {
861
818
  @@index([name])
862
819
  }
863
820
 
864
- enum FeedbackType {
865
- HUMAN
866
- AI
867
- }
868
-
869
- enum OverallRecommendation {
870
- StrongHire
871
- Hire
872
- LeaningHire
873
- NoHire
874
- StrongNoHire
875
- }
876
-
877
- model OverallFeedback {
878
- id String @id @default(uuid())
879
- interview_id String
880
- interviewer_id String? // 👈 optional field
881
- feedback_type FeedbackType
882
- overall_score Float
883
- overall_recommendation OverallRecommendation
884
- overall_feedback Json
885
- created_at DateTime @default(now())
886
- updated_at DateTime @updatedAt
887
- created_by String
888
- updated_by String
889
- is_active Boolean @default(true)
890
- // Relations
891
- interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
892
- interviewer Panelist? @relation(fields: [interviewer_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
893
- intermediateFeedbacks IntermediateFeedback[] // 👈 one-to-many relation added here
894
-
895
- @@unique([interview_id, interviewer_id]) // 👈 updated uniqueness logic
896
- @@index([interview_id])
897
- @@index([interviewer_id])
898
- }
899
-
900
- model Panelist {
901
- id String @id @default(uuid())
902
- name String
903
- designation String
904
- experience String // e.g. "10+", keeping as String for flexibility
905
- expertise String // e.g. "Product Strategy, Figma..."
906
- suited_interview String // e.g. "Consulting, Customer understanding..."
907
- industry String // e.g. "Healthcare, Fintech"
908
- special_areas String? // Optional field
909
- organisation_id String
910
- user_id String @unique
911
-
912
- user User @relation(fields: [user_id], references: [id])
913
- organisation Organisation @relation(fields: [organisation_id], references: [id])
914
- evaluationPlans EvaluationPlan[]
915
- overallFeedbacks OverallFeedback[]
916
- created_at DateTime @default(now())
917
- updated_at DateTime @updatedAt
918
- created_by String
919
- updated_by String
920
- is_active Boolean @default(true)
921
-
922
- assessments Assessment[]
923
- }
924
-
925
821
  model Permission {
926
822
  id String @id @default(uuid())
927
823
  permissions String[] @default([])
@@ -1093,11 +989,10 @@ model Suggestion {
1093
989
  organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade)
1094
990
 
1095
991
  @@index([interview_id])
1096
- @@index([transcript_id])
1097
992
  }
1098
993
 
1099
994
  model Transcript {
1100
- id String @id @default(uuid())
995
+ id String @id @default(uuid())
1101
996
  interview_id String?
1102
997
  suggestion_id String?
1103
998
  intermediate_feedback_id String?
@@ -1106,17 +1001,16 @@ model Transcript {
1106
1001
  candidate_timestamp DateTime?
1107
1002
  interviewer String
1108
1003
  candidate String
1109
- order_no Int @default(autoincrement())
1110
- created_at DateTime @default(now())
1111
- updated_at DateTime @updatedAt
1004
+ order_no Int @default(autoincrement())
1005
+ created_at DateTime @default(now())
1006
+ updated_at DateTime @updatedAt
1112
1007
  created_by String
1113
1008
  updated_by String
1114
- is_active Boolean @default(true)
1009
+ is_active Boolean @default(true)
1115
1010
  // Relations
1116
- interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
1117
- suggestion Suggestion? @relation(fields: [suggestion_id], references: [id], onDelete: SetNull)
1118
- intermediate_feedback IntermediateFeedback? @relation(fields: [intermediate_feedback_id], references: [id], onDelete: SetNull)
1119
- job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
1011
+ interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
1012
+ suggestion Suggestion? @relation(fields: [suggestion_id], references: [id], onDelete: SetNull)
1013
+ job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
1120
1014
 
1121
1015
  @@unique([interview_id, order_no])
1122
1016
  @@index([interview_id])
@@ -1154,7 +1048,6 @@ model User {
1154
1048
  job_description JobDescription[]
1155
1049
  hiring_manager_job_descriptions JobDescription[] @relation("HiringManager")
1156
1050
  approvals Approval[]
1157
- panelist Panelist?
1158
1051
  sent_messages Message[] @relation("Sent Messages")
1159
1052
  received_messages Message[] @relation("Received Messages")
1160
1053
  profile_created Boolean
@@ -1168,9 +1061,11 @@ model User {
1168
1061
  candidateResponses CandidateQuestionResponse[]
1169
1062
  questions Question[]
1170
1063
  ongoing_evaluations OngoingEvaluation[] // optional one-to-many
1064
+ actor_activity_logs ActivityLog[] @relation("ActorActivityLogs")
1171
1065
  actions Action[]
1172
1066
  calendly Calendly?
1173
1067
  google Google?
1068
+ fitChecks FitCheck[]
1174
1069
 
1175
1070
  name String?
1176
1071
  phone String?