datasource db { provider = "postgresql" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } enum EquipmentStatus { Active Repair Reserve WriteOff } enum laborOperation { Manual MachineManual Machine } enum EnumPeriodicityTO { Ежедневное Еженедельное Ежемесячное Полугодовое Годовое } enum Role { Исполнитель Подписант Пользователь } enum CategoryPart { Расходник Запчасть Инструмент Спецодежда } enum EquipmentType { Производственное Энергетическое Насосное Компрессорное } enum RepairKind { TO TR TRE KR AR MP } enum RepairOrderStatus { Draft Approved InWork Done Cancelled } model Equipment { id String @id @default(uuid()) name String serialNumber String dateOfInspection DateTime? @db.Date inventoryNumber String @unique equipmentType EquipmentType periodicityTO EnumPeriodicityTO status EquipmentStatus @default(Active) commissionedAt DateTime? @db.Date totalEngineHours Decimal? engineHoursSinceLastRepair Decimal? lastRepairAt DateTime? @db.Date notes String? workAsPartOf laborOperation? fuelСonsumed Float? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations repairOrders RepairOrder[] changeEquipmentStatuses ChangeEquipmentStatus[] consumptionRegistrations ConsumptionRegistration[] } model Employee { code String @id fullName String role Role position String price Float? phoneNumber Float? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Self-referential relation for boss/subordinates bossCode String? boss Employee? @relation("EmployeeBoss", fields: [bossCode], references: [code]) subordinates Employee[] @relation("EmployeeBoss") // Relations confirmationDocuments ConfirmationDocument[] categoryResources CategoryResource[] } model Part { id String @id @default(uuid()) name String categories CategoryPart? price Float? description String? serialNumber String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations categoryResources CategoryResource[] } model CategoryResource { id String @id @default(uuid()) partId String? employeeCode String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations part Part? @relation(fields: [partId], references: [id]) employee Employee? @relation(fields: [employeeCode], references: [code]) } model RepairOrder { id String @id @default(uuid()) number String @unique date DateTime @db.Date equipmentId String repairKind RepairKind status RepairOrderStatus @default(Draft) plannedAt DateTime @db.Date startedAt DateTime? @db.Date completedAt DateTime? @db.Date contractor String? engineHoursAtRepair Decimal? description String? notes String? confirmed Boolean? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations equipment Equipment @relation(fields: [equipmentId], references: [id]) confirmationDocuments ConfirmationDocument[] } model ChangeEquipmentStatus { id String @id @default(uuid()) equipmentId String newStatus EquipmentStatus number String? comment String? date DateTime @db.Date responsible String? document String? // Storing file path/URL createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations equipment Equipment @relation(fields: [equipmentId], references: [id]) } model ConfirmationDocument { id String @id @default(uuid()) number String? date DateTime @db.Date managerCode String? orderId String confirmed Boolean? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations manager Employee? @relation(fields: [managerCode], references: [code]) order RepairOrder @relation(fields: [orderId], references: [id]) } model ConsumptionRegistration { id String @id @default(uuid()) number String? date DateTime @db.Date equipmentId String totalEngineHours Decimal? fuelConsumption Float? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations equipment Equipment @relation(fields: [equipmentId], references: [id]) }