@adaptware/eagles-db 0.5.60 → 0.5.63

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-79d99cb4ed4a6ef15173f90dcf5855a8a939594c0bbcbb172b3cd348b1bfc5ca",
2
+ "name": "prisma-client-0db0ff2e3bea67e6412e2123786c535e3fe2556ec89d6cc0b2857b2946437f96",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "default.js",
@@ -2001,6 +2001,7 @@ model Interview {
2001
2001
  recording_url String?
2002
2002
  recording_document_id String? @unique
2003
2003
  evaluation_type EvaluationType? @default(TREADSPACE_AI_ASSISTED)
2004
+ is_proctored Boolean @default(true) @map("is_proctored")
2004
2005
  ai_assistance_mode AiAssistanceMode? @default(ASSISTED)
2005
2006
  interview_status InterviewStatus @default(SCHEDULED)
2006
2007
  interview_platform InterviewPlatform @default(TREADSPACE)
@@ -2031,36 +2032,47 @@ model Interview {
2031
2032
  /// When final human feedback was submitted.
2032
2033
  evaluated_at DateTime?
2033
2034
 
2035
+ /// Candidate Acceptance & DPDP Consent
2036
+ candidate_status String? @default("INVITED")
2037
+ dpdp_consent_given Boolean @default(false)
2038
+ dpdp_consent_given_at DateTime?
2039
+ candidate_responded_at DateTime?
2040
+ decline_reason String?
2041
+
2034
2042
  /// Self-scheduling
2035
- reschedule_count Int @default(0)
2043
+ reschedule_count Int @default(0)
2036
2044
  last_rescheduled_at DateTime?
2037
2045
  first_assigned_at DateTime?
2038
2046
  /// True while the candidate is waiting on recruiter action (typically a
2039
2047
  /// reassign) after they submitted alternate slots via "None match" /
2040
2048
  /// "Suggest times". Cleared whenever the recruiter routes a fresh
2041
2049
  /// request via `upsertInterviewRequestRecord`.
2042
- awaiting_recruiter_action Boolean @default(false)
2050
+ awaiting_recruiter_action Boolean @default(false)
2043
2051
  /// Audit fields
2044
- created_at DateTime @default(now())
2045
- updated_at DateTime @updatedAt
2052
+ created_at DateTime @default(now())
2053
+ updated_at DateTime @updatedAt
2046
2054
  created_by String
2047
2055
  updated_by String
2048
- is_active Boolean @default(true)
2056
+ is_active Boolean @default(true)
2057
+
2058
+ //interview proctoring
2059
+ proctoringSession ProctoringSession?
2060
+
2049
2061
  // Relations
2050
- candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
2051
- interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
2052
- organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2053
- recording_document Document? @relation(fields: [recording_document_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2054
- job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2055
- resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
2056
- evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2057
- application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2058
- ongoing_evaluation OngoingEvaluation?
2059
- transcripts Transcript[]
2060
- suggestions Suggestion[]
2061
- interviewNotes InterviewNotes[]
2062
- liveAnalysis LiveAnalysis[]
2063
- zoom_meeting ZoomMeeting?
2062
+ candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
2063
+ interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
2064
+ organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2065
+ recording_document Document? @relation(fields: [recording_document_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2066
+ job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2067
+ resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
2068
+ evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2069
+ application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
2070
+ ongoing_evaluation OngoingEvaluation?
2071
+ transcripts Transcript[]
2072
+ suggestions Suggestion[]
2073
+ interviewNotes InterviewNotes[]
2074
+ liveAnalysis LiveAnalysis[]
2075
+ zoom_meeting ZoomMeeting?
2064
2076
 
2065
2077
  // Indexes
2066
2078
  @@index([candidate_id])
@@ -3702,6 +3714,132 @@ model PipelineDistributionAnalyticsDaily {
3702
3714
  @@schema("analytics")
3703
3715
  }
3704
3716
 
3717
+ enum RiskLevel {
3718
+ LOW
3719
+ MEDIUM
3720
+ HIGH
3721
+ CRITICAL
3722
+
3723
+ @@schema("public")
3724
+ }
3725
+
3726
+ enum AnalysisStatus {
3727
+ QUEUED
3728
+ RUNNING
3729
+ COMPLETED
3730
+ FAILED
3731
+
3732
+ @@schema("public")
3733
+ }
3734
+
3735
+ enum ProctoringEventType {
3736
+ GAZE_DISRUPTION
3737
+ OBJECT_DETECTED
3738
+ FACE_MISSING
3739
+ MULTIPLE_FACES
3740
+ BROWSER_TAB_SWITCH
3741
+ BROWSER_BLUR
3742
+ FULLSCREEN_EXIT
3743
+
3744
+ @@schema("public")
3745
+ }
3746
+
3747
+ enum ProctoringSessionStatus {
3748
+ NOT_STARTED
3749
+ CALIBRATING
3750
+ CALIBRATED
3751
+ PROCESSING
3752
+ COMPLETED
3753
+ FAILED
3754
+
3755
+ @@schema("public")
3756
+ }
3757
+
3758
+ model ProctoringSession {
3759
+ id String @id @default(uuid()) @map("id")
3760
+ interviewId String @unique @map("interview_id")
3761
+ interview Interview @relation(fields: [interviewId], references: [id], onDelete: Cascade)
3762
+
3763
+ candidateId String @map("candidate_id")
3764
+ candidate User @relation(fields: [candidateId], references: [id], onDelete: Cascade)
3765
+
3766
+ // Proctoring Lifecycle & Media
3767
+ status ProctoringSessionStatus @default(NOT_STARTED) @map("status")
3768
+ calibrationFeatures Json? @map("calibration_features")
3769
+ fullVideoKey String? @map("full_video_key")
3770
+ fullVideoUrl String? @map("full_video_url")
3771
+ chunkCount Int @default(0) @map("chunk_count")
3772
+ completedChunks Int @default(0) @map("completed_chunks")
3773
+
3774
+ // High-Level Aggregated Metrics for Downstream AI Evaluation
3775
+ overallRisk RiskLevel @default(LOW) @map("overall_risk")
3776
+ integrityScore Float @default(100.0) @map("integrity_score")
3777
+
3778
+ totalDurationSec Float @default(0.0) @map("total_duration_sec")
3779
+ faceDetectedPct Float @default(100.0) @map("face_detected_pct")
3780
+ onScreenGazePct Float @default(100.0) @map("on_screen_gaze_pct")
3781
+
3782
+ // Event Counters
3783
+ totalGazeEvents Int @default(0) @map("total_gaze_events")
3784
+ totalObjectEvents Int @default(0) @map("total_object_events")
3785
+ totalFaceEvents Int @default(0) @map("total_face_events")
3786
+ totalBrowserEvents Int @default(0) @map("total_browser_events")
3787
+
3788
+ createdAt DateTime @default(now()) @map("created_at")
3789
+ updatedAt DateTime @updatedAt @map("updated_at")
3790
+
3791
+ analyses ProctoringAnalysis[]
3792
+ events ProctoringEvent[]
3793
+
3794
+ @@index([candidateId])
3795
+ @@map("proctoring_sessions")
3796
+ @@schema("public")
3797
+ }
3798
+
3799
+ model ProctoringAnalysis {
3800
+ id String @id @default(uuid()) @map("id")
3801
+ sessionId String @map("session_id")
3802
+ session ProctoringSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
3803
+
3804
+ status AnalysisStatus @default(QUEUED)
3805
+
3806
+ chunkIndex Int @default(0) @map("chunk_index")
3807
+ totalChunks Int @default(1) @map("total_chunks")
3808
+ startTimeSec Float @default(0.0) @map("start_time_sec")
3809
+ endTimeSec Float @default(0.0) @map("end_time_sec")
3810
+
3811
+ videoKey String? @map("video_key")
3812
+ annotatedKey String? @map("annotated_key")
3813
+
3814
+ error String?
3815
+ createdAt DateTime @default(now()) @map("created_at")
3816
+ updatedAt DateTime @updatedAt @map("updated_at")
3817
+
3818
+ @@index([sessionId, chunkIndex])
3819
+ @@map("proctoring_analyses")
3820
+ @@schema("public")
3821
+ }
3822
+
3823
+ model ProctoringEvent {
3824
+ id String @id @default(uuid()) @map("id")
3825
+ sessionId String @map("session_id")
3826
+ session ProctoringSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
3827
+
3828
+ eventType ProctoringEventType @map("event_type")
3829
+ timestampSec Float @map("timestamp_sec")
3830
+ timestampStr String @map("timestamp_str")
3831
+
3832
+ risk RiskLevel @default(LOW)
3833
+ metadata Json?
3834
+
3835
+ createdAt DateTime @default(now()) @map("created_at")
3836
+
3837
+ @@index([sessionId, timestampSec])
3838
+ @@index([sessionId, eventType])
3839
+ @@map("proctoring_events")
3840
+ @@schema("public")
3841
+ }
3842
+
3705
3843
  enum AsyncOperationStatus {
3706
3844
  PENDING
3707
3845
  IN_PROGRESS
@@ -4484,6 +4622,9 @@ model User {
4484
4622
  notes Notes[]
4485
4623
  recruiter_applications Application[] @relation("ApplicationRecruiter")
4486
4624
 
4625
+ // user proctoring
4626
+ proctoringSessions ProctoringSession[]
4627
+
4487
4628
  name String?
4488
4629
  phone String?
4489
4630
  /// Contact email for interviews, assessments, and resume export. Login stays on `email`.