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

ERS

Data Model

No summary found yet.

_generated/04-data-model.md

Updated Apr 3, 2026, 12:38 PM

Data Model

Overview

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

AdminSettings

  • Kind: model
  • Summary: 6 fields
  • id: String
  • key: String
  • valueJson: Json
  • updatedByUserId: String
  • updatedByUser: User
  • updatedAt: DateTime

AuditEntityType

  • Kind: enum
  • Summary: 9 values
  • RENEWAL_CASE
  • DOCUMENT
  • JUSTIFICATION
  • SETTINGS
  • EMPLOYEE
  • USER
  • SIGNATURE
  • NOTIFICATION
  • EMAIL

AuditLog

  • Kind: model
  • Summary: 9 fields
  • id: String
  • actorUserId: String
  • actorUser: User
  • entityType: AuditEntityType
  • entityId: String
  • action: String
  • before: Json?
  • after: Json?
  • createdAt: DateTime

CeoDecision

  • Kind: enum
  • Summary: 3 values
  • NONE
  • APPROVE
  • REJECT

CompensationSource

  • Kind: enum
  • Summary: 2 values
  • RENEWAL_APPROVED
  • MANUAL

Document

  • Kind: model
  • Summary: 13 fields
  • id: String
  • renewalCaseId: String
  • renewalCase: RenewalCase
  • docType: DocumentType
  • fileName: String
  • mimeType: String
  • fileSize: Int
  • storageKey: String
  • uploadedByUserId: String
  • uploadedByUser: User

DocumentType

  • Kind: enum
  • Summary: 4 values
  • OFFER_LETTER
  • SIGNED_OFFER
  • PERFORMANCE_REPORT
  • OTHER

EmailOutbox

  • Kind: model
  • Summary: 11 fields
  • id: String
  • toEmail: String
  • subject: String
  • bodyHtml: String
  • bodyText: String
  • status: EmailStatus
  • providerMessageId: String?
  • errorMessage: String?
  • attempts: Int
  • lastAttemptAt: DateTime?

EmailStatus

  • Kind: enum
  • Summary: 3 values
  • PENDING
  • SENT
  • FAILED

Employee

  • Kind: model
  • Summary: 15 fields
  • id: String
  • employeeCode: String?
  • fullName: String
  • email: String?
  • department: String
  • roleTitle: String
  • grade: String
  • managerUserId: String?
  • managerUser: User?
  • employmentType: EmploymentType

EmployeeCompensation

  • Kind: model
  • Summary: 10 fields
  • id: String
  • employeeId: String
  • employee: Employee
  • effectiveDate: DateTime
  • monthlySalary: Decimal
  • grade: String
  • source: CompensationSource
  • renewalCaseId: String?
  • renewalCase: RenewalCase?
  • createdAt: DateTime

EmployeeStatus

  • Kind: enum
  • Summary: 2 values
  • ACTIVE
  • INACTIVE

EmploymentType

  • Kind: enum
  • Summary: 2 values
  • PERMANENT
  • CONTRACT

GuestJustificationToken

  • Kind: model
  • Summary: 12 fields
  • id: String
  • renewalCaseId: String
  • renewalCase: RenewalCase
  • tokenHash: String
  • managerName: String?
  • managerEmail: String
  • createdByUserId: String
  • createdByUser: User
  • expiresAt: DateTime
  • usedAt: DateTime?

InAppNotification

  • Kind: model
  • Summary: 9 fields
  • id: String
  • userId: String
  • user: User
  • type: NotificationType
  • title: String
  • body: String
  • linkPath: String
  • isRead: Boolean
  • createdAt: DateTime

ManagerJustification

  • Kind: model
  • Summary: 12 fields
  • id: String
  • renewalCaseId: String
  • renewalCase: RenewalCase
  • managerUserId: String?
  • managerUser: User?
  • recommendation: ManagerRecommendation
  • justification: String
  • conditions: String?
  • submittedAt: DateTime?
  • submittedByName: String?

ManagerRecommendation

  • Kind: enum
  • Summary: 3 values
  • RENEW
  • DO_NOT_RENEW
  • RENEW_WITH_CONDITIONS

NotificationType

  • Kind: enum
  • Summary: 4 values
  • JUSTIFICATION_REQUESTED
  • CASE_READY_FOR_CEO
  • CEO_DECIDED
  • CASE_SIGNED

PerformanceSnapshot

  • Kind: model
  • Summary: 10 fields
  • id: String
  • renewalCaseId: String
  • renewalCase: RenewalCase
  • reviewPeriod: String
  • overallScore: Decimal?
  • scoreBreakdown: Json?
  • hrNotes: String?
  • managerComments: String?
  • createdAt: DateTime
  • updatedAt: DateTime

RenewalCase

  • Kind: model
  • Summary: 27 fields
  • id: String
  • employeeId: String
  • employee: Employee
  • contractStartDate: DateTime
  • contractEndDate: DateTime
  • renewalStartDate: DateTime
  • renewalEndDate: DateTime
  • currentMonthlySalary: Decimal
  • proposedMonthlySalary: Decimal
  • currency: String

RenewalStatus

  • Kind: enum
  • Summary: 6 values
  • DRAFT
  • PENDING_MANAGER
  • READY_FOR_CEO
  • APPROVED
  • REJECTED
  • SIGNED

User

  • Kind: model
  • Summary: 17 fields
  • id: String
  • email: String
  • name: String
  • role: UserRole
  • passwordHash: String
  • isActive: Boolean
  • createdAt: DateTime
  • updatedAt: DateTime
  • managedEmployees: Employee[]
  • createdRenewalCases: RenewalCase[]

UserRole

  • Kind: enum
  • Summary: 3 values
  • CEO
  • HR
  • MANAGER

UserSignature

  • Kind: model
  • Summary: 9 fields
  • id: String
  • userId: String
  • user: User
  • fileName: String
  • mimeType: String
  • fileSize: Int
  • storageKey: String
  • createdAt: DateTime
  • updatedAt: DateTime