Handover workspace

ERS, Todo, OfferReview, and Docu in one view

Imported from live server docs, code structure, and deployment notes.

Apr 3, 2026, 12:38 PM

OfferReview

Data Model

No summary found yet.

_generated/04-data-model.md

Updated Apr 3, 2026, 12:38 PM

Data Model

Overview

  • Parsed entities: 38
  • Source: prisma/schema.prisma

AccessRequest

  • Kind: model
  • Summary: 15 fields
  • id: String
  • requestCode: String
  • fullName: String
  • workEmail: String
  • department: String
  • requestedRole: RequestedRole
  • reason: String
  • managerEmail: String?
  • status: AccessRequestStatus
  • decidedByUserId: String?

AccessRequestStatus

  • Kind: enum
  • Summary: 3 values
  • PENDING
  • APPROVED
  • REJECTED

AuditEventType

  • Kind: enum
  • Summary: 39 values
  • USER_LOGIN_SUCCESS
  • USER_LOGIN_FAILED
  • USER_CREATED
  • USER_ROLE_CHANGED
  • USER_ENABLED
  • USER_DISABLED
  • PASSWORD_RESET_REQUIRED_SET
  • PASSWORD_RESET_REQUIRED_CLEARED
  • INVITE_RESENT
  • CANDIDATE_CREATED
  • CANDIDATE_STATUS_CHANGED
  • CANDIDATE_UPDATED

AuditLog

  • Kind: model
  • Summary: 14 fields
  • id: String
  • eventType: AuditEventType
  • userId: String?
  • actorRoleSnapshot: String?
  • entityType: String?
  • entityId: String?
  • summary: String?
  • beforeJson: Json?
  • afterJson: Json?
  • metadataJson: Json?

AuthToken

  • Kind: model
  • Summary: 8 fields
  • id: String
  • userId: String
  • tokenHash: String
  • type: AuthTokenType
  • expiresAt: DateTime
  • usedAt: DateTime?
  • createdAt: DateTime
  • user: User

AuthTokenType

  • Kind: enum
  • Summary: 2 values
  • INVITE
  • RESET_PASSWORD

Candidate

  • Kind: model
  • Summary: 25 fields
  • id: String
  • candidateCode: String
  • fullName: String?
  • applyingFor: String
  • positionId: String?
  • departmentId: String?
  • email: String?
  • phone: String?
  • source: String?
  • notes: String?

CandidateDocument

  • Kind: model
  • Summary: 22 fields
  • id: String
  • candidateId: String
  • category: DocumentCategory
  • filename: String
  • mimeType: String
  • sizeBytes: Int
  • storageKey: String
  • aiSummary: String?
  • aiCompetency: String?
  • aiComparison90: String?

CandidateStatus

  • Kind: enum
  • Summary: 9 values
  • NEW
  • HR_SCREENED
  • MANAGER_EVAL_PENDING
  • MANAGER_REVIEWED
  • TO_SMO
  • APPROVED
  • REJECTED
  • KIV
  • COMPLETED

Decision

  • Kind: model
  • Summary: 9 fields
  • id: String
  • candidateId: String
  • decision: DecisionType
  • notes: String?
  • decidedByUserId: String?
  • decidedAt: DateTime
  • createdAt: DateTime
  • candidate: Candidate
  • decidedByUser: User?

DecisionType

  • Kind: enum
  • Summary: 3 values
  • APPROVED
  • REJECTED
  • KIV

Department

  • Kind: model
  • Summary: 8 fields
  • id: String
  • name: String
  • isActive: Boolean
  • createdAt: DateTime
  • updatedAt: DateTime
  • candidates: Candidate[]
  • positions: Position[]
  • users: User[]

DocumentCategory

  • Kind: enum
  • Summary: 9 values
  • RESUME
  • PORTFOLIO
  • CERT
  • OTHER
  • SCREENING_NOTES
  • EVALUATION
  • SMO_INTERVIEW
  • DECISION
  • OFFER

DocumentStatus

  • Kind: enum
  • Summary: 2 values
  • AVAILABLE
  • PENDING_SCAN

EmailTemplate

  • Kind: model
  • Summary: 10 fields
  • id: String
  • key: String
  • name: String
  • description: String?
  • subject: String
  • bodyHtml: String
  • bodyText: String?
  • enabled: Boolean
  • createdAt: DateTime
  • updatedAt: DateTime

EvaluationTemplate

  • Kind: model
  • Summary: 14 fields
  • id: String
  • name: String
  • appliesToPosition: String
  • version: Int
  • status: TemplateStatus
  • schemaJson: String
  • enableQuickScreen: Boolean
  • quickQuestionIds: String
  • createdByUserId: String?
  • publishedAt: DateTime?

HrOutcome

  • Kind: enum
  • Summary: 3 values
  • PASS
  • KIV
  • REJECT

HrScreening

  • Kind: model
  • Summary: 14 fields
  • id: String
  • candidateId: String
  • mode: HrScreeningMode
  • responsesJson: String
  • outcome: HrOutcome?
  • notes: String?
  • completedAt: DateTime?
  • templateId: String?
  • templateVersion: Int?
  • createdByUserId: String?

HrScreeningMode

  • Kind: enum
  • Summary: 1 values
  • QUICK

InAppNotification

  • Kind: model
  • Summary: 11 fields
  • id: String
  • userId: String
  • title: String
  • body: String
  • eventType: String
  • entityType: String?
  • entityId: String?
  • deepLink: String?
  • isRead: Boolean
  • createdAt: DateTime

ManagerRecommendation

  • Kind: enum
  • Summary: 3 values
  • PROCEED
  • KIV
  • REJECT

ManagerReview

  • Kind: model
  • Summary: 14 fields
  • id: String
  • candidateId: String
  • mode: ManagerReviewMode
  • responsesJson: String
  • recommendation: ManagerRecommendation?
  • summaryNotes: String?
  • submittedAt: DateTime?
  • templateId: String?
  • templateVersion: Int?
  • submittedByUserId: String?

ManagerReviewMode

  • Kind: enum
  • Summary: 1 values
  • QUICK

NotificationChannel

  • Kind: enum
  • Summary: 3 values
  • EMAIL
  • IN_APP
  • BOTH

NotificationRule

  • Kind: model
  • Summary: 9 fields
  • id: String
  • eventType: String
  • enabled: Boolean
  • channels: Json
  • roleRecipients: Json?
  • userRecipientIds: Json?
  • companyAll: Boolean
  • createdAt: DateTime
  • updatedAt: DateTime

Outbox

  • Kind: model
  • Summary: 14 fields
  • id: String
  • eventType: String
  • channel: NotificationChannel
  • recipientsJson: Json
  • payloadJson: Json
  • idempotencyKey: String
  • status: OutboxStatus
  • retryCount: Int
  • manualRetryCount: Int
  • lastError: String?

OutboxLog

  • Kind: model
  • Summary: 8 fields
  • id: String
  • outboxId: String
  • attemptNo: Int
  • provider: OutboxProvider
  • status: String
  • responseJson: Json?
  • createdAt: DateTime
  • outbox: Outbox

OutboxProvider

  • Kind: enum
  • Summary: 2 values
  • RESEND
  • IN_APP

OutboxStatus

  • Kind: enum
  • Summary: 4 values
  • QUEUED
  • SENT
  • FAILED
  • RETRYING

Permission

  • Kind: model
  • Summary: 5 fields
  • id: String
  • key: String
  • description: String
  • createdAt: DateTime
  • roles: RolePermission[]

Position

  • Kind: model
  • Summary: 8 fields
  • id: String
  • name: String
  • departmentId: String
  • isActive: Boolean
  • createdAt: DateTime
  • updatedAt: DateTime
  • candidates: Candidate[]
  • department: Department

RequestedRole

  • Kind: enum
  • Summary: 4 values
  • HR
  • MANAGER
  • SMO
  • ADMIN

Role

  • Kind: enum
  • Summary: 4 values
  • ADMIN
  • HR
  • MANAGER
  • SMO

RolePermission

  • Kind: model
  • Summary: 5 fields
  • id: String
  • role: Role
  • permissionId: String
  • createdAt: DateTime
  • permission: Permission

SystemSettings

  • Kind: model
  • Summary: 14 fields
  • id: Int
  • quietHoursEnabled: Boolean
  • quietHoursStart: String
  • quietHoursEnd: String
  • quietHoursApplyEmail: Boolean
  • quietHoursApplyInApp: Boolean
  • emailSignatureHtml: String?
  • emailSignatureText: String?
  • smoQuestionPrompt: String?
  • slaJson: Json?

TemplateStatus

  • Kind: enum
  • Summary: 3 values
  • DRAFT
  • PUBLISHED
  • ARCHIVED

User

  • Kind: model
  • Summary: 23 fields
  • id: String
  • email: String
  • fullName: String?
  • passwordHash: String?
  • role: Role
  • status: UserStatus
  • departmentId: String?
  • forcePasswordReset: Boolean
  • lastLoginAt: DateTime?
  • createdAt: DateTime

UserStatus

  • Kind: enum
  • Summary: 3 values
  • ACTIVE
  • DISABLED
  • PENDING_INVITE