Files
toir-light-v2/backend/prisma/schema.prisma
2026-04-25 13:53:55 +00:00

242 lines
5.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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?
}