@adaptware/eagles-db 0.5.43 → 0.5.45
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 +98 -22
- package/client/index-browser.js +91 -16
- package/client/index.d.ts +5968 -2561
- package/client/index.js +103 -27
- package/client/package.json +1 -1
- package/client/schema.prisma +176 -61
- package/client/wasm.js +98 -22
- package/package.json +1 -1
- package/prisma/schema/applications.prisma +18 -19
- package/prisma/schema/evaluationPlan.prisma +7 -0
- package/prisma/schema/integration.prisma +1 -0
- package/prisma/schema/interview.prisma +0 -1
- package/prisma/schema/jobApplicationFields.prisma +15 -17
- package/prisma/schema/jobApplicationResponse.prisma +3 -4
- package/prisma/schema/migrations/20260522120000_ongoing_evaluation_record_kind/migration.sql +25 -0
- package/prisma/schema/migrations/20260523120000_replace_record_kind_with_is_committed/migration.sql +24 -0
- package/prisma/schema/migrations/20260528120000_drop_job_description_recommendation_config/migration.sql +2 -0
- package/prisma/schema/migrations/20260710120000_add_resume_rendered_export_fields/migration.sql +9 -0
- package/prisma/schema/migrations/20260714120000_add_job_description_display_html_document/migration.sql +8 -0
- package/prisma/schema/migrations/20260716120000_add_offer_letters/migration.sql +183 -0
- package/prisma/schema/migrations/20260716140000_offer_schema_refinements/migration.sql +13 -0
- package/prisma/schema/migrations/20260716160000_offer_schema_hardening/migration.sql +95 -0
- package/prisma/schema/migrations/20260716180000_offer_letter_template_config/migration.sql +2 -0
- package/prisma/schema/migrations/20260716190000_add_evaluation_focus_areas/migration.sql +6 -0
- package/prisma/schema/migrations/20260717120000_offer_workflow_approval/migration.sql +30 -0
- package/prisma/schema/migrations/20260720120000_offer_letter_template_is_draft/migration.sql +5 -0
- package/prisma/schema/migrations/20260720140000_offer_status_split/migration.sql +51 -0
- package/prisma/schema/migrations/20260720140001_offer_status_split_backfill/migration.sql +37 -0
- package/prisma/schema/migrations/20260722120000_offer_draft_edited_html/migration.sql +13 -0
- package/prisma/schema/migrations/20260723150000_offer_withdraw_actor_no_show_reason/migration.sql +10 -0
- package/prisma/schema/migrations/20260724120000_open_job_offer_accepted_declined_counts/migration.sql +7 -0
- package/prisma/schema/migrations/20260811120000_add_integration_provider_razorpay/migration.sql +6 -0
- package/prisma/schema/migrations/20260812120000_add_billing_transactions/migration.sql +49 -0
- package/prisma/schema/migrations/20260812130000_drop_billing_transaction_gst_snapshots/migration.sql +3 -0
- package/prisma/schema/migrations/20260812180000_billing_transaction_invoice_number/migration.sql +5 -0
- package/prisma/schema/migrations/20260813120000_payment_webhooks_gst_refunds/migration.sql +79 -0
- package/prisma/schema/migrations/20260813140000_platform_gst_profiles/migration.sql +49 -0
- package/prisma/schema/migrations/20260813150000_rename_gst_profiles/migration.sql +53 -0
- package/prisma/schema/migrations/20260813160000_remove_gst_billing/migration.sql +16 -0
- package/prisma/schema/migrations/20260813170000_billing_licensing_unrecoverable/migration.sql +2 -0
- package/prisma/schema/migrations/20260813180000_billing_transaction_payment_method/migration.sql +2 -0
- package/prisma/schema/migrations/20260814090000_billing_transaction_purchaser_email/migration.sql +2 -0
- package/prisma/schema/migrations/20260816100000_billing_product_organisations/migration.sql +35 -0
- package/prisma/schema/migrations/20260816120000_merge_billing_product_organisations/migration.sql +25 -0
- package/prisma/schema/migrations/20260817120000_billing_payment_mismatch/migration.sql +7 -0
- package/prisma/schema/migrations/20260819120000_billing_product_prices/migration.sql +62 -0
- package/prisma/schema/migrations/20260819140000_billing_exchange_rates/migration.sql +25 -0
- package/prisma/schema/migrations/20260820120000_billing_transaction_failure_category/migration.sql +31 -0
- package/prisma/schema/migrations/20260820130000_backfill_billing_transaction_failure_details/migration.sql +23 -0
- package/prisma/schema/migrations/20260820140000_drop_billing_product_price_overrides/migration.sql +2 -0
- package/prisma/schema/migrations/20260821120000_drop_billing_product_and_mock_licensing/migration.sql +38 -0
- package/prisma/schema/migrations/20260824120000_billing_transaction_purchase_display_name/migration.sql +2 -0
- package/prisma/schema/migrations/20260831120000_user_communication_email/migration.sql +6 -0
- package/prisma/schema/migrations/20260901143000_assessment_question_bank_state/migration.sql +15 -0
- package/prisma/schema/migrations/20260902110000_drop_unused_feedback_table/migration.sql +2 -0
- package/prisma/schema/migrations/20260902120000_question_category_two_values/migration.sql +16 -0
- package/prisma/schema/migrations/20260902143000_question_bank_item_key/migration.sql +17 -0
- package/prisma/schema/migrations/20260903120000_split_round_type_assessment/migration.sql +9 -0
- package/prisma/schema/migrations/20260904110000_restore_round_type_assessment_enum/migration.sql +5 -0
- package/prisma/schema/migrations/20260904120000_revert_wrong_split_assessment_round_types/migration.sql +42 -0
- package/prisma/schema/organisation.prisma +2 -0
- package/prisma/schema/payment/billingTransaction.prisma +83 -0
- package/prisma/schema/payment/paymentWebhookEvent.prisma +28 -0
- package/prisma/.DS_Store +0 -0
- package/prisma/schema/.DS_Store +0 -0
- package/prisma/schema/feedback.prisma +0 -19
- package/prisma/schema/migrations/.DS_Store +0 -0
- package/prisma/schema/migrations/20260826160000_add_application_fit_check_report_document/.DS_Store +0 -0
package/client/package.json
CHANGED
package/client/schema.prisma
CHANGED
|
@@ -451,26 +451,25 @@ model Application {
|
|
|
451
451
|
fit_check_report_document_id String? @unique
|
|
452
452
|
fit_check_report_updated_flag Boolean @default(false)
|
|
453
453
|
fit_check_report_data Json? @default("{}")
|
|
454
|
-
|
|
455
454
|
/// Relations
|
|
456
|
-
evaluation_plan
|
|
457
|
-
candidate
|
|
458
|
-
organisation
|
|
459
|
-
resume
|
|
460
|
-
job_description
|
|
461
|
-
fit_check
|
|
462
|
-
recruiter
|
|
463
|
-
source
|
|
464
|
-
interviews
|
|
465
|
-
assignments
|
|
466
|
-
ongoing_evaluations
|
|
467
|
-
activity_logs
|
|
468
|
-
notes
|
|
469
|
-
conversations
|
|
470
|
-
communication_messages
|
|
471
|
-
job_application_responses
|
|
472
|
-
offer
|
|
473
|
-
fit_check_report_document
|
|
455
|
+
evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id])
|
|
456
|
+
candidate User @relation(fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
457
|
+
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
458
|
+
resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
459
|
+
job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
460
|
+
fit_check FitCheck?
|
|
461
|
+
recruiter User? @relation("ApplicationRecruiter", fields: [recruiter_id], references: [id])
|
|
462
|
+
source Source? @relation(fields: [source_id], references: [id], onDelete: SetNull)
|
|
463
|
+
interviews Interview[]
|
|
464
|
+
assignments Assignment[]
|
|
465
|
+
ongoing_evaluations OngoingEvaluation[]
|
|
466
|
+
activity_logs ActivityLog[]
|
|
467
|
+
notes Notes[]
|
|
468
|
+
conversations Conversation[]
|
|
469
|
+
communication_messages CommunicationMessage[]
|
|
470
|
+
job_application_responses JobApplicationResponse[]
|
|
471
|
+
offer Offer?
|
|
472
|
+
fit_check_report_document Document? @relation("ApplicationFitCheckReportDocument", fields: [fit_check_report_document_id], references: [id], onDelete: SetNull)
|
|
474
473
|
|
|
475
474
|
@@unique([candidate_id, job_description_id]) // Ensures candidate applies only once per job
|
|
476
475
|
@@index([candidate_id])
|
|
@@ -557,6 +556,8 @@ model AssessmentLibrary {
|
|
|
557
556
|
created_by String
|
|
558
557
|
updated_by String
|
|
559
558
|
is_active Boolean @default(true)
|
|
559
|
+
/// Frozen question plan, batch cursor, and bank-generation status (JSON).
|
|
560
|
+
generation_state Json?
|
|
560
561
|
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
561
562
|
questions Question[] // One assessment → many questions
|
|
562
563
|
assessments Assessment[]
|
|
@@ -1449,8 +1450,17 @@ model EvaluationCriteria {
|
|
|
1449
1450
|
@@schema("public")
|
|
1450
1451
|
}
|
|
1451
1452
|
|
|
1453
|
+
/// MCQ / interview round classification on EvaluationPlan and analytics.
|
|
1454
|
+
/// ASSESSMENT is the legacy value kept for backward compatibility — do not drop it.
|
|
1455
|
+
/// GENERAL_APTITUDE_ASSESSMENT and DOMAIN_KNOWLEDGE_ASSESSMENT are explicit split
|
|
1456
|
+
/// types for new aptitude vs domain-knowledge MCQ rounds only.
|
|
1452
1457
|
enum RoundType {
|
|
1458
|
+
/// Legacy MCQ round type; existing plans and analytics may still use this.
|
|
1453
1459
|
ASSESSMENT
|
|
1460
|
+
/// New explicit general-aptitude MCQ round.
|
|
1461
|
+
GENERAL_APTITUDE_ASSESSMENT
|
|
1462
|
+
/// New explicit domain-knowledge MCQ round.
|
|
1463
|
+
DOMAIN_KNOWLEDGE_ASSESSMENT
|
|
1454
1464
|
INTERVIEW
|
|
1455
1465
|
ASSIGNMENT
|
|
1456
1466
|
SCREENING
|
|
@@ -1545,26 +1555,6 @@ model EvaluationPlan {
|
|
|
1545
1555
|
@@schema("public")
|
|
1546
1556
|
}
|
|
1547
1557
|
|
|
1548
|
-
model Feedback {
|
|
1549
|
-
id String @id @default(uuid())
|
|
1550
|
-
interview_id String
|
|
1551
|
-
order_no Int
|
|
1552
|
-
|
|
1553
|
-
ai_feedback Json?
|
|
1554
|
-
human_feedback Json?
|
|
1555
|
-
|
|
1556
|
-
created_at DateTime @default(now())
|
|
1557
|
-
updated_at DateTime @updatedAt
|
|
1558
|
-
created_by String
|
|
1559
|
-
updated_by String
|
|
1560
|
-
is_active Boolean @default(true)
|
|
1561
|
-
interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
1562
|
-
|
|
1563
|
-
@@unique([interview_id, order_no])
|
|
1564
|
-
@@index([interview_id])
|
|
1565
|
-
@@schema("public")
|
|
1566
|
-
}
|
|
1567
|
-
|
|
1568
1558
|
enum FitCheckStatus {
|
|
1569
1559
|
RECOMMENDED
|
|
1570
1560
|
TO_REVIEW
|
|
@@ -1843,6 +1833,7 @@ enum IntegrationProvider {
|
|
|
1843
1833
|
MICROSOFT
|
|
1844
1834
|
ZOOM
|
|
1845
1835
|
CALENDLY
|
|
1836
|
+
RAZORPAY
|
|
1846
1837
|
|
|
1847
1838
|
@@schema("public")
|
|
1848
1839
|
}
|
|
@@ -2053,7 +2044,6 @@ model Interview {
|
|
|
2053
2044
|
ongoing_evaluation OngoingEvaluation?
|
|
2054
2045
|
transcripts Transcript[]
|
|
2055
2046
|
suggestions Suggestion[]
|
|
2056
|
-
feedback Feedback[]
|
|
2057
2047
|
interviewNotes InterviewNotes[]
|
|
2058
2048
|
liveAnalysis LiveAnalysis[]
|
|
2059
2049
|
zoom_meeting ZoomMeeting?
|
|
@@ -2370,27 +2360,25 @@ enum JobApplicationFieldType {
|
|
|
2370
2360
|
|
|
2371
2361
|
model JobApplicationField {
|
|
2372
2362
|
/// Primary key (UUID)
|
|
2373
|
-
id
|
|
2363
|
+
id String @id @default(uuid())
|
|
2374
2364
|
/// Foreign keys
|
|
2375
|
-
organisation_id
|
|
2376
|
-
template_id
|
|
2365
|
+
organisation_id String
|
|
2366
|
+
template_id String
|
|
2377
2367
|
/// Data fields
|
|
2378
|
-
field_type
|
|
2379
|
-
label
|
|
2380
|
-
description
|
|
2381
|
-
is_mandatory
|
|
2382
|
-
is_draft
|
|
2383
|
-
options
|
|
2368
|
+
field_type JobApplicationFieldType
|
|
2369
|
+
label String
|
|
2370
|
+
description String?
|
|
2371
|
+
is_mandatory Boolean @default(false)
|
|
2372
|
+
is_draft Boolean @default(true)
|
|
2373
|
+
options String[]
|
|
2384
2374
|
/// Audit fields
|
|
2385
|
-
is_active
|
|
2386
|
-
created_by
|
|
2387
|
-
updated_by
|
|
2388
|
-
created_at
|
|
2389
|
-
updated_at
|
|
2390
|
-
|
|
2375
|
+
is_active Boolean @default(true)
|
|
2376
|
+
created_by String
|
|
2377
|
+
updated_by String
|
|
2378
|
+
created_at DateTime @default(now())
|
|
2379
|
+
updated_at DateTime @updatedAt
|
|
2391
2380
|
/// order of question
|
|
2392
|
-
order_no
|
|
2393
|
-
|
|
2381
|
+
order_no Int? //nullable for now to allow migration
|
|
2394
2382
|
/// Relations
|
|
2395
2383
|
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
2396
2384
|
job_application_template JobApplicationTemplate @relation(fields: [template_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
@@ -2426,11 +2414,10 @@ model JobApplicationResponse {
|
|
|
2426
2414
|
updated_by String
|
|
2427
2415
|
is_active Boolean @default(true)
|
|
2428
2416
|
order_no Int? //nullable for now to allow migration
|
|
2429
|
-
|
|
2430
2417
|
/// Relations
|
|
2431
|
-
application
|
|
2432
|
-
field
|
|
2433
|
-
document
|
|
2418
|
+
application Application @relation(fields: [application_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
2419
|
+
field JobApplicationField? @relation(fields: [job_application_field_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
|
|
2420
|
+
document Document? @relation(fields: [document_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
2434
2421
|
|
|
2435
2422
|
// / Partial unique on (application_id, job_application_field_id) WHERE job_application_field_id IS NOT NULL — see migration SQL
|
|
2436
2423
|
@@index([application_id, is_active, order_no])
|
|
@@ -3572,6 +3559,8 @@ model Organisation {
|
|
|
3572
3559
|
licensing_ledger_entries LicensingLedgerEntry[]
|
|
3573
3560
|
license_package_organisations LicensePackageOrganisation[]
|
|
3574
3561
|
ai_cost_ledger_entries AiCostLedgerEntry[]
|
|
3562
|
+
billing_transactions BillingTransaction[]
|
|
3563
|
+
payment_webhook_events PaymentWebhookEvent[]
|
|
3575
3564
|
|
|
3576
3565
|
@@index([name])
|
|
3577
3566
|
@@schema("public")
|
|
@@ -3591,6 +3580,119 @@ model OrganisationConfig {
|
|
|
3591
3580
|
@@schema("public")
|
|
3592
3581
|
}
|
|
3593
3582
|
|
|
3583
|
+
// PAYMENT SERVICE boundary — portable payment microservice owns these enums/columns.
|
|
3584
|
+
|
|
3585
|
+
enum BillingTransactionStatus {
|
|
3586
|
+
INITIATED
|
|
3587
|
+
ORDER_CREATED
|
|
3588
|
+
PAYMENT_PENDING
|
|
3589
|
+
SUCCESS
|
|
3590
|
+
FAILED
|
|
3591
|
+
CANCELLED
|
|
3592
|
+
REFUND_PENDING
|
|
3593
|
+
REFUND_FAILED
|
|
3594
|
+
REFUNDED
|
|
3595
|
+
|
|
3596
|
+
@@schema("public")
|
|
3597
|
+
}
|
|
3598
|
+
|
|
3599
|
+
enum BillingTransactionType {
|
|
3600
|
+
PURCHASE
|
|
3601
|
+
TOP_UP
|
|
3602
|
+
REFUND
|
|
3603
|
+
|
|
3604
|
+
@@schema("public")
|
|
3605
|
+
}
|
|
3606
|
+
|
|
3607
|
+
enum BillingTransactionFailureCategory {
|
|
3608
|
+
RAZORPAY_ORDER
|
|
3609
|
+
RAZORPAY_PAYMENT
|
|
3610
|
+
REFUND
|
|
3611
|
+
INTERNAL
|
|
3612
|
+
|
|
3613
|
+
@@schema("public")
|
|
3614
|
+
}
|
|
3615
|
+
|
|
3616
|
+
/// Payment reconciliation state when Treadspace status is FAILED but Razorpay captured payment.
|
|
3617
|
+
enum BillingPaymentMismatchStatus {
|
|
3618
|
+
DETECTED
|
|
3619
|
+
UNFULFILLED
|
|
3620
|
+
|
|
3621
|
+
@@schema("public")
|
|
3622
|
+
}
|
|
3623
|
+
|
|
3624
|
+
/// Financial transaction lifecycle for organisation billing purchases.
|
|
3625
|
+
model BillingTransaction {
|
|
3626
|
+
id String @id @default(uuid())
|
|
3627
|
+
organisation_id String
|
|
3628
|
+
/// Opaque plan/product identity supplied at checkout. Not a catalog FK.
|
|
3629
|
+
purchase_reference String
|
|
3630
|
+
/// Human-readable snapshot captured at checkout for invoices and receipts.
|
|
3631
|
+
purchase_display_name String?
|
|
3632
|
+
transaction_type BillingTransactionType
|
|
3633
|
+
status BillingTransactionStatus @default(INITIATED)
|
|
3634
|
+
failure_category BillingTransactionFailureCategory?
|
|
3635
|
+
/// Human-readable or provider detail (e.g. Razorpay error_description).
|
|
3636
|
+
failure_reason String?
|
|
3637
|
+
amount Int
|
|
3638
|
+
currency String @default("INR")
|
|
3639
|
+
razorpay_order_id String?
|
|
3640
|
+
razorpay_payment_id String? @unique
|
|
3641
|
+
/// Razorpay payment method at capture (card, netbanking, upi, wallet, etc.).
|
|
3642
|
+
payment_method String?
|
|
3643
|
+
razorpay_subscription_id String?
|
|
3644
|
+
razorpay_refund_id String?
|
|
3645
|
+
refund_reason String?
|
|
3646
|
+
refund_amount Int?
|
|
3647
|
+
idempotency_key String @unique
|
|
3648
|
+
invoice_number String? @unique
|
|
3649
|
+
/// Email of the org Admin who initiated checkout (bill-to).
|
|
3650
|
+
purchaser_email String?
|
|
3651
|
+
/// Set when FAILED but Razorpay order/payment is captured (reconciliation path).
|
|
3652
|
+
payment_mismatch_status BillingPaymentMismatchStatus?
|
|
3653
|
+
/// Strict same-intent SUCCESS transaction that fulfilled the purchase (UNFULFILLED only).
|
|
3654
|
+
payment_mismatch_fulfilled_by_id String?
|
|
3655
|
+
created_at DateTime @default(now())
|
|
3656
|
+
updated_at DateTime @updatedAt
|
|
3657
|
+
|
|
3658
|
+
organisation Organisation @relation(fields: [organisation_id], references: [id])
|
|
3659
|
+
|
|
3660
|
+
@@index([organisation_id, status])
|
|
3661
|
+
@@index([purchase_reference])
|
|
3662
|
+
@@index([razorpay_order_id])
|
|
3663
|
+
@@map("billing_transactions")
|
|
3664
|
+
@@schema("public")
|
|
3665
|
+
}
|
|
3666
|
+
|
|
3667
|
+
enum PaymentWebhookEventStatus {
|
|
3668
|
+
RECEIVED
|
|
3669
|
+
PROCESSED
|
|
3670
|
+
FAILED
|
|
3671
|
+
|
|
3672
|
+
@@schema("public")
|
|
3673
|
+
}
|
|
3674
|
+
|
|
3675
|
+
/// Idempotent record of payment provider webhook deliveries.
|
|
3676
|
+
model PaymentWebhookEvent {
|
|
3677
|
+
id String @id @default(uuid())
|
|
3678
|
+
organisation_id String?
|
|
3679
|
+
provider String
|
|
3680
|
+
provider_event_id String
|
|
3681
|
+
event_type String
|
|
3682
|
+
status PaymentWebhookEventStatus @default(RECEIVED)
|
|
3683
|
+
billing_transaction_id String?
|
|
3684
|
+
error_message String?
|
|
3685
|
+
processed_at DateTime?
|
|
3686
|
+
created_at DateTime @default(now())
|
|
3687
|
+
|
|
3688
|
+
organisation Organisation? @relation(fields: [organisation_id], references: [id])
|
|
3689
|
+
|
|
3690
|
+
@@unique([provider, provider_event_id])
|
|
3691
|
+
@@index([status, created_at])
|
|
3692
|
+
@@map("payment_webhook_events")
|
|
3693
|
+
@@schema("public")
|
|
3694
|
+
}
|
|
3695
|
+
|
|
3594
3696
|
model Permission {
|
|
3595
3697
|
id String @id @default(uuid())
|
|
3596
3698
|
permissions String[] @default([])
|
|
@@ -3728,12 +3830,24 @@ enum Difficulty {
|
|
|
3728
3830
|
@@schema("public")
|
|
3729
3831
|
}
|
|
3730
3832
|
|
|
3833
|
+
enum QuestionCategory {
|
|
3834
|
+
/// Aptitude, logical reasoning, numerical, verbal — non-domain general tests.
|
|
3835
|
+
GENERAL_APTITUDE
|
|
3836
|
+
/// Role/domain/technical knowledge (skills from JD and competencies).
|
|
3837
|
+
DOMAIN_KNOWLEDGE
|
|
3838
|
+
|
|
3839
|
+
@@schema("public")
|
|
3840
|
+
}
|
|
3841
|
+
|
|
3731
3842
|
model Question {
|
|
3732
3843
|
id String @id @default(uuid())
|
|
3733
3844
|
assessment_library_id String?
|
|
3734
3845
|
evaluation_plan_id String?
|
|
3735
3846
|
candidate_id String?
|
|
3736
3847
|
skill String?
|
|
3848
|
+
category QuestionCategory?
|
|
3849
|
+
/// Stable idempotency key for reusable bank rows: `{generationSeed}:{planSlot}`.
|
|
3850
|
+
bank_item_key String?
|
|
3737
3851
|
question String
|
|
3738
3852
|
answer String
|
|
3739
3853
|
options String[] // For MCQ's
|
|
@@ -3750,6 +3864,7 @@ model Question {
|
|
|
3750
3864
|
evaluationPlan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull)
|
|
3751
3865
|
candidateResponse CandidateQuestionResponse[]
|
|
3752
3866
|
|
|
3867
|
+
@@unique([assessment_library_id, bank_item_key])
|
|
3753
3868
|
@@schema("public")
|
|
3754
3869
|
}
|
|
3755
3870
|
|