@adaptware/eagles-db 0.1.49 → 0.1.51

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-ac25e53c631512d142143ca345948068fd0d76aac704e94cec32263f9b75393a",
2
+ "name": "prisma-client-a3d9b695d947951ed70e866b5fe5fe9438d58ee410e3c62d37e70587ea2ee8f9",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "index-browser.js",
@@ -77,29 +77,6 @@ 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
-
103
80
  // PENDING could be understood as unscreened
104
81
  enum ApplicationStatus {
105
82
  PENDING
@@ -109,19 +86,20 @@ enum ApplicationStatus {
109
86
  }
110
87
 
111
88
  model Application {
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)
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
+
125
103
  // Relations
126
104
  candidate User @relation(fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
127
105
  organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
@@ -130,17 +108,18 @@ model Application {
130
108
  fit_check FitCheck? @relation(fields: [fit_check_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
131
109
  interviews Interview[]
132
110
  ongoing_evaluations OngoingEvaluation[]
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)
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)
140
117
 
141
118
  @@unique([candidate_id, job_description_id]) // Ensures candidate applies only once per job
142
119
  @@index([candidate_id])
143
120
  @@index([job_description_id])
121
+ @@index([organisation_id])
122
+ @@index([resume_id])
144
123
  }
145
124
 
146
125
  model Approval {
@@ -189,6 +168,8 @@ model Assessment {
189
168
  reviewer User? @relation("ReviewerAssessments", fields: [reviewer_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
190
169
  questions AssessmentQuestion[] @relation("AssessmentToAssessmentQuestion")
191
170
  candidateResponse CandidateQuestionResponse[]
171
+ Panelist Panelist? @relation(fields: [panelistId], references: [id])
172
+ panelistId String?
192
173
  User User? @relation(fields: [userId], references: [id])
193
174
  userId String?
194
175
 
@@ -228,6 +209,7 @@ model AssessmentLibrary {
228
209
  evaluation_Plans EvaluationPlan[]
229
210
 
230
211
  @@index([organisation_id])
212
+ @@index([created_at])
231
213
  }
232
214
 
233
215
  /**
@@ -266,6 +248,7 @@ model AssignmentLibrary {
266
248
  evaluationPlan EvaluationPlan[]
267
249
 
268
250
  @@index([job_description_id])
251
+ @@index([created_at])
269
252
  }
270
253
 
271
254
  enum JobType {
@@ -440,7 +423,10 @@ model EvaluationPlan {
440
423
  // Relations
441
424
  jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade)
442
425
  questions Question[] // One evaluation plan → many questions
426
+ panelists Panelist[]
427
+ interviews Interview[]
443
428
  applications Application[]
429
+ // New optional one-to-one relation with AssessmentLibrary
444
430
  assessment AssessmentLibrary? @relation(fields: [assessment_id], references: [id], onDelete: SetNull)
445
431
  assignment_library AssignmentLibrary? @relation(fields: [assignment_library_id], references: [id], onDelete: SetNull)
446
432
  ongoing_evaluations OngoingEvaluation[]
@@ -449,16 +435,10 @@ model EvaluationPlan {
449
435
  @@index([job_description_id])
450
436
  }
451
437
 
452
- enum FeedbackType {
453
- SECTION
454
- OVERALL
455
- }
456
-
457
438
  model Feedback {
458
- id String @id @default(uuid())
459
- interview_id String
460
- feedback_type FeedbackType
461
- order_no Int?
439
+ id String @id @default(uuid())
440
+ interview_id String
441
+ order_no Int
462
442
 
463
443
  ai_feedback Json?
464
444
  human_feedback Json?
@@ -485,7 +465,6 @@ model FitCheck {
485
465
  id String @id @default(uuid())
486
466
  /// FK to organisations table
487
467
  organisation_id String?
488
- candidate_id String?
489
468
  resume_id String
490
469
  job_description_id String
491
470
 
@@ -523,7 +502,6 @@ model FitCheck {
523
502
  updated_at DateTime @updatedAt
524
503
  /// Relations
525
504
  organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
526
- candidate User? @relation(fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
527
505
  resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
528
506
  job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
529
507
  application Application?
@@ -550,6 +528,25 @@ model Google {
550
528
  is_active Boolean @default(true)
551
529
  }
552
530
 
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
+
553
550
  enum InterviewStatus {
554
551
  INTERVIEW_REQUESTED
555
552
  SCHEDULED
@@ -560,47 +557,96 @@ enum InterviewStatus {
560
557
  EVALUATED // Feedback completed and locked
561
558
  }
562
559
 
560
+ enum InterviewFeedback {
561
+ STRONG_HIRE
562
+ HIRE
563
+ NO_HIRE
564
+ STRONG_NO_HIRE
565
+ }
566
+
563
567
  model Interview {
564
- id String @id @default(uuid())
565
- candidate_id String
566
- interviewer_id String?
567
- application_id String?
568
- resume_id String
569
- job_description_id String
570
- organisation_id String
571
- room_name String?
572
- interview_summary String[]
573
- scheduled_start_time DateTime?
574
- scheduled_end_time DateTime?
575
- actual_start_time DateTime?
576
- actual_end_time DateTime?
577
- recording_url String?
578
- interview_status InterviewStatus @default(SCHEDULED)
579
- google_event_id String?
580
- /// Audit fields
581
- created_at DateTime @default(now())
582
- updated_at DateTime @updatedAt
583
- created_by String
584
- updated_by String
585
- is_active Boolean @default(true)
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)
586
593
  // Relations
587
- candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
588
- interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
589
- organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
590
- job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
591
- resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
592
- application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
593
- ongoing_evaluation OngoingEvaluation?
594
- transcripts Transcript[]
595
- suggestions Suggestion[]
596
- feedback Feedback[]
597
- interviewNotes InterviewNotes[]
598
-
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[]
608
+
609
+ @@unique([interviewer_id, candidate_id, evaluation_plan_id])
610
+ @@index([application_id])
599
611
  @@index([candidate_id])
600
612
  @@index([interviewer_id])
601
613
  @@index([job_description_id])
602
614
  }
603
615
 
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
+
604
650
  model InterviewNotes {
605
651
  id String @id @default(uuid())
606
652
  interview_id String
@@ -679,6 +725,7 @@ model JobDescriptionData {
679
725
  jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
680
726
 
681
727
  @@unique([job_description_id, key])
728
+ @@index([created_at])
682
729
  }
683
730
 
684
731
  model Message {
@@ -788,6 +835,7 @@ model Organisation {
788
835
  address String
789
836
  company_values Json[]
790
837
 
838
+ interviewers User[]
791
839
  created_at DateTime @default(now())
792
840
  updated_at DateTime @updatedAt
793
841
  created_by String
@@ -796,14 +844,15 @@ model Organisation {
796
844
  alias String? @unique
797
845
  logo String?
798
846
  applications Application[]
799
- interviewers User[]
800
847
  user_roles UserRole[]
801
848
  job_descriptions JobDescription[]
802
849
  assessment_library AssessmentLibrary[]
803
850
  assignment_library AssignmentLibrary[]
851
+ interview_library InterviewLibrary[]
804
852
  interviews Interview[]
805
853
  fit_check FitCheck[] // one-to-many link
806
854
  resumes Resume[] // one-to-many link
855
+ panelists Panelist[] // one-to-many link
807
856
  approvals Approval[] // one-to-many link
808
857
  suggestions Suggestion[]
809
858
  ongoing_evaluations OngoingEvaluation[] // optional one-to-many
@@ -812,6 +861,67 @@ model Organisation {
812
861
  @@index([name])
813
862
  }
814
863
 
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
+
815
925
  model Permission {
816
926
  id String @id @default(uuid())
817
927
  permissions String[] @default([])
@@ -983,10 +1093,11 @@ model Suggestion {
983
1093
  organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade)
984
1094
 
985
1095
  @@index([interview_id])
1096
+ @@index([transcript_id])
986
1097
  }
987
1098
 
988
1099
  model Transcript {
989
- id String @id @default(uuid())
1100
+ id String @id @default(uuid())
990
1101
  interview_id String?
991
1102
  suggestion_id String?
992
1103
  intermediate_feedback_id String?
@@ -995,16 +1106,17 @@ model Transcript {
995
1106
  candidate_timestamp DateTime?
996
1107
  interviewer String
997
1108
  candidate String
998
- order_no Int @default(autoincrement())
999
- created_at DateTime @default(now())
1000
- updated_at DateTime @updatedAt
1109
+ order_no Int @default(autoincrement())
1110
+ created_at DateTime @default(now())
1111
+ updated_at DateTime @updatedAt
1001
1112
  created_by String
1002
1113
  updated_by String
1003
- is_active Boolean @default(true)
1114
+ is_active Boolean @default(true)
1004
1115
  // Relations
1005
- interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
1006
- suggestion Suggestion? @relation(fields: [suggestion_id], references: [id], onDelete: SetNull)
1007
- job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
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)
1008
1120
 
1009
1121
  @@unique([interview_id, order_no])
1010
1122
  @@index([interview_id])
@@ -1042,6 +1154,7 @@ model User {
1042
1154
  job_description JobDescription[]
1043
1155
  hiring_manager_job_descriptions JobDescription[] @relation("HiringManager")
1044
1156
  approvals Approval[]
1157
+ panelist Panelist?
1045
1158
  sent_messages Message[] @relation("Sent Messages")
1046
1159
  received_messages Message[] @relation("Received Messages")
1047
1160
  profile_created Boolean
@@ -1055,11 +1168,9 @@ model User {
1055
1168
  candidateResponses CandidateQuestionResponse[]
1056
1169
  questions Question[]
1057
1170
  ongoing_evaluations OngoingEvaluation[] // optional one-to-many
1058
- actor_activity_logs ActivityLog[] @relation("ActorActivityLogs")
1059
1171
  actions Action[]
1060
1172
  calendly Calendly?
1061
1173
  google Google?
1062
- fitChecks FitCheck[]
1063
1174
 
1064
1175
  name String?
1065
1176
  phone String?