@adaptware/eagles-db 0.4.36 → 0.4.37

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.
Files changed (86) hide show
  1. package/client/edge.js +874 -10
  2. package/client/index-browser.js +905 -40
  3. package/client/index.d.ts +81912 -27565
  4. package/client/index.js +874 -10
  5. package/client/libquery_engine-darwin.dylib.node +0 -0
  6. package/client/package.json +1 -1
  7. package/client/schema.prisma +1584 -108
  8. package/client/wasm.js +874 -10
  9. package/package.json +1 -1
  10. package/prisma/.DS_Store +0 -0
  11. package/prisma/migrations/20260519120000_migrate_shortlisted_to_selected/migration.sql +2 -0
  12. package/prisma/schema/.DS_Store +0 -0
  13. package/prisma/schema/CandidateQuestionResponse.prisma +1 -0
  14. package/prisma/schema/UserRole.prisma +1 -0
  15. package/prisma/schema/action.prisma +5 -0
  16. package/prisma/schema/activityEvent.prisma +138 -0
  17. package/prisma/schema/activityLog.prisma +3 -0
  18. package/prisma/schema/applicationAnalytics.prisma +87 -0
  19. package/prisma/schema/applications.prisma +12 -2
  20. package/prisma/schema/approval.prisma +2 -0
  21. package/prisma/schema/assessment.prisma +1 -0
  22. package/prisma/schema/assessmentLibrary.prisma +1 -0
  23. package/prisma/schema/assessmentQuestion.prisma +1 -0
  24. package/prisma/schema/assessmentRoundAnalytics.prisma +119 -0
  25. package/prisma/schema/assignment.prisma +3 -0
  26. package/prisma/schema/assignmentLibrary.prisma +1 -0
  27. package/prisma/schema/assignmentRoundAnalytics.prisma +109 -0
  28. package/prisma/schema/authModule.prisma +3 -0
  29. package/prisma/schema/budget.prisma +6 -0
  30. package/prisma/schema/calendly.prisma +2 -0
  31. package/prisma/schema/candidateProfile.prisma +2 -0
  32. package/prisma/schema/communication.prisma +11 -0
  33. package/prisma/schema/contactUs.prisma +2 -0
  34. package/prisma/schema/document.prisma +5 -4
  35. package/prisma/schema/evaluationPlan.prisma +35 -10
  36. package/prisma/schema/feedback.prisma +1 -0
  37. package/prisma/schema/fitCheck.prisma +3 -0
  38. package/prisma/schema/google.prisma +2 -0
  39. package/prisma/schema/integration.prisma +13 -0
  40. package/prisma/schema/interview.prisma +9 -0
  41. package/prisma/schema/interviewNotes.prisma +1 -0
  42. package/prisma/schema/interviewRoundAnalytics.prisma +140 -0
  43. package/prisma/schema/interviewerAnalytics.prisma +129 -0
  44. package/prisma/schema/jobApplicationFields.prisma +3 -0
  45. package/prisma/schema/jobApplicationResponse.prisma +1 -0
  46. package/prisma/schema/jobApplicationTemplate.prisma +3 -0
  47. package/prisma/schema/jobDescription.prisma +43 -35
  48. package/prisma/schema/jobDescriptionData.prisma +1 -0
  49. package/prisma/schema/jobProfile.prisma +3 -0
  50. package/prisma/schema/jobRoundAnalytics.prisma +101 -0
  51. package/prisma/schema/liveAnalysis.prisma +1 -0
  52. package/prisma/schema/message.prisma +2 -0
  53. package/prisma/schema/migrations/20260519120000_add_analytics_schema/migration.sql +84 -0
  54. package/prisma/schema/migrations/20260625120000_add_interviewer_analytics/migration.sql +26 -0
  55. package/prisma/schema/migrations/20260629120000_add_user_lifecycle_activity_events/migration.sql +13 -0
  56. package/prisma/schema/migrations/20260629140000_drop_organisation_org_code/migration.sql +2 -0
  57. package/prisma/schema/migrations/20260629160000_employee_codes_dual_interviewer_analytics/migration.sql +87 -0
  58. package/prisma/schema/migrations/20260630120000_add_application_sources/migration.sql +38 -0
  59. package/prisma/schema/migrations/20260701120000_add_source_effectiveness_analytics/migration.sql +40 -0
  60. package/prisma/schema/migrations/20260702120000_add_analytics_daily_tables/migration.sql +232 -0
  61. package/prisma/schema/migrations/{20260710120000_add_resume_rendered_export_fields → 20260706120000_add_resume_rendered_export}/migration.sql +5 -2
  62. package/prisma/schema/notes.prisma +1 -0
  63. package/prisma/schema/ongoingEvaluation.prisma +7 -0
  64. package/prisma/schema/openJobAnalytics.prisma +85 -0
  65. package/prisma/schema/organisation.prisma +39 -31
  66. package/prisma/schema/organisationConfig.prisma +1 -0
  67. package/prisma/schema/permission.prisma +1 -0
  68. package/prisma/schema/pipelineDistributionAnalytics.prisma +64 -0
  69. package/prisma/schema/promise.prisma +3 -0
  70. package/prisma/schema/questions.prisma +4 -0
  71. package/prisma/schema/refreshToken.prisma +2 -0
  72. package/prisma/schema/reportingOverviewJobAnalytics.prisma +49 -0
  73. package/prisma/schema/resume.prisma +5 -4
  74. package/prisma/schema/resumeData.prisma +1 -0
  75. package/prisma/schema/roundAnalytics.prisma +145 -0
  76. package/prisma/schema/schema.prisma +2 -0
  77. package/prisma/schema/source.prisma +36 -0
  78. package/prisma/schema/sourceEffectivenessAnalytics.prisma +79 -0
  79. package/prisma/schema/suggestion.prisma +1 -0
  80. package/prisma/schema/transcript.prisma +1 -0
  81. package/prisma/schema/user.prisma +10 -0
  82. package/prisma/schema/userProfile.prisma +2 -0
  83. package/prisma/schema/zoomMeeting.prisma +5 -0
  84. package/prisma/schema/migrations/20260522120000_ongoing_evaluation_record_kind/migration.sql +0 -25
  85. package/prisma/schema/migrations/20260523120000_replace_record_kind_with_is_committed/migration.sql +0 -24
  86. package/prisma/schema/migrations/20260528120000_drop_job_description_recommendation_config/migration.sql +0 -2
@@ -6,6 +6,8 @@ enum CommChannel {
6
6
  EMAIL
7
7
  SMS
8
8
  CALL
9
+
10
+ @@schema("public")
9
11
  }
10
12
 
11
13
  enum CommProvider {
@@ -18,11 +20,15 @@ enum CommProvider {
18
20
  OUTLOOK
19
21
  GENERIC_SMTP
20
22
  GENERIC
23
+
24
+ @@schema("public")
21
25
  }
22
26
 
23
27
  enum CommDirection {
24
28
  INBOUND
25
29
  OUTBOUND
30
+
31
+ @@schema("public")
26
32
  }
27
33
 
28
34
  enum CommMessageStatus {
@@ -32,6 +38,8 @@ enum CommMessageStatus {
32
38
  READ
33
39
  FAILED
34
40
  RECEIVED
41
+
42
+ @@schema("public")
35
43
  }
36
44
 
37
45
  /// Per-organisation provider selection + (encrypted) credentials for one channel.
@@ -60,6 +68,7 @@ model ChannelProviderConfig {
60
68
  @@unique([organisation_id, channel, provider])
61
69
  @@index([organisation_id, channel])
62
70
  @@index([organisation_id, channel, is_active])
71
+ @@schema("public")
63
72
  }
64
73
 
65
74
  /// A logical conversation thread with one external party on one channel.
@@ -104,6 +113,7 @@ model Conversation {
104
113
  @@index([external_id])
105
114
  @@index([organisation_id, application_id])
106
115
  @@index([organisation_id, job_description_id])
116
+ @@schema("public")
107
117
  }
108
118
 
109
119
  /// Individual message in a conversation. Inbound + outbound share the same model.
@@ -153,4 +163,5 @@ model CommunicationMessage {
153
163
  @@index([organisation_id, status])
154
164
  @@index([organisation_id, application_id])
155
165
  @@index([organisation_id, job_description_id])
166
+ @@schema("public")
156
167
  }
@@ -9,4 +9,6 @@ model ContactUs {
9
9
  createdAt DateTime @default(now())
10
10
  updatedAt DateTime @updatedAt
11
11
  is_active Boolean @default(true)
12
+
13
+ @@schema("public")
12
14
  }
@@ -23,10 +23,10 @@ model Document {
23
23
  // Relations
24
24
  organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
25
25
  candidate User? @relation(fields: [candidate_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
26
- resume Resume?
27
- resume_rendered_export Resume? @relation("RenderedResumeExportDocument")
28
- job_description_source JobDescription? @relation("SourceDocument")
29
- job_description_rendered JobDescription? @relation("RenderedJdDocument")
26
+ resume Resume? @relation("ResumeSourceDocument")
27
+ resume_rendered_export Resume? @relation("RenderedResumeExport")
28
+ job_description_source JobDescription? @relation("SourceDocument")
29
+ job_description_rendered JobDescription? @relation("RenderedJdDocument")
30
30
  interview_recording Interview?
31
31
  job_application_responses JobApplicationResponse[]
32
32
  assignment_solution Assignment? @relation("AssignmentSolutionDocument")
@@ -36,4 +36,5 @@ model Document {
36
36
  @@index([candidate_id])
37
37
  @@index([organisation_id, candidate_id])
38
38
  @@index([file_hash])
39
+ @@schema("public")
39
40
  }
@@ -3,6 +3,18 @@ enum RoundType {
3
3
  INTERVIEW
4
4
  ASSIGNMENT
5
5
  SCREENING
6
+
7
+ @@schema("public")
8
+ }
9
+
10
+ enum EvaluationCategory {
11
+ EXPERIENCE_SCREENING
12
+ TECHNICAL_SCREENING
13
+ TECHNICAL_INTERVIEW
14
+ BUSINESS_ROUND
15
+ BEHAVIORAL_ROUND
16
+
17
+ @@schema("public")
6
18
  }
7
19
 
8
20
  enum EvaluationRoundFormat {
@@ -32,6 +44,8 @@ enum EvaluationRoundFormat {
32
44
  TREADSPACE_AI_ASSISTED
33
45
  EXTERNAL_VIDEO_AI_ASSISTED
34
46
  EXTERNAL_VIDEO_UNASSISTED
47
+
48
+ @@schema("public")
35
49
  }
36
50
 
37
51
  enum EvaluationType {
@@ -40,28 +54,36 @@ enum EvaluationType {
40
54
  TREADSPACE_FULL_AI
41
55
  EXTERNAL_AI_ASSISTED
42
56
  NON_AI_ASSISTED
57
+
58
+ @@schema("public")
43
59
  }
44
60
 
45
61
  enum EvaluationPlanType {
46
62
  CUSTOM
47
63
  GENERIC
48
64
  DELETED
65
+
66
+ @@schema("public")
49
67
  }
50
68
 
51
69
  enum EvaluationPlanShareScope {
52
70
  PRIVATE
53
71
  CREATOR
54
72
  ORGANIZATION
73
+
74
+ @@schema("public")
55
75
  }
56
76
 
57
77
  enum DurationUnit {
58
78
  MINUTES
59
79
  HOURS
60
80
  DAYS
81
+
82
+ @@schema("public")
61
83
  }
62
84
 
63
85
  model EvaluationPlan {
64
- id String @id @default(uuid())
86
+ id String @id @default(uuid())
65
87
  job_description_id String
66
88
  assessment_id String?
67
89
  assignment_library_id String?
@@ -70,33 +92,36 @@ model EvaluationPlan {
70
92
  format EvaluationRoundFormat?
71
93
  topics String[]
72
94
  assignee String?
73
- elimination_round Boolean @default(false)
74
- evaluation_type EvaluationType @default(TREADSPACE_AI_ASSISTED)
95
+ elimination_round Boolean @default(false)
96
+ evaluation_type EvaluationType @default(TREADSPACE_AI_ASSISTED)
75
97
  type_of_round RoundType
98
+ round_purpose String?
76
99
  timeline Int?
77
100
  order_no Int?
78
101
  details Json?
79
- plan_type EvaluationPlanType @default(GENERIC)
102
+ plan_type EvaluationPlanType @default(GENERIC)
80
103
  share_scope EvaluationPlanShareScope @default(PRIVATE)
81
104
  duration Int?
82
105
  duration_unit DurationUnit?
83
106
  deadline Int?
107
+ category EvaluationCategory?
84
108
  created_by String
85
109
  updated_by String
86
- created_at DateTime @default(now())
87
- updated_at DateTime @updatedAt
88
- is_active Boolean @default(true)
110
+ created_at DateTime @default(now())
111
+ updated_at DateTime @updatedAt
112
+ is_active Boolean @default(true)
89
113
  // Relations
90
- jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade)
114
+ jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade)
91
115
  questions Question[] // One evaluation plan → many questions
92
116
  interviews Interview[]
93
117
  applications Application[]
94
118
  // New optional one-to-one relation with AssessmentLibrary
95
- assessment AssessmentLibrary? @relation(fields: [assessment_id], references: [id], onDelete: SetNull)
96
- assignment_library AssignmentLibrary? @relation(fields: [assignment_library_id], references: [id], onDelete: SetNull)
119
+ assessment AssessmentLibrary? @relation(fields: [assessment_id], references: [id], onDelete: SetNull)
120
+ assignment_library AssignmentLibrary? @relation(fields: [assignment_library_id], references: [id], onDelete: SetNull)
97
121
  ongoing_evaluations OngoingEvaluation[]
98
122
 
99
123
  @@index([job_description_id])
100
124
  @@index([job_description_id, plan_type, share_scope])
101
125
  @@index([created_by, share_scope])
126
+ @@schema("public")
102
127
  }
@@ -15,4 +15,5 @@ model Feedback {
15
15
 
16
16
  @@unique([interview_id, order_no])
17
17
  @@index([interview_id])
18
+ @@schema("public")
18
19
  }
@@ -2,6 +2,8 @@ enum FitCheckStatus {
2
2
  RECOMMENDED
3
3
  TO_REVIEW
4
4
  NOT_RECOMMENDED
5
+
6
+ @@schema("public")
5
7
  }
6
8
 
7
9
  model FitCheck {
@@ -55,4 +57,5 @@ model FitCheck {
55
57
  /// Ensure one FitCheck per (resume_id, job_description_id) pair
56
58
  @@unique([resume_id, job_description_id])
57
59
  @@index([resume_id])
60
+ @@schema("public")
58
61
  }
@@ -13,4 +13,6 @@ model Google {
13
13
  created_by String
14
14
  updated_by String
15
15
  is_active Boolean @default(true)
16
+
17
+ @@schema("public")
16
18
  }
@@ -6,18 +6,24 @@ enum IntegrationProvider {
6
6
  MICROSOFT
7
7
  ZOOM
8
8
  CALENDLY
9
+
10
+ @@schema("public")
9
11
  }
10
12
 
11
13
  enum IntegrationAuthType {
12
14
  OAUTH2
13
15
  API_KEY
14
16
  SSO
17
+
18
+ @@schema("public")
15
19
  }
16
20
 
17
21
  enum SyncDirection {
18
22
  PUSH
19
23
  PULL
20
24
  BIDIRECTIONAL
25
+
26
+ @@schema("public")
21
27
  }
22
28
 
23
29
  enum SyncEntityType {
@@ -25,12 +31,16 @@ enum SyncEntityType {
25
31
  JOB_OPENING
26
32
  INTERVIEW
27
33
  APPLICATION
34
+
35
+ @@schema("public")
28
36
  }
29
37
 
30
38
  enum SyncStatus {
31
39
  SYNCED
32
40
  PENDING
33
41
  FAILED
42
+
43
+ @@schema("public")
34
44
  }
35
45
 
36
46
  model IntegrationCredential {
@@ -55,6 +65,7 @@ model IntegrationCredential {
55
65
 
56
66
  @@unique([organisation_id, provider])
57
67
  @@index([provider])
68
+ @@schema("public")
58
69
  }
59
70
 
60
71
  model IntegrationJobSync {
@@ -74,6 +85,7 @@ model IntegrationJobSync {
74
85
 
75
86
  @@unique([job_description_id, provider])
76
87
  @@index([provider])
88
+ @@schema("public")
77
89
  }
78
90
 
79
91
  model ZohoSyncMapping {
@@ -95,4 +107,5 @@ model ZohoSyncMapping {
95
107
  @@unique([organisation_id, entity_type, treadspace_id])
96
108
  @@index([zoho_record_id])
97
109
  @@index([sync_status])
110
+ @@schema("public")
98
111
  }
@@ -6,6 +6,8 @@ enum InterviewStatus {
6
6
  NO_SHOW // Candidate or interviewer failed to appear
7
7
  EVALUATION_PENDING // Waiting for feedback or evaluation
8
8
  EVALUATED // Feedback completed and locked
9
+
10
+ @@schema("public")
9
11
  }
10
12
 
11
13
  enum InterviewFeedback {
@@ -13,16 +15,22 @@ enum InterviewFeedback {
13
15
  HIRE
14
16
  NO_HIRE
15
17
  STRONG_NO_HIRE
18
+
19
+ @@schema("public")
16
20
  }
17
21
 
18
22
  enum InterviewPlatform {
19
23
  TREADSPACE
20
24
  ZOOM
25
+
26
+ @@schema("public")
21
27
  }
22
28
 
23
29
  enum AiAssistanceMode {
24
30
  NONE
25
31
  ASSISTED
32
+
33
+ @@schema("public")
26
34
  }
27
35
 
28
36
  model Interview {
@@ -109,4 +117,5 @@ model Interview {
109
117
  @@index([candidate_id])
110
118
  @@index([interviewer_id])
111
119
  @@index([job_description_id])
120
+ @@schema("public")
112
121
  }
@@ -14,4 +14,5 @@ model InterviewNotes {
14
14
  interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
15
15
 
16
16
  @@index([interview_id])
17
+ @@schema("public")
17
18
  }
@@ -0,0 +1,140 @@
1
+ enum InterviewRecommendation {
2
+ ACCEPTED
3
+ REJECTED
4
+ UNSURE
5
+
6
+ @@schema("analytics")
7
+ }
8
+
9
+ model InterviewRoundAnalytics {
10
+ id String @id @default(uuid())
11
+
12
+ organisation_id String
13
+ round_id String @unique
14
+ interview_id String @unique
15
+ application_id String?
16
+ candidate_id String
17
+ job_description_id String
18
+ evaluation_plan_id String
19
+
20
+ job_code String?
21
+ job_number Int?
22
+ role_title String?
23
+ hiring_manager_id String?
24
+ department String?
25
+ location String?
26
+
27
+ round_name String?
28
+ evaluation_category EvaluationCategory?
29
+ round_type RoundType?
30
+ round_format EvaluationRoundFormat?
31
+ plan_order_no Int?
32
+ plan_type EvaluationPlanType?
33
+ is_custom Boolean @default(false)
34
+
35
+ interviewer_id String?
36
+ interviewer_employee_id String?
37
+ interviewer_name String?
38
+
39
+ candidate_name String?
40
+ candidate_email String?
41
+
42
+ evaluation_type EvaluationType?
43
+ ai_assistance_mode AiAssistanceMode?
44
+ interview_platform InterviewPlatform?
45
+ interview_status InterviewStatus?
46
+
47
+ scheduled_start_at DateTime?
48
+ scheduled_end_at DateTime?
49
+ actual_start_at DateTime?
50
+ actual_end_at DateTime?
51
+ evaluated_at DateTime?
52
+ first_assigned_at DateTime?
53
+ duration_minutes Int?
54
+
55
+ human_rating String?
56
+ ai_rating String?
57
+ recommendation InterviewRecommendation?
58
+ ai_disagrees_with_ai Boolean?
59
+
60
+ difficulty_score Float?
61
+ supportiveness_score Float?
62
+ topics_coverage_percent Float?
63
+
64
+ updated_at DateTime @updatedAt
65
+
66
+ @@index([organisation_id, evaluated_at])
67
+ @@index([organisation_id, interviewer_id, evaluated_at])
68
+ @@index([job_description_id])
69
+ @@index([application_id])
70
+ @@index([organisation_id, hiring_manager_id])
71
+ @@map("interview_round_analytics")
72
+ @@schema("analytics")
73
+ }
74
+
75
+ model InterviewRoundAnalyticsDaily {
76
+ id String @id @default(uuid())
77
+
78
+ snapshot_date DateTime @db.Date
79
+
80
+ organisation_id String
81
+ round_id String
82
+ interview_id String
83
+ application_id String?
84
+ candidate_id String
85
+ job_description_id String
86
+ evaluation_plan_id String
87
+
88
+ job_code String?
89
+ job_number Int?
90
+ role_title String?
91
+ hiring_manager_id String?
92
+ department String?
93
+ location String?
94
+
95
+ round_name String?
96
+ evaluation_category EvaluationCategory?
97
+ round_type RoundType?
98
+ round_format EvaluationRoundFormat?
99
+ plan_order_no Int?
100
+ plan_type EvaluationPlanType?
101
+ is_custom Boolean @default(false)
102
+
103
+ interviewer_id String?
104
+ interviewer_employee_id String?
105
+ interviewer_name String?
106
+
107
+ candidate_name String?
108
+ candidate_email String?
109
+
110
+ evaluation_type EvaluationType?
111
+ ai_assistance_mode AiAssistanceMode?
112
+ interview_platform InterviewPlatform?
113
+ interview_status InterviewStatus?
114
+
115
+ scheduled_start_at DateTime?
116
+ scheduled_end_at DateTime?
117
+ actual_start_at DateTime?
118
+ actual_end_at DateTime?
119
+ evaluated_at DateTime?
120
+ first_assigned_at DateTime?
121
+ duration_minutes Int?
122
+
123
+ human_rating String?
124
+ ai_rating String?
125
+ recommendation InterviewRecommendation?
126
+ ai_disagrees_with_ai Boolean?
127
+
128
+ difficulty_score Float?
129
+ supportiveness_score Float?
130
+ topics_coverage_percent Float?
131
+
132
+ @@unique([snapshot_date, interview_id])
133
+ @@index([snapshot_date], map: "irad_snapshot_date_idx")
134
+ @@index([snapshot_date, organisation_id], map: "irad_snapshot_org_idx")
135
+ @@index([snapshot_date, organisation_id, interviewer_id], map: "irad_snapshot_org_interviewer_idx")
136
+ @@index([snapshot_date, job_description_id], map: "irad_snapshot_job_idx")
137
+ @@index([snapshot_date, organisation_id, evaluated_at], map: "irad_snapshot_org_evaluated_idx")
138
+ @@map("interview_round_analytics_daily")
139
+ @@schema("analytics")
140
+ }
@@ -0,0 +1,129 @@
1
+ model InterviewerOrganisationAnalytics {
2
+ id String @id @default(uuid())
3
+ organisation_id String
4
+ user_id String
5
+
6
+ name String?
7
+ employee_id String?
8
+
9
+ interview_count Int @default(0)
10
+ accepted_count Int @default(0)
11
+ rejected_count Int @default(0)
12
+ unsure_count Int @default(0)
13
+ ai_disagreement_count Int @default(0)
14
+ ai_disagreement_percent Float?
15
+ avg_difficulty Float?
16
+ avg_supportiveness Float?
17
+ avg_topics_coverage_percent Float?
18
+
19
+ updated_at DateTime @updatedAt
20
+
21
+ @@unique([organisation_id, user_id])
22
+ @@index([organisation_id])
23
+ @@index([organisation_id, user_id])
24
+ @@map("interviewer_organisation_analytics")
25
+ @@schema("analytics")
26
+ }
27
+
28
+ model InterviewerJobAnalytics {
29
+ id String @id @default(uuid())
30
+ organisation_id String
31
+ user_id String
32
+ job_description_id String
33
+
34
+ hiring_manager_id String?
35
+ department String?
36
+ location String?
37
+ role_title String?
38
+ job_code String?
39
+ opened_at DateTime?
40
+
41
+ name String?
42
+ employee_id String?
43
+
44
+ interview_count Int @default(0)
45
+ accepted_count Int @default(0)
46
+ rejected_count Int @default(0)
47
+ unsure_count Int @default(0)
48
+ ai_disagreement_count Int @default(0)
49
+ ai_disagreement_percent Float?
50
+ avg_difficulty Float?
51
+ avg_supportiveness Float?
52
+ avg_topics_coverage_percent Float?
53
+
54
+ updated_at DateTime @updatedAt
55
+
56
+ @@unique([organisation_id, user_id, job_description_id])
57
+ @@index([organisation_id, job_description_id])
58
+ @@index([organisation_id, hiring_manager_id])
59
+ @@index([organisation_id, department])
60
+ @@index([organisation_id, location])
61
+ @@index([organisation_id, user_id])
62
+ @@map("interviewer_job_analytics")
63
+ @@schema("analytics")
64
+ }
65
+
66
+ model InterviewerOrganisationAnalyticsDaily {
67
+ id String @id @default(uuid())
68
+ snapshot_date DateTime @db.Date
69
+ organisation_id String
70
+ user_id String
71
+
72
+ name String?
73
+ employee_id String?
74
+
75
+ interview_count Int @default(0)
76
+ accepted_count Int @default(0)
77
+ rejected_count Int @default(0)
78
+ unsure_count Int @default(0)
79
+ ai_disagreement_count Int @default(0)
80
+ ai_disagreement_percent Float?
81
+ avg_difficulty Float?
82
+ avg_supportiveness Float?
83
+ avg_topics_coverage_percent Float?
84
+
85
+ @@unique([snapshot_date, organisation_id, user_id])
86
+ @@index([snapshot_date], map: "ioad_snapshot_date_idx")
87
+ @@index([snapshot_date, organisation_id], map: "ioad_snapshot_org_idx")
88
+ @@index([snapshot_date, organisation_id, user_id], map: "ioad_snapshot_org_user_idx")
89
+ @@map("interviewer_organisation_analytics_daily")
90
+ @@schema("analytics")
91
+ }
92
+
93
+ model InterviewerJobAnalyticsDaily {
94
+ id String @id @default(uuid())
95
+ snapshot_date DateTime @db.Date
96
+ organisation_id String
97
+ user_id String
98
+ job_description_id String
99
+
100
+ hiring_manager_id String?
101
+ department String?
102
+ location String?
103
+ role_title String?
104
+ job_code String?
105
+ opened_at DateTime?
106
+
107
+ name String?
108
+ employee_id String?
109
+
110
+ interview_count Int @default(0)
111
+ accepted_count Int @default(0)
112
+ rejected_count Int @default(0)
113
+ unsure_count Int @default(0)
114
+ ai_disagreement_count Int @default(0)
115
+ ai_disagreement_percent Float?
116
+ avg_difficulty Float?
117
+ avg_supportiveness Float?
118
+ avg_topics_coverage_percent Float?
119
+
120
+ @@unique([snapshot_date, organisation_id, user_id, job_description_id])
121
+ @@index([snapshot_date], map: "ijad_snapshot_date_idx")
122
+ @@index([snapshot_date, organisation_id, job_description_id], map: "ijad_snapshot_org_job_idx")
123
+ @@index([snapshot_date, organisation_id, hiring_manager_id], map: "ijad_snapshot_org_hm_idx")
124
+ @@index([snapshot_date, organisation_id, department], map: "ijad_snapshot_org_dept_idx")
125
+ @@index([snapshot_date, organisation_id, location], map: "ijad_snapshot_org_loc_idx")
126
+ @@index([snapshot_date, organisation_id, user_id], map: "ijad_snapshot_org_user_idx")
127
+ @@map("interviewer_job_analytics_daily")
128
+ @@schema("analytics")
129
+ }
@@ -6,6 +6,8 @@ enum JobApplicationFieldType {
6
6
  MULTI_SELECT
7
7
  FILE
8
8
  DROP_DOWN
9
+
10
+ @@schema("public")
9
11
  }
10
12
 
11
13
  model JobApplicationField {
@@ -34,4 +36,5 @@ model JobApplicationField {
34
36
 
35
37
  /// Indexes
36
38
  @@index([organisation_id, template_id])
39
+ @@schema("public")
37
40
  }
@@ -30,4 +30,5 @@ model JobApplicationResponse {
30
30
  /// Partial unique on (application_id, job_application_field_id) WHERE job_application_field_id IS NOT NULL — see migration SQL
31
31
  @@index([application_id])
32
32
  @@index([job_application_field_id])
33
+ @@schema("public")
33
34
  }
@@ -1,6 +1,8 @@
1
1
  enum JobApplicationTemplateScope {
2
2
  ORGANIZATION
3
3
  JOB
4
+
5
+ @@schema("public")
4
6
  }
5
7
 
6
8
  model JobApplicationTemplate {
@@ -27,4 +29,5 @@ model JobApplicationTemplate {
27
29
  /// Indexes
28
30
  @@index([organisation_id, scope])
29
31
  @@index([job_description_id])
32
+ @@schema("public")
30
33
  }