@adaptware/eagles-db 0.5.64 → 0.5.68
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 +90 -3
- package/client/index-browser.js +87 -0
- package/client/index.d.ts +6736 -2
- package/client/index.js +90 -3
- package/client/package.json +1 -1
- package/client/schema.prisma +150 -19
- package/client/wasm.js +90 -3
- package/package.json +1 -1
- package/prisma/schema/interview.prisma +13 -0
- package/prisma/schema/migrations/20260918153000_add_is_proctored_fields/migration.sql +2 -0
- package/prisma/schema/migrations/20260925200000_proctoring_drop_stitch_cols_and_unique/migration.sql +37 -0
- package/prisma/schema/migrations/20260925210000_proctoring_drop_session_candidate_id/migration.sql +3 -0
- package/prisma/schema/proctoring.prisma +118 -0
package/client/package.json
CHANGED
package/client/schema.prisma
CHANGED
|
@@ -2002,6 +2002,7 @@ model Interview {
|
|
|
2002
2002
|
recording_url String?
|
|
2003
2003
|
recording_document_id String? @unique
|
|
2004
2004
|
evaluation_type EvaluationType? @default(TREADSPACE_AI_ASSISTED)
|
|
2005
|
+
is_proctored Boolean @default(true) @map("is_proctored")
|
|
2005
2006
|
ai_assistance_mode AiAssistanceMode? @default(ASSISTED)
|
|
2006
2007
|
interview_status InterviewStatus @default(SCHEDULED)
|
|
2007
2008
|
interview_platform InterviewPlatform @default(TREADSPACE)
|
|
@@ -2032,36 +2033,47 @@ model Interview {
|
|
|
2032
2033
|
/// When final human feedback was submitted.
|
|
2033
2034
|
evaluated_at DateTime?
|
|
2034
2035
|
|
|
2036
|
+
/// Candidate Acceptance & DPDP Consent
|
|
2037
|
+
candidate_status String? @default("INVITED")
|
|
2038
|
+
dpdp_consent_given Boolean @default(false)
|
|
2039
|
+
dpdp_consent_given_at DateTime?
|
|
2040
|
+
candidate_responded_at DateTime?
|
|
2041
|
+
decline_reason String?
|
|
2042
|
+
|
|
2035
2043
|
/// Self-scheduling
|
|
2036
|
-
reschedule_count Int
|
|
2044
|
+
reschedule_count Int @default(0)
|
|
2037
2045
|
last_rescheduled_at DateTime?
|
|
2038
2046
|
first_assigned_at DateTime?
|
|
2039
2047
|
/// True while the candidate is waiting on recruiter action (typically a
|
|
2040
2048
|
/// reassign) after they submitted alternate slots via "None match" /
|
|
2041
2049
|
/// "Suggest times". Cleared whenever the recruiter routes a fresh
|
|
2042
2050
|
/// request via `upsertInterviewRequestRecord`.
|
|
2043
|
-
awaiting_recruiter_action Boolean
|
|
2051
|
+
awaiting_recruiter_action Boolean @default(false)
|
|
2044
2052
|
/// Audit fields
|
|
2045
|
-
created_at DateTime
|
|
2046
|
-
updated_at DateTime
|
|
2053
|
+
created_at DateTime @default(now())
|
|
2054
|
+
updated_at DateTime @updatedAt
|
|
2047
2055
|
created_by String
|
|
2048
2056
|
updated_by String
|
|
2049
|
-
is_active Boolean
|
|
2057
|
+
is_active Boolean @default(true)
|
|
2058
|
+
|
|
2059
|
+
//interview proctoring
|
|
2060
|
+
proctoringSession ProctoringSession?
|
|
2061
|
+
|
|
2050
2062
|
// Relations
|
|
2051
|
-
candidate
|
|
2052
|
-
interviewer
|
|
2053
|
-
organisation
|
|
2054
|
-
recording_document
|
|
2055
|
-
job_description
|
|
2056
|
-
resume
|
|
2057
|
-
evaluation_plan
|
|
2058
|
-
application
|
|
2059
|
-
ongoing_evaluation
|
|
2060
|
-
transcripts
|
|
2061
|
-
suggestions
|
|
2062
|
-
interviewNotes
|
|
2063
|
-
liveAnalysis
|
|
2064
|
-
zoom_meeting
|
|
2063
|
+
candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
|
|
2064
|
+
interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
|
|
2065
|
+
organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
2066
|
+
recording_document Document? @relation(fields: [recording_document_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
2067
|
+
job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
2068
|
+
resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
2069
|
+
evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
2070
|
+
application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
2071
|
+
ongoing_evaluation OngoingEvaluation?
|
|
2072
|
+
transcripts Transcript[]
|
|
2073
|
+
suggestions Suggestion[]
|
|
2074
|
+
interviewNotes InterviewNotes[]
|
|
2075
|
+
liveAnalysis LiveAnalysis[]
|
|
2076
|
+
zoom_meeting ZoomMeeting?
|
|
2065
2077
|
|
|
2066
2078
|
// Indexes
|
|
2067
2079
|
@@index([candidate_id])
|
|
@@ -3818,6 +3830,125 @@ model PipelineDistributionAnalyticsDaily {
|
|
|
3818
3830
|
@@schema("analytics")
|
|
3819
3831
|
}
|
|
3820
3832
|
|
|
3833
|
+
enum RiskLevel {
|
|
3834
|
+
LOW
|
|
3835
|
+
MEDIUM
|
|
3836
|
+
HIGH
|
|
3837
|
+
CRITICAL
|
|
3838
|
+
|
|
3839
|
+
@@schema("public")
|
|
3840
|
+
}
|
|
3841
|
+
|
|
3842
|
+
enum AnalysisStatus {
|
|
3843
|
+
QUEUED
|
|
3844
|
+
RUNNING
|
|
3845
|
+
COMPLETED
|
|
3846
|
+
FAILED
|
|
3847
|
+
|
|
3848
|
+
@@schema("public")
|
|
3849
|
+
}
|
|
3850
|
+
|
|
3851
|
+
enum ProctoringEventType {
|
|
3852
|
+
GAZE_DISRUPTION
|
|
3853
|
+
OBJECT_DETECTED
|
|
3854
|
+
FACE_MISSING
|
|
3855
|
+
MULTIPLE_FACES
|
|
3856
|
+
BROWSER_TAB_SWITCH
|
|
3857
|
+
BROWSER_BLUR
|
|
3858
|
+
FULLSCREEN_EXIT
|
|
3859
|
+
|
|
3860
|
+
@@schema("public")
|
|
3861
|
+
}
|
|
3862
|
+
|
|
3863
|
+
enum ProctoringSessionStatus {
|
|
3864
|
+
NOT_STARTED
|
|
3865
|
+
CALIBRATING
|
|
3866
|
+
CALIBRATED
|
|
3867
|
+
PROCESSING
|
|
3868
|
+
COMPLETED
|
|
3869
|
+
FAILED
|
|
3870
|
+
|
|
3871
|
+
@@schema("public")
|
|
3872
|
+
}
|
|
3873
|
+
|
|
3874
|
+
model ProctoringSession {
|
|
3875
|
+
id String @id @default(uuid()) @map("id")
|
|
3876
|
+
interviewId String @unique @map("interview_id")
|
|
3877
|
+
interview Interview @relation(fields: [interviewId], references: [id], onDelete: Cascade)
|
|
3878
|
+
|
|
3879
|
+
// Proctoring Lifecycle & Media
|
|
3880
|
+
status ProctoringSessionStatus @default(NOT_STARTED) @map("status")
|
|
3881
|
+
calibrationFeatures Json? @map("calibration_features")
|
|
3882
|
+
chunkCount Int @default(0) @map("chunk_count")
|
|
3883
|
+
completedChunks Int @default(0) @map("completed_chunks")
|
|
3884
|
+
|
|
3885
|
+
// High-Level Aggregated Metrics for Downstream AI Evaluation
|
|
3886
|
+
overallRisk RiskLevel @default(LOW) @map("overall_risk")
|
|
3887
|
+
integrityScore Float @default(100.0) @map("integrity_score")
|
|
3888
|
+
|
|
3889
|
+
totalDurationSec Float @default(0.0) @map("total_duration_sec")
|
|
3890
|
+
faceDetectedPct Float? @map("face_detected_pct")
|
|
3891
|
+
onScreenGazePct Float? @map("on_screen_gaze_pct")
|
|
3892
|
+
|
|
3893
|
+
// Event Counters
|
|
3894
|
+
totalGazeEvents Int @default(0) @map("total_gaze_events")
|
|
3895
|
+
totalObjectEvents Int @default(0) @map("total_object_events")
|
|
3896
|
+
totalFaceEvents Int @default(0) @map("total_face_events")
|
|
3897
|
+
totalBrowserEvents Int @default(0) @map("total_browser_events")
|
|
3898
|
+
|
|
3899
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
3900
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
3901
|
+
|
|
3902
|
+
analyses ProctoringAnalysis[]
|
|
3903
|
+
events ProctoringEvent[]
|
|
3904
|
+
|
|
3905
|
+
@@map("proctoring_sessions")
|
|
3906
|
+
@@schema("public")
|
|
3907
|
+
}
|
|
3908
|
+
|
|
3909
|
+
model ProctoringAnalysis {
|
|
3910
|
+
id String @id @default(uuid()) @map("id")
|
|
3911
|
+
sessionId String @map("session_id")
|
|
3912
|
+
session ProctoringSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
|
|
3913
|
+
|
|
3914
|
+
status AnalysisStatus @default(QUEUED)
|
|
3915
|
+
|
|
3916
|
+
chunkIndex Int @default(0) @map("chunk_index")
|
|
3917
|
+
startTimeSec Float @default(0.0) @map("start_time_sec")
|
|
3918
|
+
endTimeSec Float @default(0.0) @map("end_time_sec")
|
|
3919
|
+
|
|
3920
|
+
videoKey String? @map("video_key")
|
|
3921
|
+
annotatedKey String? @map("annotated_key")
|
|
3922
|
+
|
|
3923
|
+
error String?
|
|
3924
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
3925
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
3926
|
+
|
|
3927
|
+
@@unique([sessionId, chunkIndex])
|
|
3928
|
+
@@map("proctoring_analyses")
|
|
3929
|
+
@@schema("public")
|
|
3930
|
+
}
|
|
3931
|
+
|
|
3932
|
+
model ProctoringEvent {
|
|
3933
|
+
id String @id @default(uuid()) @map("id")
|
|
3934
|
+
sessionId String @map("session_id")
|
|
3935
|
+
session ProctoringSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
|
|
3936
|
+
|
|
3937
|
+
eventType ProctoringEventType @map("event_type")
|
|
3938
|
+
timestampSec Float @map("timestamp_sec")
|
|
3939
|
+
timestampStr String @map("timestamp_str")
|
|
3940
|
+
|
|
3941
|
+
risk RiskLevel @default(LOW)
|
|
3942
|
+
metadata Json?
|
|
3943
|
+
|
|
3944
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
3945
|
+
|
|
3946
|
+
@@index([sessionId, timestampSec])
|
|
3947
|
+
@@index([sessionId, eventType])
|
|
3948
|
+
@@map("proctoring_events")
|
|
3949
|
+
@@schema("public")
|
|
3950
|
+
}
|
|
3951
|
+
|
|
3821
3952
|
enum AsyncOperationStatus {
|
|
3822
3953
|
PENDING
|
|
3823
3954
|
IN_PROGRESS
|