Files
toir-light-v17/backend/prisma/schema.prisma
2026-04-25 16:21:27 +00:00

207 lines
5.1 KiB
Plaintext

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