@adaptware/eagles-db 0.1.45 → 0.1.46
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.
- package/client/edge.js +33 -112
- package/client/index-browser.js +25 -104
- package/client/index.d.ts +20549 -28417
- package/client/index.js +35 -114
- package/client/{libquery_engine-darwin.dylib.node → libquery_engine-darwin-arm64.dylib.node} +0 -0
- package/client/package.json +1 -1
- package/client/schema.prisma +103 -208
- package/client/wasm.js +25 -104
- package/package.json +1 -1
- package/prisma/.DS_Store +0 -0
- package/prisma/schema/applications.prisma +0 -1
- package/prisma/schema/assessment.prisma +22 -24
- package/prisma/schema/assignmentLibrary.prisma +0 -1
- package/prisma/schema/evaluationPlan.prisma +1 -3
- package/prisma/schema/feedback.prisma +9 -3
- package/prisma/schema/interview.prisma +37 -46
- package/prisma/schema/jobDescription.prisma +0 -1
- package/prisma/schema/ongoingEvaluation.prisma +0 -2
- package/prisma/schema/organisation.prisma +1 -4
- package/prisma/schema/transcript.prisma +8 -9
- package/prisma/schema/user.prisma +0 -3
- package/prisma/schema/assignment.prisma +0 -40
- package/prisma/schema/intermediateFeedback.prisma +0 -18
- package/prisma/schema/interviewLibrary.prisma +0 -31
- package/prisma/schema/overallFeedback.prisma +0 -34
- package/prisma/schema/panelist.prisma +0 -24
package/client/wasm.js
CHANGED
|
@@ -163,6 +163,18 @@ exports.Prisma.ActionScalarFieldEnum = {
|
|
|
163
163
|
is_active: 'is_active'
|
|
164
164
|
};
|
|
165
165
|
|
|
166
|
+
exports.Prisma.ActivityLogScalarFieldEnum = {
|
|
167
|
+
id: 'id',
|
|
168
|
+
application_id: 'application_id',
|
|
169
|
+
actor_id: 'actor_id',
|
|
170
|
+
actor_type: 'actor_type',
|
|
171
|
+
message: 'message',
|
|
172
|
+
timestamp: 'timestamp',
|
|
173
|
+
metadata: 'metadata',
|
|
174
|
+
created_at: 'created_at',
|
|
175
|
+
is_active: 'is_active'
|
|
176
|
+
};
|
|
177
|
+
|
|
166
178
|
exports.Prisma.ApplicationScalarFieldEnum = {
|
|
167
179
|
id: 'id',
|
|
168
180
|
candidate_id: 'candidate_id',
|
|
@@ -209,7 +221,6 @@ exports.Prisma.AssessmentScalarFieldEnum = {
|
|
|
209
221
|
created_by: 'created_by',
|
|
210
222
|
updated_by: 'updated_by',
|
|
211
223
|
is_active: 'is_active',
|
|
212
|
-
panelistId: 'panelistId',
|
|
213
224
|
userId: 'userId'
|
|
214
225
|
};
|
|
215
226
|
|
|
@@ -351,6 +362,7 @@ exports.Prisma.EvaluationPlanScalarFieldEnum = {
|
|
|
351
362
|
exports.Prisma.FeedbackScalarFieldEnum = {
|
|
352
363
|
id: 'id',
|
|
353
364
|
interview_id: 'interview_id',
|
|
365
|
+
feedback_type: 'feedback_type',
|
|
354
366
|
order_no: 'order_no',
|
|
355
367
|
ai_feedback: 'ai_feedback',
|
|
356
368
|
human_feedback: 'human_feedback',
|
|
@@ -364,6 +376,7 @@ exports.Prisma.FeedbackScalarFieldEnum = {
|
|
|
364
376
|
exports.Prisma.FitCheckScalarFieldEnum = {
|
|
365
377
|
id: 'id',
|
|
366
378
|
organisation_id: 'organisation_id',
|
|
379
|
+
candidate_id: 'candidate_id',
|
|
367
380
|
resume_id: 'resume_id',
|
|
368
381
|
job_description_id: 'job_description_id',
|
|
369
382
|
skills_match: 'skills_match',
|
|
@@ -407,33 +420,17 @@ exports.Prisma.GoogleScalarFieldEnum = {
|
|
|
407
420
|
is_active: 'is_active'
|
|
408
421
|
};
|
|
409
422
|
|
|
410
|
-
exports.Prisma.IntermediateFeedbackScalarFieldEnum = {
|
|
411
|
-
id: 'id',
|
|
412
|
-
interview_id: 'interview_id',
|
|
413
|
-
overall_feedback_id: 'overall_feedback_id',
|
|
414
|
-
intermediate_feedback: 'intermediate_feedback',
|
|
415
|
-
order_no: 'order_no',
|
|
416
|
-
created_at: 'created_at',
|
|
417
|
-
updated_at: 'updated_at',
|
|
418
|
-
created_by: 'created_by',
|
|
419
|
-
updated_by: 'updated_by',
|
|
420
|
-
is_active: 'is_active'
|
|
421
|
-
};
|
|
422
|
-
|
|
423
423
|
exports.Prisma.InterviewScalarFieldEnum = {
|
|
424
424
|
id: 'id',
|
|
425
425
|
candidate_id: 'candidate_id',
|
|
426
426
|
interviewer_id: 'interviewer_id',
|
|
427
|
-
evaluation_plan_id: 'evaluation_plan_id',
|
|
428
427
|
application_id: 'application_id',
|
|
428
|
+
evaluation_plan_id: 'evaluation_plan_id',
|
|
429
429
|
resume_id: 'resume_id',
|
|
430
430
|
job_description_id: 'job_description_id',
|
|
431
431
|
organisation_id: 'organisation_id',
|
|
432
432
|
room_name: 'room_name',
|
|
433
433
|
interview_summary: 'interview_summary',
|
|
434
|
-
ai_interview_feedback: 'ai_interview_feedback',
|
|
435
|
-
interview_feedback: 'interview_feedback',
|
|
436
|
-
interview_rating: 'interview_rating',
|
|
437
434
|
scheduled_start_time: 'scheduled_start_time',
|
|
438
435
|
scheduled_end_time: 'scheduled_end_time',
|
|
439
436
|
actual_start_time: 'actual_start_time',
|
|
@@ -448,22 +445,6 @@ exports.Prisma.InterviewScalarFieldEnum = {
|
|
|
448
445
|
is_active: 'is_active'
|
|
449
446
|
};
|
|
450
447
|
|
|
451
|
-
exports.Prisma.InterviewLibraryScalarFieldEnum = {
|
|
452
|
-
id: 'id',
|
|
453
|
-
title: 'title',
|
|
454
|
-
description: 'description',
|
|
455
|
-
organisation_id: 'organisation_id',
|
|
456
|
-
category: 'category',
|
|
457
|
-
evaluation_type: 'evaluation_type',
|
|
458
|
-
duration: 'duration',
|
|
459
|
-
passing_marks: 'passing_marks',
|
|
460
|
-
is_active: 'is_active',
|
|
461
|
-
created_by: 'created_by',
|
|
462
|
-
updated_by: 'updated_by',
|
|
463
|
-
created_at: 'created_at',
|
|
464
|
-
updated_at: 'updated_at'
|
|
465
|
-
};
|
|
466
|
-
|
|
467
448
|
exports.Prisma.InterviewNotesScalarFieldEnum = {
|
|
468
449
|
id: 'id',
|
|
469
450
|
interview_id: 'interview_id',
|
|
@@ -572,39 +553,6 @@ exports.Prisma.OrganisationScalarFieldEnum = {
|
|
|
572
553
|
logo: 'logo'
|
|
573
554
|
};
|
|
574
555
|
|
|
575
|
-
exports.Prisma.OverallFeedbackScalarFieldEnum = {
|
|
576
|
-
id: 'id',
|
|
577
|
-
interview_id: 'interview_id',
|
|
578
|
-
interviewer_id: 'interviewer_id',
|
|
579
|
-
feedback_type: 'feedback_type',
|
|
580
|
-
overall_score: 'overall_score',
|
|
581
|
-
overall_recommendation: 'overall_recommendation',
|
|
582
|
-
overall_feedback: 'overall_feedback',
|
|
583
|
-
created_at: 'created_at',
|
|
584
|
-
updated_at: 'updated_at',
|
|
585
|
-
created_by: 'created_by',
|
|
586
|
-
updated_by: 'updated_by',
|
|
587
|
-
is_active: 'is_active'
|
|
588
|
-
};
|
|
589
|
-
|
|
590
|
-
exports.Prisma.PanelistScalarFieldEnum = {
|
|
591
|
-
id: 'id',
|
|
592
|
-
name: 'name',
|
|
593
|
-
designation: 'designation',
|
|
594
|
-
experience: 'experience',
|
|
595
|
-
expertise: 'expertise',
|
|
596
|
-
suited_interview: 'suited_interview',
|
|
597
|
-
industry: 'industry',
|
|
598
|
-
special_areas: 'special_areas',
|
|
599
|
-
organisation_id: 'organisation_id',
|
|
600
|
-
user_id: 'user_id',
|
|
601
|
-
created_at: 'created_at',
|
|
602
|
-
updated_at: 'updated_at',
|
|
603
|
-
created_by: 'created_by',
|
|
604
|
-
updated_by: 'updated_by',
|
|
605
|
-
is_active: 'is_active'
|
|
606
|
-
};
|
|
607
|
-
|
|
608
556
|
exports.Prisma.PermissionScalarFieldEnum = {
|
|
609
557
|
id: 'id',
|
|
610
558
|
permissions: 'permissions',
|
|
@@ -772,10 +720,6 @@ exports.Prisma.NullableJsonNullValueInput = {
|
|
|
772
720
|
JsonNull: Prisma.JsonNull
|
|
773
721
|
};
|
|
774
722
|
|
|
775
|
-
exports.Prisma.JsonNullValueInput = {
|
|
776
|
-
JsonNull: Prisma.JsonNull
|
|
777
|
-
};
|
|
778
|
-
|
|
779
723
|
exports.Prisma.QueryMode = {
|
|
780
724
|
default: 'default',
|
|
781
725
|
insensitive: 'insensitive'
|
|
@@ -803,6 +747,12 @@ exports.ActionStatus = exports.$Enums.ActionStatus = {
|
|
|
803
747
|
CANCELLED: 'CANCELLED'
|
|
804
748
|
};
|
|
805
749
|
|
|
750
|
+
exports.ActivityActorType = exports.$Enums.ActivityActorType = {
|
|
751
|
+
USER: 'USER',
|
|
752
|
+
AI: 'AI',
|
|
753
|
+
SYSTEM: 'SYSTEM'
|
|
754
|
+
};
|
|
755
|
+
|
|
806
756
|
exports.ApplicationStatus = exports.$Enums.ApplicationStatus = {
|
|
807
757
|
PENDING: 'PENDING',
|
|
808
758
|
IN_PROGRESS: 'IN_PROGRESS',
|
|
@@ -882,11 +832,9 @@ exports.EvaluationPlanType = exports.$Enums.EvaluationPlanType = {
|
|
|
882
832
|
DELETED: 'DELETED'
|
|
883
833
|
};
|
|
884
834
|
|
|
885
|
-
exports.
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
NO_HIRE: 'NO_HIRE',
|
|
889
|
-
STRONG_NO_HIRE: 'STRONG_NO_HIRE'
|
|
835
|
+
exports.FeedbackType = exports.$Enums.FeedbackType = {
|
|
836
|
+
SECTION: 'SECTION',
|
|
837
|
+
OVERALL: 'OVERALL'
|
|
890
838
|
};
|
|
891
839
|
|
|
892
840
|
exports.InterviewStatus = exports.$Enums.InterviewStatus = {
|
|
@@ -899,17 +847,6 @@ exports.InterviewStatus = exports.$Enums.InterviewStatus = {
|
|
|
899
847
|
EVALUATED: 'EVALUATED'
|
|
900
848
|
};
|
|
901
849
|
|
|
902
|
-
exports.InterviewCategory = exports.$Enums.InterviewCategory = {
|
|
903
|
-
SCREENING: 'SCREENING',
|
|
904
|
-
TECHNICAL: 'TECHNICAL',
|
|
905
|
-
BEHAVIORAL: 'BEHAVIORAL',
|
|
906
|
-
CASE_STUDY: 'CASE_STUDY',
|
|
907
|
-
MANAGERIAL: 'MANAGERIAL',
|
|
908
|
-
CULTURAL_FIT: 'CULTURAL_FIT',
|
|
909
|
-
FINAL_DISCUSSION: 'FINAL_DISCUSSION',
|
|
910
|
-
GENERAL: 'GENERAL'
|
|
911
|
-
};
|
|
912
|
-
|
|
913
850
|
exports.JobDescriptionStatus = exports.$Enums.JobDescriptionStatus = {
|
|
914
851
|
CREATED: 'CREATED',
|
|
915
852
|
DRAFT: 'DRAFT',
|
|
@@ -953,19 +890,6 @@ exports.OrganisationSize = exports.$Enums.OrganisationSize = {
|
|
|
953
890
|
FIVE_HUNDRED_PLUS: 'FIVE_HUNDRED_PLUS'
|
|
954
891
|
};
|
|
955
892
|
|
|
956
|
-
exports.FeedbackType = exports.$Enums.FeedbackType = {
|
|
957
|
-
HUMAN: 'HUMAN',
|
|
958
|
-
AI: 'AI'
|
|
959
|
-
};
|
|
960
|
-
|
|
961
|
-
exports.OverallRecommendation = exports.$Enums.OverallRecommendation = {
|
|
962
|
-
StrongHire: 'StrongHire',
|
|
963
|
-
Hire: 'Hire',
|
|
964
|
-
LeaningHire: 'LeaningHire',
|
|
965
|
-
NoHire: 'NoHire',
|
|
966
|
-
StrongNoHire: 'StrongNoHire'
|
|
967
|
-
};
|
|
968
|
-
|
|
969
893
|
exports.AsyncOperationStatus = exports.$Enums.AsyncOperationStatus = {
|
|
970
894
|
PENDING: 'PENDING',
|
|
971
895
|
IN_PROGRESS: 'IN_PROGRESS',
|
|
@@ -997,6 +921,7 @@ exports.Prisma.ModelName = {
|
|
|
997
921
|
CandidateQuestionResponse: 'CandidateQuestionResponse',
|
|
998
922
|
UserRole: 'UserRole',
|
|
999
923
|
Action: 'Action',
|
|
924
|
+
ActivityLog: 'ActivityLog',
|
|
1000
925
|
Application: 'Application',
|
|
1001
926
|
Approval: 'Approval',
|
|
1002
927
|
Assessment: 'Assessment',
|
|
@@ -1011,17 +936,13 @@ exports.Prisma.ModelName = {
|
|
|
1011
936
|
Feedback: 'Feedback',
|
|
1012
937
|
FitCheck: 'FitCheck',
|
|
1013
938
|
Google: 'Google',
|
|
1014
|
-
IntermediateFeedback: 'IntermediateFeedback',
|
|
1015
939
|
Interview: 'Interview',
|
|
1016
|
-
InterviewLibrary: 'InterviewLibrary',
|
|
1017
940
|
InterviewNotes: 'InterviewNotes',
|
|
1018
941
|
JobDescription: 'JobDescription',
|
|
1019
942
|
JobDescriptionData: 'JobDescriptionData',
|
|
1020
943
|
Message: 'Message',
|
|
1021
944
|
OngoingEvaluation: 'OngoingEvaluation',
|
|
1022
945
|
Organisation: 'Organisation',
|
|
1023
|
-
OverallFeedback: 'OverallFeedback',
|
|
1024
|
-
Panelist: 'Panelist',
|
|
1025
946
|
Permission: 'Permission',
|
|
1026
947
|
AsyncOperation: 'AsyncOperation',
|
|
1027
948
|
Question: 'Question',
|
package/package.json
CHANGED
package/prisma/.DS_Store
ADDED
|
Binary file
|
|
@@ -27,7 +27,6 @@ model Application {
|
|
|
27
27
|
job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
28
28
|
fit_check FitCheck? @relation(fields: [fit_check_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
29
29
|
interviews Interview[]
|
|
30
|
-
assignments Assignment[]
|
|
31
30
|
ongoing_evaluations OngoingEvaluation[]
|
|
32
31
|
activity_logs ActivityLog[]
|
|
33
32
|
// Audit fields
|
|
@@ -10,31 +10,29 @@ enum AssessmentStatus {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
model Assessment {
|
|
13
|
-
id
|
|
14
|
-
|
|
15
|
-
candidate_id
|
|
16
|
-
reviewer_id
|
|
17
|
-
score
|
|
18
|
-
feedback
|
|
19
|
-
scheduled_start_time
|
|
20
|
-
assessment_status
|
|
21
|
-
created_at
|
|
22
|
-
updated_at
|
|
23
|
-
created_by
|
|
24
|
-
updated_by
|
|
25
|
-
is_active
|
|
13
|
+
id String @id @default(uuid())
|
|
14
|
+
assessment_id String
|
|
15
|
+
candidate_id String
|
|
16
|
+
reviewer_id String?
|
|
17
|
+
score Float?
|
|
18
|
+
feedback String?
|
|
19
|
+
scheduled_start_time DateTime? @default(now()) // Start Time to start the assessment
|
|
20
|
+
assessment_status AssessmentStatus @default(SCHEDULED)
|
|
21
|
+
created_at DateTime @default(now())
|
|
22
|
+
updated_at DateTime @updatedAt
|
|
23
|
+
created_by String
|
|
24
|
+
updated_by String
|
|
25
|
+
is_active Boolean @default(true)
|
|
26
26
|
// Relations
|
|
27
|
-
assessment_libarary
|
|
28
|
-
candidate
|
|
29
|
-
reviewer
|
|
30
|
-
questions
|
|
31
|
-
candidateResponse
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
User User? @relation(fields: [userId], references: [id])
|
|
35
|
-
userId String?
|
|
27
|
+
assessment_libarary AssessmentLibrary @relation(fields: [assessment_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
28
|
+
candidate User @relation("CandidateAssessments", fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
29
|
+
reviewer User? @relation("ReviewerAssessments", fields: [reviewer_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
30
|
+
questions AssessmentQuestion[] @relation("AssessmentToAssessmentQuestion")
|
|
31
|
+
candidateResponse CandidateQuestionResponse[]
|
|
32
|
+
User User? @relation(fields: [userId], references: [id])
|
|
33
|
+
userId String?
|
|
36
34
|
|
|
37
|
-
@@unique([
|
|
38
|
-
@@index([
|
|
35
|
+
@@unique([assessment_id, candidate_id])
|
|
36
|
+
@@index([assessment_id])
|
|
39
37
|
@@index([candidate_id])
|
|
40
38
|
}
|
|
@@ -14,7 +14,6 @@ model AssignmentLibrary {
|
|
|
14
14
|
jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
15
15
|
/// Back-relation: one-to-one from EvaluationPlan (FK lives on EvaluationPlan.assignment_library_id)
|
|
16
16
|
evaluationPlan EvaluationPlan[]
|
|
17
|
-
assignments Assignment[]
|
|
18
17
|
|
|
19
18
|
@@index([job_description_id])
|
|
20
19
|
}
|
|
@@ -72,13 +72,11 @@ model EvaluationPlan {
|
|
|
72
72
|
// Relations
|
|
73
73
|
jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade)
|
|
74
74
|
questions Question[] // One evaluation plan → many questions
|
|
75
|
-
panelists Panelist[]
|
|
76
|
-
interviews Interview[]
|
|
77
75
|
applications Application[]
|
|
78
|
-
// New optional one-to-one relation with AssessmentLibrary
|
|
79
76
|
assessment AssessmentLibrary? @relation(fields: [assessment_id], references: [id], onDelete: SetNull)
|
|
80
77
|
assignment_library AssignmentLibrary? @relation(fields: [assignment_library_id], references: [id], onDelete: SetNull)
|
|
81
78
|
ongoing_evaluations OngoingEvaluation[]
|
|
79
|
+
interviews Interview[]
|
|
82
80
|
|
|
83
81
|
@@unique([job_description_id, order_no])
|
|
84
82
|
@@index([job_description_id])
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
enum FeedbackType {
|
|
2
|
+
SECTION
|
|
3
|
+
OVERALL
|
|
4
|
+
}
|
|
5
|
+
|
|
1
6
|
model Feedback {
|
|
2
|
-
id
|
|
3
|
-
interview_id
|
|
4
|
-
|
|
7
|
+
id String @id @default(uuid())
|
|
8
|
+
interview_id String
|
|
9
|
+
feedback_type FeedbackType
|
|
10
|
+
order_no Int?
|
|
5
11
|
|
|
6
12
|
ai_feedback Json?
|
|
7
13
|
human_feedback Json?
|
|
@@ -8,54 +8,45 @@ enum InterviewStatus {
|
|
|
8
8
|
EVALUATED // Feedback completed and locked
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
enum InterviewFeedback {
|
|
12
|
-
STRONG_HIRE
|
|
13
|
-
HIRE
|
|
14
|
-
NO_HIRE
|
|
15
|
-
STRONG_NO_HIRE
|
|
16
|
-
}
|
|
17
|
-
|
|
18
11
|
model Interview {
|
|
19
|
-
id
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
application_id
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
created_at
|
|
40
|
-
updated_at
|
|
41
|
-
created_by
|
|
42
|
-
updated_by
|
|
43
|
-
is_active
|
|
12
|
+
id String @id @default(uuid())
|
|
13
|
+
/// Foreign keys
|
|
14
|
+
candidate_id String
|
|
15
|
+
interviewer_id String?
|
|
16
|
+
application_id String?
|
|
17
|
+
evaluation_plan_id String?
|
|
18
|
+
resume_id String
|
|
19
|
+
job_description_id String
|
|
20
|
+
organisation_id String
|
|
21
|
+
/// Data
|
|
22
|
+
room_name String?
|
|
23
|
+
interview_summary String[]
|
|
24
|
+
scheduled_start_time DateTime?
|
|
25
|
+
scheduled_end_time DateTime?
|
|
26
|
+
actual_start_time DateTime?
|
|
27
|
+
actual_end_time DateTime?
|
|
28
|
+
recording_url String?
|
|
29
|
+
interview_status InterviewStatus @default(SCHEDULED)
|
|
30
|
+
google_event_id String?
|
|
31
|
+
/// Audit fields
|
|
32
|
+
created_at DateTime @default(now())
|
|
33
|
+
updated_at DateTime @updatedAt
|
|
34
|
+
created_by String
|
|
35
|
+
updated_by String
|
|
36
|
+
is_active Boolean @default(true)
|
|
44
37
|
// Relations
|
|
45
|
-
candidate
|
|
46
|
-
interviewer
|
|
47
|
-
organisation
|
|
48
|
-
job_description
|
|
49
|
-
resume
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
ongoing_evaluation
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
feedback Feedback[]
|
|
58
|
-
interviewNotes InterviewNotes[]
|
|
38
|
+
candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
|
|
39
|
+
interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
|
|
40
|
+
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
41
|
+
job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
42
|
+
resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
43
|
+
application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
44
|
+
evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
45
|
+
ongoing_evaluation OngoingEvaluation?
|
|
46
|
+
transcripts Transcript[]
|
|
47
|
+
suggestions Suggestion[]
|
|
48
|
+
feedback Feedback[]
|
|
49
|
+
interviewNotes InterviewNotes[]
|
|
59
50
|
|
|
60
51
|
@@unique([interviewer_id, candidate_id, evaluation_plan_id])
|
|
61
52
|
@@index([candidate_id])
|
|
@@ -28,7 +28,6 @@ model JobDescription {
|
|
|
28
28
|
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
29
29
|
applications Application[]
|
|
30
30
|
interviews Interview[]
|
|
31
|
-
assignments Assignment[]
|
|
32
31
|
fit_check FitCheck[] // one-to-many link
|
|
33
32
|
job_description_data JobDescriptionData[] // one-to-many link
|
|
34
33
|
evaluationPlan EvaluationPlan[] // relation to evaluation methods
|
|
@@ -34,7 +34,6 @@ model OngoingEvaluation {
|
|
|
34
34
|
job_description_id String
|
|
35
35
|
evaluation_plan_id String
|
|
36
36
|
interview_id String? @unique
|
|
37
|
-
assignment_id String? @unique
|
|
38
37
|
status OngoingEvaluationStatus?
|
|
39
38
|
state OngoingEvaluationState? @default(NOT_STARTED)
|
|
40
39
|
round_status OngoingEvaluationRoundStatus? @default(NOT_SCHEDULED)
|
|
@@ -47,7 +46,6 @@ model OngoingEvaluation {
|
|
|
47
46
|
organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
48
47
|
evaluation_plan EvaluationPlan @relation(fields: [evaluation_plan_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
49
48
|
interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
50
|
-
assignment Assignment?
|
|
51
49
|
created_at DateTime @default(now())
|
|
52
50
|
updated_at DateTime @updatedAt
|
|
53
51
|
created_by String
|
|
@@ -17,7 +17,6 @@ model Organisation {
|
|
|
17
17
|
address String
|
|
18
18
|
company_values Json[]
|
|
19
19
|
|
|
20
|
-
interviewers User[]
|
|
21
20
|
created_at DateTime @default(now())
|
|
22
21
|
updated_at DateTime @updatedAt
|
|
23
22
|
created_by String
|
|
@@ -26,16 +25,14 @@ model Organisation {
|
|
|
26
25
|
alias String? @unique
|
|
27
26
|
logo String?
|
|
28
27
|
applications Application[]
|
|
28
|
+
interviewers User[]
|
|
29
29
|
user_roles UserRole[]
|
|
30
30
|
job_descriptions JobDescription[]
|
|
31
31
|
assessment_library AssessmentLibrary[]
|
|
32
32
|
assignment_library AssignmentLibrary[]
|
|
33
|
-
interview_library InterviewLibrary[]
|
|
34
33
|
interviews Interview[]
|
|
35
|
-
assignments Assignment[]
|
|
36
34
|
fit_check FitCheck[] // one-to-many link
|
|
37
35
|
resumes Resume[] // one-to-many link
|
|
38
|
-
panelists Panelist[] // one-to-many link
|
|
39
36
|
approvals Approval[] // one-to-many link
|
|
40
37
|
suggestions Suggestion[]
|
|
41
38
|
ongoing_evaluations OngoingEvaluation[] // optional one-to-many
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
model Transcript {
|
|
2
|
-
id String
|
|
2
|
+
id String @id @default(uuid())
|
|
3
3
|
interview_id String?
|
|
4
4
|
suggestion_id String?
|
|
5
5
|
intermediate_feedback_id String?
|
|
@@ -8,17 +8,16 @@ model Transcript {
|
|
|
8
8
|
candidate_timestamp DateTime?
|
|
9
9
|
interviewer String
|
|
10
10
|
candidate String
|
|
11
|
-
order_no Int
|
|
12
|
-
created_at DateTime
|
|
13
|
-
updated_at DateTime
|
|
11
|
+
order_no Int @default(autoincrement())
|
|
12
|
+
created_at DateTime @default(now())
|
|
13
|
+
updated_at DateTime @updatedAt
|
|
14
14
|
created_by String
|
|
15
15
|
updated_by String
|
|
16
|
-
is_active Boolean
|
|
16
|
+
is_active Boolean @default(true)
|
|
17
17
|
// Relations
|
|
18
|
-
interview Interview?
|
|
19
|
-
suggestion Suggestion?
|
|
20
|
-
|
|
21
|
-
job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
18
|
+
interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
|
|
19
|
+
suggestion Suggestion? @relation(fields: [suggestion_id], references: [id], onDelete: SetNull)
|
|
20
|
+
job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
22
21
|
|
|
23
22
|
@@unique([interview_id, order_no])
|
|
24
23
|
@@index([interview_id])
|
|
@@ -29,7 +29,6 @@ model User {
|
|
|
29
29
|
job_description JobDescription[]
|
|
30
30
|
hiring_manager_job_descriptions JobDescription[] @relation("HiringManager")
|
|
31
31
|
approvals Approval[]
|
|
32
|
-
panelist Panelist?
|
|
33
32
|
sent_messages Message[] @relation("Sent Messages")
|
|
34
33
|
received_messages Message[] @relation("Received Messages")
|
|
35
34
|
profile_created Boolean
|
|
@@ -40,8 +39,6 @@ model User {
|
|
|
40
39
|
assessment_results Assessment[]
|
|
41
40
|
candidate_assessments Assessment[] @relation("CandidateAssessments")
|
|
42
41
|
reviewer_assessments Assessment[] @relation("ReviewerAssessments")
|
|
43
|
-
candidate_assignments Assignment[] @relation("CandidateAssignments")
|
|
44
|
-
reviewer_assignments Assignment[] @relation("AssignmentReviewer")
|
|
45
42
|
candidateResponses CandidateQuestionResponse[]
|
|
46
43
|
questions Question[]
|
|
47
44
|
ongoing_evaluations OngoingEvaluation[] // optional one-to-many
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
enum AssignmentStatus {
|
|
2
|
-
AVAILABLE
|
|
3
|
-
SCHEDULED
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
model Assignment {
|
|
7
|
-
id String @id @default(uuid())
|
|
8
|
-
candidate_id String
|
|
9
|
-
assignment_library_id String
|
|
10
|
-
reviewer_id String?
|
|
11
|
-
application_id String?
|
|
12
|
-
job_description_id String
|
|
13
|
-
organisation_id String
|
|
14
|
-
ongoing_evaluation_id String? @unique
|
|
15
|
-
score Int?
|
|
16
|
-
ai_result String?
|
|
17
|
-
ai_reasoning String?
|
|
18
|
-
status AssignmentStatus @default(AVAILABLE)
|
|
19
|
-
solution_url String?
|
|
20
|
-
scheduled_start_time DateTime?
|
|
21
|
-
scheduled_end_time DateTime?
|
|
22
|
-
created_at DateTime @default(now())
|
|
23
|
-
updated_at DateTime @updatedAt
|
|
24
|
-
created_by String
|
|
25
|
-
updated_by String
|
|
26
|
-
is_active Boolean @default(true)
|
|
27
|
-
// Relations
|
|
28
|
-
candidate User? @relation("CandidateAssignments", fields: [candidate_id], references: [id], onDelete: Cascade)
|
|
29
|
-
assignment_library AssignmentLibrary @relation(fields: [assignment_library_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
30
|
-
reviewer User? @relation("AssignmentReviewer", fields: [reviewer_id], references: [id], onDelete: SetNull)
|
|
31
|
-
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
32
|
-
job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
33
|
-
application Application? @relation(fields: [application_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
34
|
-
ongoing_evaluation OngoingEvaluation? @relation(fields: [ongoing_evaluation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
35
|
-
|
|
36
|
-
@@unique([candidate_id, ongoing_evaluation_id])
|
|
37
|
-
@@index([candidate_id])
|
|
38
|
-
@@index([reviewer_id])
|
|
39
|
-
@@index([job_description_id])
|
|
40
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
model IntermediateFeedback {
|
|
2
|
-
id String @id @default(uuid())
|
|
3
|
-
interview_id String
|
|
4
|
-
overall_feedback_id String?
|
|
5
|
-
intermediate_feedback Json
|
|
6
|
-
order_no Int @default(autoincrement())
|
|
7
|
-
created_at DateTime @default(now())
|
|
8
|
-
updated_at DateTime @updatedAt
|
|
9
|
-
created_by String
|
|
10
|
-
updated_by String
|
|
11
|
-
is_active Boolean @default(true)
|
|
12
|
-
// Relations
|
|
13
|
-
interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
14
|
-
OverallFeedback OverallFeedback? @relation(fields: [overall_feedback_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
15
|
-
transcripts Transcript[]
|
|
16
|
-
|
|
17
|
-
@@index([interview_id])
|
|
18
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/// Defines the category or purpose of the interview, suitable for any job role.
|
|
2
|
-
enum InterviewCategory {
|
|
3
|
-
SCREENING // Initial screening interview
|
|
4
|
-
TECHNICAL // Skill or role-specific interview
|
|
5
|
-
BEHAVIORAL // Behavioral or situational round
|
|
6
|
-
CASE_STUDY // Case-based or analytical round
|
|
7
|
-
MANAGERIAL // Leadership or management-focused
|
|
8
|
-
CULTURAL_FIT // Checks alignment with company culture
|
|
9
|
-
FINAL_DISCUSSION // Final HR or offer discussion
|
|
10
|
-
GENERAL // Generic or flexible-purpose interview
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/// Represents a reusable interview template applicable to any job type.
|
|
14
|
-
model InterviewLibrary {
|
|
15
|
-
id String @id @default(uuid())
|
|
16
|
-
title String
|
|
17
|
-
description String
|
|
18
|
-
organisation_id String
|
|
19
|
-
category InterviewCategory
|
|
20
|
-
evaluation_type EvaluationType
|
|
21
|
-
duration Float
|
|
22
|
-
passing_marks Float
|
|
23
|
-
is_active Boolean @default(true)
|
|
24
|
-
created_by String
|
|
25
|
-
updated_by String
|
|
26
|
-
created_at DateTime @default(now())
|
|
27
|
-
updated_at DateTime @updatedAt
|
|
28
|
-
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
29
|
-
|
|
30
|
-
@@index([organisation_id])
|
|
31
|
-
}
|