@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juliobrim/prisma-shared",
3
- "version": "1.0.15",
3
+ "version": "1.0.18",
4
4
  "description": "Schema Prisma compartilhado entre projetos Sabcon",
5
5
  "main": "schema.prisma",
6
6
  "files": [
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 String @id @default(cuid())
229
- model String? @db.VarChar(100)
230
- name String @unique @db.VarChar(100)
231
- capacity Float? @db.Real
232
- clp_index String?
233
- acquired_date DateTime? @db.Date
234
- macAddress String? @db.VarChar(17)
235
- isDeleted Boolean @default(false)
236
- sectorId String?
237
- tenantId String?
238
- downtime DowntimeEvent[]
239
- followers Follower[]
240
- inputRegisters InputRegister[]
241
- stationFrom ItemsHandlingRegister[] @relation("stationFrom")
242
- stationTo ItemsHandlingRegister[] @relation("stationTo")
243
- sector Sector? @relation(fields: [sectorId], references: [id])
244
- tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
245
- operationRegister OperationRegister[]
246
- productionNodes ProductionNode?
247
- operationResources Resource[] @relation("MachineToResource")
248
- IotMessageRegister IotMessageRegister[]
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