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? // Relations repairOrders RepairOrder[] changeEquipmentStatuses ChangeEquipmentStatus[] consumptionRegistrations ConsumptionRegistration[] maintenancePlannings MaintenancePlanning[] // Indexes @@index([inventoryNumber]) @@index([serialNumber]) @@index([equipmentType]) @@index([status]) @@index([dateOfInspection]) } model Employee { code String @id fullName String role Role position String price Float? phoneNumber Float? // Self-referential relations for hierarchy boss Employee? @relation("EmployeeHierarchy", fields: [bossCode], references: [code]) bossCode String? subordinates Employee[] @relation("EmployeeHierarchy") // Relations to other models confirmationDocuments ConfirmationDocument[] resourceNeeds ResourceNeeds[] categoryResources CategoryResource[] } model Part { id String @id @default(uuid()) name String categories CategoryPart? price Float? description String? serialNumber String? // Relations resourceNeeds ResourceNeeds[] categoryResources CategoryResource[] } model CategoryResource { id String @id @default(uuid()) // Relations part Part? @relation(fields: [partId], references: [id]) partId String? employee Employee? @relation(fields: [employeeCode], references: [code]) employeeCode String? } model PriceList { id String @id @default(uuid()) costOfWorkingHours Float? partPrice Float? } model RepairOrder { id String @id @default(uuid()) number String @unique date DateTime @db.Date equipment Equipment @relation(fields: [equipmentId], references: [id]) 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? // Relations confirmationDocuments ConfirmationDocument[] // Indexes @@index([date]) @@index([plannedAt]) @@index([status]) } model ChangeEquipmentStatus { id String @id @default(uuid()) equipment Equipment @relation(fields: [equipmentId], references: [id]) equipmentId String newStatus EquipmentStatus number String? comment String? date DateTime @db.Date responsible String? document String? // Storing file path or reference // Indexes @@index([date]) @@index([newStatus]) } model ConfirmationDocument { id String @id @default(uuid()) number String? date DateTime @db.Date manager Employee @relation(fields: [managerCode], references: [code]) managerCode String order RepairOrder @relation(fields: [orderId], references: [id]) orderId String confirmed Boolean? // Indexes @@index([date]) @@index([confirmed]) } model ConsumptionRegistration { id String @id @default(uuid()) number String? date DateTime @db.Date equipment Equipment @relation(fields: [equipmentId], references: [id]) equipmentId String totalEngineHours Decimal? fuelConsumption Float? // Indexes @@index([date]) } model MaintenancePlanning { id String @id @default(uuid()) date DateTime @db.Date equipment Equipment @relation(fields: [equipmentId], references: [id]) equipmentId String repairKind RepairKind // Indexes @@index([date]) @@index([repairKind]) } model ResourceNeeds { id String @id @default(uuid()) // Many-to-many relations employees Employee[] parts Part[] } model MoneyNeeds { id String @id @default(uuid()) employees Float? part Float? }