@juliobrim/prisma-shared 1.0.15 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "public"."machine_formula" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"machineId" TEXT NOT NULL,
|
|
5
|
+
"name" TEXT NOT NULL,
|
|
6
|
+
"formula" JSONB NOT NULL,
|
|
7
|
+
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
8
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
9
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
10
|
+
"tenantId" TEXT,
|
|
11
|
+
|
|
12
|
+
CONSTRAINT "machine_formula_pkey" PRIMARY KEY ("id")
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
-- CreateTable
|
|
16
|
+
CREATE TABLE "public"."machine_formula_result" (
|
|
17
|
+
"id" TEXT NOT NULL,
|
|
18
|
+
"machineId" TEXT NOT NULL,
|
|
19
|
+
"formulaId" TEXT NOT NULL,
|
|
20
|
+
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
21
|
+
"sensorData" JSONB NOT NULL,
|
|
22
|
+
"result" JSONB NOT NULL,
|
|
23
|
+
"tenantId" TEXT,
|
|
24
|
+
|
|
25
|
+
CONSTRAINT "machine_formula_result_pkey" PRIMARY KEY ("id")
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
-- AddForeignKey
|
|
29
|
+
ALTER TABLE "public"."machine_formula" ADD CONSTRAINT "machine_formula_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "public"."machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
30
|
+
|
|
31
|
+
-- AddForeignKey
|
|
32
|
+
ALTER TABLE "public"."machine_formula" ADD CONSTRAINT "machine_formula_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "public"."tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
33
|
+
|
|
34
|
+
-- AddForeignKey
|
|
35
|
+
ALTER TABLE "public"."machine_formula_result" ADD CONSTRAINT "machine_formula_result_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "public"."machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
36
|
+
|
|
37
|
+
-- AddForeignKey
|
|
38
|
+
ALTER TABLE "public"."machine_formula_result" ADD CONSTRAINT "machine_formula_result_formulaId_fkey" FOREIGN KEY ("formulaId") REFERENCES "public"."machine_formula"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
39
|
+
|
|
40
|
+
-- AddForeignKey
|
|
41
|
+
ALTER TABLE "public"."machine_formula_result" ADD CONSTRAINT "machine_formula_result_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "public"."tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "public"."MachineType" AS ENUM ('sew', 'discrete');
|
|
3
|
+
|
|
4
|
+
-- AlterTable
|
|
5
|
+
ALTER TABLE "public"."machine" ADD COLUMN "type" "public"."MachineType" DEFAULT 'discrete';
|
|
6
|
+
|
|
7
|
+
-- AlterTable
|
|
8
|
+
ALTER TABLE "public"."node_operation_queue" ADD COLUMN "deviceId" TEXT;
|
|
9
|
+
|
|
10
|
+
-- CreateTable
|
|
11
|
+
CREATE TABLE "public"."device" (
|
|
12
|
+
"id" TEXT NOT NULL,
|
|
13
|
+
"clientId" TEXT NOT NULL,
|
|
14
|
+
"name" TEXT NOT NULL,
|
|
15
|
+
"stationName" TEXT,
|
|
16
|
+
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
17
|
+
"prodReportIntervalSec" INTEGER NOT NULL DEFAULT 20,
|
|
18
|
+
"machineId" TEXT,
|
|
19
|
+
"tenantId" TEXT,
|
|
20
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
21
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
22
|
+
|
|
23
|
+
CONSTRAINT "device_pkey" PRIMARY KEY ("id")
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
-- CreateTable
|
|
27
|
+
CREATE TABLE "public"."device_operator" (
|
|
28
|
+
"id" TEXT NOT NULL,
|
|
29
|
+
"deviceId" TEXT NOT NULL,
|
|
30
|
+
"operatorId" TEXT NOT NULL,
|
|
31
|
+
"pin" TEXT,
|
|
32
|
+
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
33
|
+
"tenantId" TEXT,
|
|
34
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
35
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
36
|
+
|
|
37
|
+
CONSTRAINT "device_operator_pkey" PRIMARY KEY ("id")
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
-- CreateTable
|
|
41
|
+
CREATE TABLE "public"."device_state" (
|
|
42
|
+
"id" TEXT NOT NULL,
|
|
43
|
+
"deviceId" TEXT NOT NULL,
|
|
44
|
+
"plannedProd" TEXT,
|
|
45
|
+
"actualProd" TEXT,
|
|
46
|
+
"amountProd" TEXT,
|
|
47
|
+
"rejectedProd" TEXT,
|
|
48
|
+
"runningOpNumber" TEXT,
|
|
49
|
+
"runningOpProduct" TEXT,
|
|
50
|
+
"runningOpAmount" TEXT,
|
|
51
|
+
"runningOpStartDate" TEXT,
|
|
52
|
+
"runningOpEndDate" TEXT,
|
|
53
|
+
"lastCommand" TEXT,
|
|
54
|
+
"isOnline" BOOLEAN NOT NULL DEFAULT true,
|
|
55
|
+
"lastSeen" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
56
|
+
"tenantId" TEXT,
|
|
57
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
58
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
59
|
+
|
|
60
|
+
CONSTRAINT "device_state_pkey" PRIMARY KEY ("id")
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
-- CreateIndex
|
|
64
|
+
CREATE UNIQUE INDEX "device_clientId_key" ON "public"."device"("clientId");
|
|
65
|
+
|
|
66
|
+
-- CreateIndex
|
|
67
|
+
CREATE UNIQUE INDEX "device_machineId_key" ON "public"."device"("machineId");
|
|
68
|
+
|
|
69
|
+
-- CreateIndex
|
|
70
|
+
CREATE UNIQUE INDEX "device_operator_deviceId_operatorId_key" ON "public"."device_operator"("deviceId", "operatorId");
|
|
71
|
+
|
|
72
|
+
-- CreateIndex
|
|
73
|
+
CREATE UNIQUE INDEX "device_state_deviceId_key" ON "public"."device_state"("deviceId");
|
|
74
|
+
|
|
75
|
+
-- AddForeignKey
|
|
76
|
+
ALTER TABLE "public"."node_operation_queue" ADD CONSTRAINT "node_operation_queue_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "public"."device"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
77
|
+
|
|
78
|
+
-- AddForeignKey
|
|
79
|
+
ALTER TABLE "public"."device" ADD CONSTRAINT "device_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "public"."machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
80
|
+
|
|
81
|
+
-- AddForeignKey
|
|
82
|
+
ALTER TABLE "public"."device" ADD CONSTRAINT "device_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "public"."tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
83
|
+
|
|
84
|
+
-- AddForeignKey
|
|
85
|
+
ALTER TABLE "public"."device_operator" ADD CONSTRAINT "device_operator_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "public"."device"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
86
|
+
|
|
87
|
+
-- AddForeignKey
|
|
88
|
+
ALTER TABLE "public"."device_operator" ADD CONSTRAINT "device_operator_operatorId_fkey" FOREIGN KEY ("operatorId") REFERENCES "public"."operator"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
89
|
+
|
|
90
|
+
-- AddForeignKey
|
|
91
|
+
ALTER TABLE "public"."device_operator" ADD CONSTRAINT "device_operator_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "public"."tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
92
|
+
|
|
93
|
+
-- AddForeignKey
|
|
94
|
+
ALTER TABLE "public"."device_state" ADD CONSTRAINT "device_state_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "public"."device"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
95
|
+
|
|
96
|
+
-- AddForeignKey
|
|
97
|
+
ALTER TABLE "public"."device_state" ADD CONSTRAINT "device_state_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "public"."tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
package/package.json
CHANGED
package/schema.prisma
CHANGED
|
@@ -51,6 +51,11 @@ model Tenant {
|
|
|
51
51
|
userPermissions UserPermission[]
|
|
52
52
|
userShifts UserShift[]
|
|
53
53
|
IotMessageRegister IotMessageRegister[]
|
|
54
|
+
MachineFormula MachineFormula[]
|
|
55
|
+
MachineFormulaResult MachineFormulaResult[]
|
|
56
|
+
devices Device[]
|
|
57
|
+
deviceOperators DeviceOperator[]
|
|
58
|
+
deviceStates DeviceState[]
|
|
54
59
|
|
|
55
60
|
@@map("tenant")
|
|
56
61
|
}
|
|
@@ -225,31 +230,69 @@ model ItemsHandlingRegister {
|
|
|
225
230
|
}
|
|
226
231
|
|
|
227
232
|
model Machine {
|
|
228
|
-
id
|
|
229
|
-
model
|
|
230
|
-
name
|
|
231
|
-
capacity
|
|
232
|
-
clp_index
|
|
233
|
-
acquired_date
|
|
234
|
-
macAddress
|
|
235
|
-
isDeleted
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
233
|
+
id String @id @default(cuid())
|
|
234
|
+
model String? @db.VarChar(100)
|
|
235
|
+
name String @unique @db.VarChar(100)
|
|
236
|
+
capacity Float? @db.Real
|
|
237
|
+
clp_index String?
|
|
238
|
+
acquired_date DateTime? @db.Date
|
|
239
|
+
macAddress String? @db.VarChar(17)
|
|
240
|
+
isDeleted Boolean @default(false)
|
|
241
|
+
type MachineType? @default(discrete)
|
|
242
|
+
sectorId String?
|
|
243
|
+
tenantId String?
|
|
244
|
+
downtime DowntimeEvent[]
|
|
245
|
+
followers Follower[]
|
|
246
|
+
inputRegisters InputRegister[]
|
|
247
|
+
stationFrom ItemsHandlingRegister[] @relation("stationFrom")
|
|
248
|
+
stationTo ItemsHandlingRegister[] @relation("stationTo")
|
|
249
|
+
sector Sector? @relation(fields: [sectorId], references: [id])
|
|
250
|
+
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
251
|
+
operationRegister OperationRegister[]
|
|
252
|
+
productionNodes ProductionNode?
|
|
253
|
+
operationResources Resource[] @relation("MachineToResource")
|
|
254
|
+
IotMessageRegister IotMessageRegister[]
|
|
255
|
+
MachineFormula MachineFormula[]
|
|
256
|
+
MachineFormulaResult MachineFormulaResult[]
|
|
257
|
+
device Device?
|
|
249
258
|
|
|
250
259
|
@@map("machine")
|
|
251
260
|
}
|
|
252
261
|
|
|
262
|
+
// Estrutura proposta para o banco de dados
|
|
263
|
+
model MachineFormula {
|
|
264
|
+
id String @id @default(cuid())
|
|
265
|
+
machineId String
|
|
266
|
+
name String // "Produção Bruta", "Produção Aprovada", etc.
|
|
267
|
+
formula Json // Fórmula visual serializada
|
|
268
|
+
isActive Boolean @default(true)
|
|
269
|
+
createdAt DateTime @default(now())
|
|
270
|
+
updatedAt DateTime @updatedAt
|
|
271
|
+
tenantId String?
|
|
272
|
+
|
|
273
|
+
machine Machine @relation(fields: [machineId], references: [id])
|
|
274
|
+
tenant Tenant? @relation(fields: [tenantId], references: [id])
|
|
275
|
+
results MachineFormulaResult[]
|
|
276
|
+
|
|
277
|
+
@@map("machine_formula")
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
model MachineFormulaResult {
|
|
281
|
+
id String @id @default(cuid())
|
|
282
|
+
machineId String
|
|
283
|
+
formulaId String
|
|
284
|
+
timestamp DateTime @default(now())
|
|
285
|
+
sensorData Json // Dados dos sensores no momento do cálculo
|
|
286
|
+
result Json // Resultado da fórmula (totalPieces, totalRejected, etc.)
|
|
287
|
+
tenantId String?
|
|
288
|
+
|
|
289
|
+
machine Machine @relation(fields: [machineId], references: [id])
|
|
290
|
+
formula MachineFormula @relation(fields: [formulaId], references: [id])
|
|
291
|
+
tenant Tenant? @relation(fields: [tenantId], references: [id])
|
|
292
|
+
|
|
293
|
+
@@map("machine_formula_result")
|
|
294
|
+
}
|
|
295
|
+
|
|
253
296
|
model Node {
|
|
254
297
|
id String @id @default(cuid())
|
|
255
298
|
positionAbsoluteX Int
|
|
@@ -406,6 +449,7 @@ model Operator {
|
|
|
406
449
|
ProductionNode ProductionNode?
|
|
407
450
|
habilityResources Resource[] @relation("OperatorToResource")
|
|
408
451
|
shifts Shift[] @relation("OperatorToShift")
|
|
452
|
+
deviceOperators DeviceOperator[]
|
|
409
453
|
|
|
410
454
|
@@map("operator")
|
|
411
455
|
}
|
|
@@ -704,15 +748,86 @@ model NodeOperationQueue {
|
|
|
704
748
|
createdAt DateTime @default(now())
|
|
705
749
|
updatedAt DateTime @updatedAt
|
|
706
750
|
productionOrderId String
|
|
751
|
+
deviceId String? // Relaciona com dispositivo IIoT
|
|
707
752
|
tenantId String?
|
|
708
753
|
node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade)
|
|
709
754
|
operation Operation @relation(fields: [operationId], references: [id], onDelete: Cascade)
|
|
710
755
|
productionOrder ProductionOrder @relation(fields: [productionOrderId], references: [id], onDelete: Cascade)
|
|
756
|
+
device Device? @relation(fields: [deviceId], references: [id], onDelete: Cascade)
|
|
711
757
|
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
712
758
|
|
|
713
759
|
@@map("node_operation_queue")
|
|
714
760
|
}
|
|
715
761
|
|
|
762
|
+
// Modelos para dispositivos IIoT
|
|
763
|
+
model Device {
|
|
764
|
+
id String @id @default(cuid())
|
|
765
|
+
clientId String @unique // Ex: "SABCON-ESP32-022"
|
|
766
|
+
name String // Nome da estação/device
|
|
767
|
+
stationName String? // Nome da estação (ex: "Estação Montagem A1")
|
|
768
|
+
isActive Boolean @default(true)
|
|
769
|
+
prodReportIntervalSec Int @default(20) // Intervalo de relatório de produção em segundos
|
|
770
|
+
machineId String? @unique // Relaciona com uma máquina específica
|
|
771
|
+
tenantId String?
|
|
772
|
+
createdAt DateTime @default(now())
|
|
773
|
+
updatedAt DateTime @updatedAt
|
|
774
|
+
|
|
775
|
+
// Relacionamentos
|
|
776
|
+
machine Machine? @relation(fields: [machineId], references: [id])
|
|
777
|
+
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
778
|
+
deviceOperators DeviceOperator[]
|
|
779
|
+
deviceStates DeviceState[]
|
|
780
|
+
nodeOperationQueues NodeOperationQueue[]
|
|
781
|
+
|
|
782
|
+
@@map("device")
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
model DeviceOperator {
|
|
786
|
+
id String @id @default(cuid())
|
|
787
|
+
deviceId String
|
|
788
|
+
operatorId String
|
|
789
|
+
pin String? // PIN do operador no dispositivo
|
|
790
|
+
isActive Boolean @default(true)
|
|
791
|
+
tenantId String?
|
|
792
|
+
createdAt DateTime @default(now())
|
|
793
|
+
updatedAt DateTime @updatedAt
|
|
794
|
+
|
|
795
|
+
// Relacionamentos
|
|
796
|
+
device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)
|
|
797
|
+
operator Operator @relation(fields: [operatorId], references: [id], onDelete: Cascade)
|
|
798
|
+
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
799
|
+
|
|
800
|
+
@@unique([deviceId, operatorId])
|
|
801
|
+
@@map("device_operator")
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
model DeviceState {
|
|
805
|
+
id String @id @default(cuid())
|
|
806
|
+
deviceId String
|
|
807
|
+
plannedProd String? // Produção planejada
|
|
808
|
+
actualProd String? // Produção atual
|
|
809
|
+
amountProd String? // Quantidade produzida (ex: "127 pçs")
|
|
810
|
+
rejectedProd String? // Produção rejeitada
|
|
811
|
+
runningOpNumber String? // Número da operação em execução
|
|
812
|
+
runningOpProduct String? // Produto da operação em execução
|
|
813
|
+
runningOpAmount String? // Quantidade da operação em execução
|
|
814
|
+
runningOpStartDate String? // Data de início da operação em execução
|
|
815
|
+
runningOpEndDate String? // Data de fim da operação em execução
|
|
816
|
+
lastCommand String? // Último comando enviado (ex: "restart")
|
|
817
|
+
isOnline Boolean @default(true)
|
|
818
|
+
lastSeen DateTime @default(now())
|
|
819
|
+
tenantId String?
|
|
820
|
+
createdAt DateTime @default(now())
|
|
821
|
+
updatedAt DateTime @updatedAt
|
|
822
|
+
|
|
823
|
+
// Relacionamentos
|
|
824
|
+
device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)
|
|
825
|
+
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
826
|
+
|
|
827
|
+
@@unique([deviceId]) // Um estado por dispositivo
|
|
828
|
+
@@map("device_state")
|
|
829
|
+
}
|
|
830
|
+
|
|
716
831
|
enum UserRole {
|
|
717
832
|
ADMIN
|
|
718
833
|
USER
|
|
@@ -731,6 +846,11 @@ enum NodeType {
|
|
|
731
846
|
Product
|
|
732
847
|
}
|
|
733
848
|
|
|
849
|
+
enum MachineType {
|
|
850
|
+
sew
|
|
851
|
+
discrete
|
|
852
|
+
}
|
|
853
|
+
|
|
734
854
|
enum Colors {
|
|
735
855
|
red
|
|
736
856
|
green
|