@machynx/data-db 1.0.5 → 1.0.7

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,4191 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "ProductionMeasurementUnit" AS ENUM ('PIECE', 'PART', 'UNIT', 'ASSEMBLY', 'BATCH', 'LOT', 'KG', 'LITERS', 'METERS', 'GRAMS', 'TONS', 'HOURS', 'CYCLES');
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "LogCriticality" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL');
6
+
7
+ -- CreateEnum
8
+ CREATE TYPE "ChatbotMessageSender" AS ENUM ('USER', 'BOT', 'SYSTEM', 'DEVICE');
9
+
10
+ -- CreateEnum
11
+ CREATE TYPE "EmbeddingStatus" AS ENUM ('PENDING', 'PROCESSING', 'COMPLETED', 'FAILED');
12
+
13
+ -- CreateEnum
14
+ CREATE TYPE "FMEAType" AS ENUM ('DFMEA', 'PFMEA');
15
+
16
+ -- CreateEnum
17
+ CREATE TYPE "ControlPlanType" AS ENUM ('PROTOTYPE', 'PRE_LAUNCH', 'PRODUCTION');
18
+
19
+ -- CreateEnum
20
+ CREATE TYPE "PPAPStatus" AS ENUM ('NOT_STARTED', 'IN_PROGRESS', 'SUBMITTED', 'APPROVED', 'REJECTED');
21
+
22
+ -- CreateEnum
23
+ CREATE TYPE "ProblemStatus" AS ENUM ('OPEN', 'CONTAINMENT_ACTIVE', 'ROOT_CAUSE_IDENTIFIED', 'CORRECTIVE_ACTION_IMPLEMENTED', 'EFFECTIVENESS_VERIFIED', 'CLOSED');
24
+
25
+ -- CreateEnum
26
+ CREATE TYPE "BatchStatus" AS ENUM ('PENDING', 'IN_PROGRESS', 'QUARANTINE', 'RELEASED', 'REJECTED', 'ON_HOLD', 'RECALLED');
27
+
28
+ -- CreateEnum
29
+ CREATE TYPE "DeviationSeverity" AS ENUM ('CRITICAL', 'MAJOR', 'MINOR');
30
+
31
+ -- CreateEnum
32
+ CREATE TYPE "DeviationStatus" AS ENUM ('OPEN', 'UNDER_INVESTIGATION', 'CAPA_ASSIGNED', 'CAPA_IN_PROGRESS', 'EFFECTIVENESS_CHECK', 'CLOSED', 'REOPENED');
33
+
34
+ -- CreateEnum
35
+ CREATE TYPE "CAPAType" AS ENUM ('CORRECTIVE', 'PREVENTIVE');
36
+
37
+ -- CreateEnum
38
+ CREATE TYPE "CAPAStatus" AS ENUM ('INITIATED', 'UNDER_REVIEW', 'APPROVED', 'IN_PROGRESS', 'IMPLEMENTED', 'EFFECTIVENESS_CHECK', 'COMPLETED', 'CANCELED');
39
+
40
+ -- CreateEnum
41
+ CREATE TYPE "SignatureMeaning" AS ENUM ('CREATED', 'REVIEWED', 'APPROVED', 'RELEASED', 'VERIFIED', 'REJECTED', 'CANCELED', 'AMENDED');
42
+
43
+ -- CreateEnum
44
+ CREATE TYPE "DocStatus" AS ENUM ('DRAFT', 'UNDER_REVIEW', 'APPROVED', 'OBSOLETE', 'SUPERSEDED', 'WITHDRAWN');
45
+
46
+ -- CreateEnum
47
+ CREATE TYPE "DocumentType" AS ENUM ('SOP', 'WORK_INSTRUCTION', 'FORM', 'POLICY', 'MANUAL', 'SPECIFICATION', 'PROTOCOL', 'REPORT', 'TROUBLESHOOTING_GUIDE', 'MACHINE_SPEC', 'SAFETY_PROTOCOL', 'TRAINING_MATERIAL', 'ERROR_CODE_REFERENCE', 'MAINTENANCE_LOG', 'PAST_CHAT', 'OTHER');
48
+
49
+ -- CreateEnum
50
+ CREATE TYPE "ChangeControlStatus" AS ENUM ('INITIATED', 'UNDER_REVIEW', 'APPROVED', 'IMPLEMENTED', 'COMPLETED', 'REJECTED', 'CANCELED');
51
+
52
+ -- CreateEnum
53
+ CREATE TYPE "TrainingStatus" AS ENUM ('NOT_STARTED', 'IN_PROGRESS', 'COMPLETED', 'EXPIRED', 'FAILED');
54
+
55
+ -- CreateEnum
56
+ CREATE TYPE "TestStatus" AS ENUM ('PENDING', 'IN_PROGRESS', 'PASSED', 'FAILED', 'RETEST_REQUIRED', 'CANCELED');
57
+
58
+ -- CreateEnum
59
+ CREATE TYPE "PassportStatus" AS ENUM ('DRAFT', 'PUBLISHED', 'ACTIVE', 'SUSPENDED', 'REVOKED');
60
+
61
+ -- CreateEnum
62
+ CREATE TYPE "SupplyChainNodeType" AS ENUM ('RAW_MATERIAL_SUPPLIER', 'SPINNING', 'WEAVING', 'KNITTING', 'DYEING', 'PRINTING', 'FINISHING', 'CUTTING', 'SEWING', 'EMBROIDERY', 'WASHING', 'QUALITY_CHECK', 'PACKAGING', 'DISTRIBUTION');
63
+
64
+ -- CreateEnum
65
+ CREATE TYPE "CertificationType" AS ENUM ('GOTS', 'OEKO_TEX', 'FAIR_TRADE', 'ORGANIC_COTTON', 'BCI', 'BLUESIGN', 'CRADLE_TO_CRADLE', 'GRS', 'ISO_14001', 'WRAP', 'SA8000');
66
+
67
+ -- CreateEnum
68
+ CREATE TYPE "SensorType" AS ENUM ('PROXIMITY', 'INFRARED', 'RFID', 'CURRENT', 'VIBRATION', 'TEMPERATURE', 'PRESSURE', 'FLOW', 'WEIGHT', 'LEVEL', 'PH', 'HUMIDITY');
69
+
70
+ -- CreateEnum
71
+ CREATE TYPE "RFIDTapType" AS ENUM ('CHECKIN', 'CHECKOUT');
72
+
73
+ -- CreateEnum
74
+ CREATE TYPE "DevicePowerState" AS ENUM ('POWER_ON', 'POWER_OFF');
75
+
76
+ -- CreateEnum
77
+ CREATE TYPE "DeviceType" AS ENUM ('SENSOR_MODULE', 'GATEWAY', 'PLC', 'SCADA_RTU', 'MODBUS_GATEWAY', 'MQTT_BRIDGE', 'PROTOCOL_CONVERTER', 'HYBRID');
78
+
79
+ -- CreateEnum
80
+ CREATE TYPE "CommunicationProtocol" AS ENUM ('MODBUS_TCP', 'ETHERNET_IP', 'PROFINET', 'OPC_UA', 'OPC_DA', 'MQTT', 'MQTT_SPARKPLUG_B', 'HTTP_REST', 'WEBSOCKET', 'MODBUS_RTU', 'MODBUS_ASCII', 'RS232', 'RS485', 'PROFIBUS', 'CANBUS', 'SIEMENS_S7', 'ALLEN_BRADLEY_DF1', 'MITSUBISHI_MELSEC', 'OMRON_FINS', 'FANUC_FOCAS', 'HEIDENHAIN_DNC', 'BLUETOOTH_LE', 'ZIGBEE', 'LORA', 'WIFI', 'SERIAL_ASCII', 'SERIAL_BINARY');
81
+
82
+ -- CreateEnum
83
+ CREATE TYPE "DataSourceType" AS ENUM ('PHYSICAL_SENSOR', 'MODBUS_REGISTER', 'MODBUS_COIL', 'MQTT_TOPIC', 'OPC_UA_NODE', 'PLC_TAG', 'SCADA_POINT', 'REST_ENDPOINT');
84
+
85
+ -- CreateEnum
86
+ CREATE TYPE "WeekDay" AS ENUM ('SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY');
87
+
88
+ -- CreateEnum
89
+ CREATE TYPE "AccessLevel" AS ENUM ('PUBLIC', 'PRIVATE');
90
+
91
+ -- CreateEnum
92
+ CREATE TYPE "ProductionSIUnit" AS ENUM ('COUNT', 'WEIGHT', 'LITERS', 'METERS', 'BATCHES', 'HOURS');
93
+
94
+ -- CreateEnum
95
+ CREATE TYPE "MachineAlertSeverity" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL');
96
+
97
+ -- CreateEnum
98
+ CREATE TYPE "EventCategory" AS ENUM ('GENERAL', 'MEDIUM', 'OPERATION', 'ALERT');
99
+
100
+ -- CreateEnum
101
+ CREATE TYPE "MachineTrackingType" AS ENUM ('MANUAL', 'AUTOMATED');
102
+
103
+ -- CreateEnum
104
+ CREATE TYPE "MachineState" AS ENUM ('UNKNOWN', 'RUNNING', 'IDLE', 'STOPPED', 'ALARM', 'SETUP', 'MAINTENANCE');
105
+
106
+ -- CreateEnum
107
+ CREATE TYPE "MachineIndustryType" AS ENUM ('GARMENT', 'CNC_MACHINING', 'FOOD_BEVERAGE', 'PHARMACEUTICAL', 'AUTOMOTIVE', 'PAPER', 'PLASTICS', 'GENERAL');
108
+
109
+ -- CreateEnum
110
+ CREATE TYPE "MaintenanceLogStatus" AS ENUM ('OPEN', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED');
111
+
112
+ -- CreateEnum
113
+ CREATE TYPE "MaintenanceRequestStatus" AS ENUM ('NEW', 'APPROVED', 'ASSIGNED', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED');
114
+
115
+ -- CreateEnum
116
+ CREATE TYPE "MaintenanceRequestPriority" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL');
117
+
118
+ -- CreateEnum
119
+ CREATE TYPE "OperatorLevel" AS ENUM ('FLOOR_WORKER', 'TEAM_LEAD', 'SUPERVISOR', 'QC_INSPECTOR', 'MAINTENANCE_TECH');
120
+
121
+ -- CreateEnum
122
+ CREATE TYPE "OrderStatus" AS ENUM ('NEW', 'CONFIRMED', 'IN_PROGRESS', 'ON_TRACK', 'DELAYED', 'AT_RISK', 'COMPLETED', 'CANCELED');
123
+
124
+ -- CreateEnum
125
+ CREATE TYPE "OrderPriority" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL');
126
+
127
+ -- CreateEnum
128
+ CREATE TYPE "OrderProductStatus" AS ENUM ('NEW', 'IN_PROGRESS', 'ON_TRACK', 'DELAYED', 'AT_RISK', 'COMPLETED', 'CANCELED');
129
+
130
+ -- CreateEnum
131
+ CREATE TYPE "ProductionUnitStatus" AS ENUM ('IN_PRODUCTION', 'IN_QA', 'REWORK', 'COMPLETE', 'REJECTED', 'SHIPPED');
132
+
133
+ -- CreateEnum
134
+ CREATE TYPE "IdentifierType" AS ENUM ('RFID', 'BARCODE', 'QR_CODE', 'MANUAL', 'NFC');
135
+
136
+ -- CreateEnum
137
+ CREATE TYPE "TaskStatus" AS ENUM ('NEW', 'IN_PROGRESS', 'COMPLETED', 'CANCELED', 'OVERDUE', 'INCOMPLETE');
138
+
139
+ -- CreateEnum
140
+ CREATE TYPE "TaskGroupStatus" AS ENUM ('NEW', 'IN_PROGRESS', 'COMPLETED', 'CANCELED', 'OVERDUE', 'INCOMPLETE');
141
+
142
+ -- CreateTable
143
+ CREATE TABLE "MachineHourlyAnalytics" (
144
+ "id" BIGSERIAL NOT NULL,
145
+ "machineId" INTEGER NOT NULL,
146
+ "organizationId" INTEGER NOT NULL,
147
+ "totalProduction" DOUBLE PRECISION,
148
+ "productionUnit" "ProductionMeasurementUnit",
149
+ "passedProduction" DOUBLE PRECISION,
150
+ "rejectedProduction" DOUBLE PRECISION,
151
+ "reworkProduction" DOUBLE PRECISION,
152
+ "wasteProduction" DOUBLE PRECISION,
153
+ "efficiency" DOUBLE PRECISION,
154
+ "utilization" DOUBLE PRECISION,
155
+ "availability" DOUBLE PRECISION,
156
+ "performance" DOUBLE PRECISION,
157
+ "quality" DOUBLE PRECISION,
158
+ "oee" DOUBLE PRECISION,
159
+ "totalPowerConsumed" DOUBLE PRECISION,
160
+ "runningTime" DOUBLE PRECISION,
161
+ "idleTime" DOUBLE PRECISION,
162
+ "stoppedTime" DOUBLE PRECISION,
163
+ "alarmTime" DOUBLE PRECISION,
164
+ "setupTime" DOUBLE PRECISION,
165
+ "maintenanceTime" DOUBLE PRECISION,
166
+ "nonWorkingTime" DOUBLE PRECISION,
167
+ "upTime" DOUBLE PRECISION,
168
+ "productiveTime" DOUBLE PRECISION,
169
+ "cycleCount" INTEGER,
170
+ "avgCycleTime" DOUBLE PRECISION,
171
+ "minCycleTime" DOUBLE PRECISION,
172
+ "maxCycleTime" DOUBLE PRECISION,
173
+ "expectedYield" DOUBLE PRECISION,
174
+ "actualYield" DOUBLE PRECISION,
175
+ "lossPercentage" DOUBLE PRECISION,
176
+ "startDateTime" TIMESTAMP(3),
177
+ "endDateTime" TIMESTAMP(3),
178
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
179
+ "updatedAt" TIMESTAMP(3) NOT NULL,
180
+
181
+ CONSTRAINT "MachineHourlyAnalytics_pkey" PRIMARY KEY ("id")
182
+ );
183
+
184
+ -- CreateTable
185
+ CREATE TABLE "MachineDailyAnalytics" (
186
+ "id" BIGSERIAL NOT NULL,
187
+ "machineId" INTEGER NOT NULL,
188
+ "organizationId" INTEGER NOT NULL,
189
+ "totalProduction" DOUBLE PRECISION,
190
+ "productionUnit" "ProductionMeasurementUnit",
191
+ "passedProduction" DOUBLE PRECISION,
192
+ "rejectedProduction" DOUBLE PRECISION,
193
+ "reworkProduction" DOUBLE PRECISION,
194
+ "wasteProduction" DOUBLE PRECISION,
195
+ "avgEfficiency" DOUBLE PRECISION,
196
+ "avgUtilization" DOUBLE PRECISION,
197
+ "totalPowerConsumed" DOUBLE PRECISION,
198
+ "totalUpTime" DOUBLE PRECISION,
199
+ "date" DATE NOT NULL,
200
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
201
+ "updatedAt" TIMESTAMP(3) NOT NULL,
202
+
203
+ CONSTRAINT "MachineDailyAnalytics_pkey" PRIMARY KEY ("id")
204
+ );
205
+
206
+ -- CreateTable
207
+ CREATE TABLE "MachineMonthlyAnalytics" (
208
+ "id" BIGSERIAL NOT NULL,
209
+ "machineId" INTEGER NOT NULL,
210
+ "organizationId" INTEGER NOT NULL,
211
+ "totalProduction" DOUBLE PRECISION,
212
+ "productionUnit" "ProductionMeasurementUnit",
213
+ "passedProduction" DOUBLE PRECISION,
214
+ "rejectedProduction" DOUBLE PRECISION,
215
+ "reworkProduction" DOUBLE PRECISION,
216
+ "wasteProduction" DOUBLE PRECISION,
217
+ "avgEfficiency" DOUBLE PRECISION,
218
+ "totalPowerConsumed" DOUBLE PRECISION,
219
+ "month" INTEGER NOT NULL,
220
+ "year" INTEGER NOT NULL,
221
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
222
+ "updatedAt" TIMESTAMP(3) NOT NULL,
223
+
224
+ CONSTRAINT "MachineMonthlyAnalytics_pkey" PRIMARY KEY ("id")
225
+ );
226
+
227
+ -- CreateTable
228
+ CREATE TABLE "LineHourlyAnalytics" (
229
+ "id" BIGSERIAL NOT NULL,
230
+ "assemblyLineId" INTEGER NOT NULL,
231
+ "organizationId" INTEGER NOT NULL,
232
+ "averageEfficiency" DOUBLE PRECISION,
233
+ "averageUtilization" DOUBLE PRECISION,
234
+ "totalProduction" DOUBLE PRECISION,
235
+ "productionUnit" "ProductionMeasurementUnit",
236
+ "startDateTime" TIMESTAMP(3),
237
+ "endDateTime" TIMESTAMP(3),
238
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
239
+ "updatedAt" TIMESTAMP(3) NOT NULL,
240
+
241
+ CONSTRAINT "LineHourlyAnalytics_pkey" PRIMARY KEY ("id")
242
+ );
243
+
244
+ -- CreateTable
245
+ CREATE TABLE "FloorHourlyAnalytics" (
246
+ "id" BIGSERIAL NOT NULL,
247
+ "floorId" INTEGER NOT NULL,
248
+ "organizationId" INTEGER NOT NULL,
249
+ "averageEfficiency" DOUBLE PRECISION,
250
+ "totalProduction" DOUBLE PRECISION,
251
+ "productionUnit" "ProductionMeasurementUnit",
252
+ "startDateTime" TIMESTAMP(3),
253
+ "endDateTime" TIMESTAMP(3),
254
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
255
+ "updatedAt" TIMESTAMP(3) NOT NULL,
256
+
257
+ CONSTRAINT "FloorHourlyAnalytics_pkey" PRIMARY KEY ("id")
258
+ );
259
+
260
+ -- CreateTable
261
+ CREATE TABLE "FactoryHourlyAnalytics" (
262
+ "id" BIGSERIAL NOT NULL,
263
+ "factoryId" INTEGER NOT NULL,
264
+ "organizationId" INTEGER NOT NULL,
265
+ "averageEfficiency" DOUBLE PRECISION,
266
+ "totalProduction" DOUBLE PRECISION,
267
+ "productionUnit" "ProductionMeasurementUnit",
268
+ "startDateTime" TIMESTAMP(3),
269
+ "endDateTime" TIMESTAMP(3),
270
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
271
+ "updatedAt" TIMESTAMP(3) NOT NULL,
272
+
273
+ CONSTRAINT "FactoryHourlyAnalytics_pkey" PRIMARY KEY ("id")
274
+ );
275
+
276
+ -- CreateTable
277
+ CREATE TABLE "DeviceHourlyAnalytics" (
278
+ "id" BIGSERIAL NOT NULL,
279
+ "deviceId" INTEGER NOT NULL,
280
+ "machineHourlyAnalyticsId" BIGINT,
281
+ "organizationId" INTEGER NOT NULL,
282
+ "totalOnTime" DOUBLE PRECISION,
283
+ "totalActiveTime" DOUBLE PRECISION,
284
+ "totalWorkingTime" DOUBLE PRECISION,
285
+ "startDateTime" TIMESTAMP(3),
286
+ "endDateTime" TIMESTAMP(3),
287
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
288
+ "updatedAt" TIMESTAMP(3) NOT NULL,
289
+
290
+ CONSTRAINT "DeviceHourlyAnalytics_pkey" PRIMARY KEY ("id")
291
+ );
292
+
293
+ -- CreateTable
294
+ CREATE TABLE "SensorHourlyAnalytics" (
295
+ "id" BIGSERIAL NOT NULL,
296
+ "sensorId" INTEGER NOT NULL,
297
+ "deviceHourlyAnalyticsId" BIGINT NOT NULL,
298
+ "initialSense" TIMESTAMP(3),
299
+ "finalSense" TIMESTAMP(3),
300
+ "startDateTime" TIMESTAMP(3),
301
+ "endDateTime" TIMESTAMP(3),
302
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
303
+ "updatedAt" TIMESTAMP(3) NOT NULL,
304
+
305
+ CONSTRAINT "SensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
306
+ );
307
+
308
+ -- CreateTable
309
+ CREATE TABLE "ProximitySensorHourlyAnalytics" (
310
+ "id" BIGSERIAL NOT NULL,
311
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
312
+ "totalDetections" INTEGER NOT NULL,
313
+ "productiveDetections" INTEGER,
314
+ "startDateTime" TIMESTAMP(3),
315
+ "endDateTime" TIMESTAMP(3),
316
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
317
+ "updatedAt" TIMESTAMP(3) NOT NULL,
318
+
319
+ CONSTRAINT "ProximitySensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
320
+ );
321
+
322
+ -- CreateTable
323
+ CREATE TABLE "InfraredSensorHourlyAnalytics" (
324
+ "id" BIGSERIAL NOT NULL,
325
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
326
+ "totalDetections" INTEGER NOT NULL,
327
+ "productiveDetections" INTEGER,
328
+ "startDateTime" TIMESTAMP(3),
329
+ "endDateTime" TIMESTAMP(3),
330
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
331
+ "updatedAt" TIMESTAMP(3) NOT NULL,
332
+
333
+ CONSTRAINT "InfraredSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
334
+ );
335
+
336
+ -- CreateTable
337
+ CREATE TABLE "DevicePowerSensorHourlyAnalytics" (
338
+ "id" BIGSERIAL NOT NULL,
339
+ "deviceHourlyAnalyticsId" BIGINT NOT NULL,
340
+ "powerEvents" JSONB,
341
+ "totalOnTime" DOUBLE PRECISION,
342
+ "startDateTime" TIMESTAMP(3),
343
+ "endDateTime" TIMESTAMP(3),
344
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
345
+ "updatedAt" TIMESTAMP(3) NOT NULL,
346
+
347
+ CONSTRAINT "DevicePowerSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
348
+ );
349
+
350
+ -- CreateTable
351
+ CREATE TABLE "ProtocolDataSourceHourlyAnalytics" (
352
+ "id" BIGSERIAL NOT NULL,
353
+ "dataSourceId" INTEGER NOT NULL,
354
+ "totalSamples" INTEGER,
355
+ "successfulReads" INTEGER,
356
+ "failedReads" INTEGER,
357
+ "avgValue" DOUBLE PRECISION,
358
+ "minValue" DOUBLE PRECISION,
359
+ "maxValue" DOUBLE PRECISION,
360
+ "stdDev" DOUBLE PRECISION,
361
+ "avgResponseTimeMs" DOUBLE PRECISION,
362
+ "timeouts" INTEGER,
363
+ "crcErrors" INTEGER,
364
+ "startDateTime" TIMESTAMP(3),
365
+ "endDateTime" TIMESTAMP(3),
366
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
367
+ "updatedAt" TIMESTAMP(3) NOT NULL,
368
+
369
+ CONSTRAINT "ProtocolDataSourceHourlyAnalytics_pkey" PRIMARY KEY ("id")
370
+ );
371
+
372
+ -- CreateTable
373
+ CREATE TABLE "CurrentSensorHourlyAnalytics" (
374
+ "id" BIGSERIAL NOT NULL,
375
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
376
+ "avgCurrent" DOUBLE PRECISION,
377
+ "maxCurrent" DOUBLE PRECISION,
378
+ "minCurrent" DOUBLE PRECISION,
379
+ "runTime" DOUBLE PRECISION,
380
+ "idleTime" DOUBLE PRECISION,
381
+ "startDateTime" TIMESTAMP(3),
382
+ "endDateTime" TIMESTAMP(3),
383
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
384
+ "updatedAt" TIMESTAMP(3) NOT NULL,
385
+
386
+ CONSTRAINT "CurrentSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
387
+ );
388
+
389
+ -- CreateTable
390
+ CREATE TABLE "VibrationSensorHourlyAnalytics" (
391
+ "id" BIGSERIAL NOT NULL,
392
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
393
+ "avgRMS" DOUBLE PRECISION,
394
+ "maxRMS" DOUBLE PRECISION,
395
+ "dominantFrequency" DOUBLE PRECISION,
396
+ "healthScore" DOUBLE PRECISION,
397
+ "alertCount" INTEGER,
398
+ "startDateTime" TIMESTAMP(3),
399
+ "endDateTime" TIMESTAMP(3),
400
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
401
+ "updatedAt" TIMESTAMP(3) NOT NULL,
402
+
403
+ CONSTRAINT "VibrationSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
404
+ );
405
+
406
+ -- CreateTable
407
+ CREATE TABLE "TemperatureSensorHourlyAnalytics" (
408
+ "id" BIGSERIAL NOT NULL,
409
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
410
+ "avgTemp" DOUBLE PRECISION,
411
+ "maxTemp" DOUBLE PRECISION,
412
+ "minTemp" DOUBLE PRECISION,
413
+ "timeAboveThreshold" DOUBLE PRECISION,
414
+ "startDateTime" TIMESTAMP(3),
415
+ "endDateTime" TIMESTAMP(3),
416
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
417
+ "updatedAt" TIMESTAMP(3) NOT NULL,
418
+
419
+ CONSTRAINT "TemperatureSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
420
+ );
421
+
422
+ -- CreateTable
423
+ CREATE TABLE "FlowSensorHourlyAnalytics" (
424
+ "id" BIGSERIAL NOT NULL,
425
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
426
+ "avgFlowRate" DOUBLE PRECISION,
427
+ "totalVolume" DOUBLE PRECISION,
428
+ "maxFlowRate" DOUBLE PRECISION,
429
+ "minFlowRate" DOUBLE PRECISION,
430
+ "startDateTime" TIMESTAMP(3),
431
+ "endDateTime" TIMESTAMP(3),
432
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
433
+ "updatedAt" TIMESTAMP(3) NOT NULL,
434
+
435
+ CONSTRAINT "FlowSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
436
+ );
437
+
438
+ -- CreateTable
439
+ CREATE TABLE "WeightSensorHourlyAnalytics" (
440
+ "id" BIGSERIAL NOT NULL,
441
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
442
+ "avgWeight" DOUBLE PRECISION,
443
+ "maxWeight" DOUBLE PRECISION,
444
+ "minWeight" DOUBLE PRECISION,
445
+ "totalMeasurements" INTEGER,
446
+ "startDateTime" TIMESTAMP(3),
447
+ "endDateTime" TIMESTAMP(3),
448
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
449
+ "updatedAt" TIMESTAMP(3) NOT NULL,
450
+
451
+ CONSTRAINT "WeightSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
452
+ );
453
+
454
+ -- CreateTable
455
+ CREATE TABLE "PressureSensorHourlyAnalytics" (
456
+ "id" BIGSERIAL NOT NULL,
457
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
458
+ "avgPressure" DOUBLE PRECISION,
459
+ "maxPressure" DOUBLE PRECISION,
460
+ "minPressure" DOUBLE PRECISION,
461
+ "timeOutOfRange" DOUBLE PRECISION,
462
+ "startDateTime" TIMESTAMP(3),
463
+ "endDateTime" TIMESTAMP(3),
464
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
465
+ "updatedAt" TIMESTAMP(3) NOT NULL,
466
+
467
+ CONSTRAINT "PressureSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
468
+ );
469
+
470
+ -- CreateTable
471
+ CREATE TABLE "AuditLog" (
472
+ "id" BIGSERIAL NOT NULL,
473
+ "organizationId" INTEGER NOT NULL,
474
+ "entityName" TEXT NOT NULL,
475
+ "entityId" TEXT,
476
+ "action" TEXT NOT NULL,
477
+ "userId" TEXT,
478
+ "userName" TEXT,
479
+ "roleNames" TEXT[],
480
+ "timestamp" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
481
+ "httpMethod" TEXT,
482
+ "route" TEXT,
483
+ "statusCode" INTEGER,
484
+ "ipAddress" TEXT,
485
+ "userAgent" TEXT,
486
+ "sessionId" TEXT,
487
+ "duration" INTEGER,
488
+ "errorMessage" TEXT,
489
+ "changedFields" TEXT[],
490
+ "reasonForChange" TEXT,
491
+ "payloadId" TEXT,
492
+ "beforeValueHash" TEXT,
493
+ "afterValueHash" TEXT,
494
+ "criticality" "LogCriticality" NOT NULL DEFAULT 'MEDIUM',
495
+ "isGxPRecord" BOOLEAN NOT NULL DEFAULT false,
496
+ "isComplianceEvent" BOOLEAN NOT NULL DEFAULT false,
497
+ "relatedSignatureId" TEXT,
498
+
499
+ CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id")
500
+ );
501
+
502
+ -- CreateTable
503
+ CREATE TABLE "AuditLogPayload" (
504
+ "id" TEXT NOT NULL,
505
+ "oldValues" JSONB,
506
+ "newValues" JSONB,
507
+ "fullSnapshot" JSONB,
508
+ "isCompressed" BOOLEAN NOT NULL DEFAULT false,
509
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
510
+
511
+ CONSTRAINT "AuditLogPayload_pkey" PRIMARY KEY ("id")
512
+ );
513
+
514
+ -- CreateTable
515
+ CREATE TABLE "ChatbotHistory" (
516
+ "id" SERIAL NOT NULL,
517
+ "title" TEXT NOT NULL,
518
+ "userId" INTEGER NOT NULL,
519
+ "organizationId" INTEGER NOT NULL,
520
+ "factoryId" INTEGER,
521
+ "machineId" INTEGER,
522
+ "deviceId" INTEGER,
523
+ "sensorId" INTEGER,
524
+ "contextType" TEXT,
525
+ "contextData" JSONB,
526
+ "isArchived" BOOLEAN NOT NULL DEFAULT false,
527
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
528
+ "updatedAt" TIMESTAMP(3) NOT NULL,
529
+
530
+ CONSTRAINT "ChatbotHistory_pkey" PRIMARY KEY ("id")
531
+ );
532
+
533
+ -- CreateTable
534
+ CREATE TABLE "ChatbotMessage" (
535
+ "id" SERIAL NOT NULL,
536
+ "chatHistoryId" INTEGER NOT NULL,
537
+ "sender" "ChatbotMessageSender" NOT NULL,
538
+ "message" TEXT NOT NULL,
539
+ "tokensUsed" INTEGER NOT NULL DEFAULT 0,
540
+ "model" TEXT,
541
+ "cost" DOUBLE PRECISION,
542
+ "jsonContent" JSONB,
543
+ "embedding" vector(1536),
544
+ "retrievedChunkIds" INTEGER[] DEFAULT ARRAY[]::INTEGER[],
545
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
546
+ "updatedAt" TIMESTAMP(3) NOT NULL,
547
+
548
+ CONSTRAINT "ChatbotMessage_pkey" PRIMARY KEY ("id")
549
+ );
550
+
551
+ -- CreateTable
552
+ CREATE TABLE "ChatbotKnowledgeBase" (
553
+ "id" SERIAL NOT NULL,
554
+ "organizationId" INTEGER NOT NULL,
555
+ "factoryId" INTEGER,
556
+ "machineId" INTEGER,
557
+ "deviceId" INTEGER,
558
+ "sensorId" INTEGER,
559
+ "documentType" "DocumentType" NOT NULL,
560
+ "title" TEXT NOT NULL,
561
+ "content" TEXT NOT NULL,
562
+ "summary" TEXT,
563
+ "metadata" JSONB,
564
+ "fileUrl" TEXT,
565
+ "embedding" vector(1536),
566
+ "embeddingModel" TEXT NOT NULL DEFAULT 'text-embedding-3-small',
567
+ "embeddingStatus" "EmbeddingStatus" NOT NULL DEFAULT 'PENDING',
568
+ "embeddingError" TEXT,
569
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
570
+ "lastAccessedAt" TIMESTAMP(3),
571
+ "accessCount" INTEGER NOT NULL DEFAULT 0,
572
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
573
+ "updatedAt" TIMESTAMP(3) NOT NULL,
574
+
575
+ CONSTRAINT "ChatbotKnowledgeBase_pkey" PRIMARY KEY ("id")
576
+ );
577
+
578
+ -- CreateTable
579
+ CREATE TABLE "ChatbotKnowledgeChunk" (
580
+ "id" SERIAL NOT NULL,
581
+ "knowledgeBaseId" INTEGER NOT NULL,
582
+ "chunkIndex" INTEGER NOT NULL,
583
+ "content" TEXT NOT NULL,
584
+ "embedding" vector(1536),
585
+ "metadata" JSONB,
586
+ "tokenCount" INTEGER,
587
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
588
+ "updatedAt" TIMESTAMP(3) NOT NULL,
589
+
590
+ CONSTRAINT "ChatbotKnowledgeChunk_pkey" PRIMARY KEY ("id")
591
+ );
592
+
593
+ -- CreateTable
594
+ CREATE TABLE "ChatbotSearchHistory" (
595
+ "id" SERIAL NOT NULL,
596
+ "userId" INTEGER NOT NULL,
597
+ "organizationId" INTEGER NOT NULL,
598
+ "query" TEXT NOT NULL,
599
+ "queryEmbedding" vector(1536),
600
+ "results" JSONB NOT NULL,
601
+ "clickedResults" INTEGER[] DEFAULT ARRAY[]::INTEGER[],
602
+ "resultCount" INTEGER NOT NULL DEFAULT 0,
603
+ "wasHelpful" BOOLEAN,
604
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
605
+
606
+ CONSTRAINT "ChatbotSearchHistory_pkey" PRIMARY KEY ("id")
607
+ );
608
+
609
+ -- CreateTable
610
+ CREATE TABLE "DeviceConversationContext" (
611
+ "id" SERIAL NOT NULL,
612
+ "organizationId" INTEGER NOT NULL,
613
+ "machineId" INTEGER,
614
+ "deviceId" INTEGER,
615
+ "sensorId" INTEGER,
616
+ "entityType" TEXT NOT NULL,
617
+ "entityId" INTEGER NOT NULL,
618
+ "personality" TEXT,
619
+ "capabilities" JSONB NOT NULL,
620
+ "currentState" JSONB,
621
+ "lastSync" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
622
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
623
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
624
+ "updatedAt" TIMESTAMP(3) NOT NULL,
625
+
626
+ CONSTRAINT "DeviceConversationContext_pkey" PRIMARY KEY ("id")
627
+ );
628
+
629
+ -- CreateTable
630
+ CREATE TABLE "ChatbotFeedback" (
631
+ "id" SERIAL NOT NULL,
632
+ "chatHistoryId" INTEGER NOT NULL,
633
+ "messageId" INTEGER NOT NULL,
634
+ "userId" INTEGER NOT NULL,
635
+ "organizationId" INTEGER NOT NULL,
636
+ "rating" INTEGER,
637
+ "wasHelpful" BOOLEAN,
638
+ "feedback" TEXT,
639
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
640
+
641
+ CONSTRAINT "ChatbotFeedback_pkey" PRIMARY KEY ("id")
642
+ );
643
+
644
+ -- CreateTable
645
+ CREATE TABLE "FMEA" (
646
+ "id" SERIAL NOT NULL,
647
+ "organizationId" INTEGER NOT NULL,
648
+ "fmeaNumber" TEXT NOT NULL,
649
+ "title" TEXT NOT NULL,
650
+ "type" "FMEAType" NOT NULL,
651
+ "productId" INTEGER,
652
+ "productName" TEXT,
653
+ "processId" INTEGER,
654
+ "partNumber" TEXT,
655
+ "teamLead" INTEGER NOT NULL,
656
+ "teamMembers" INTEGER[],
657
+ "revision" TEXT NOT NULL DEFAULT 'A',
658
+ "revisionDate" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
659
+ "status" "DocStatus" NOT NULL DEFAULT 'DRAFT',
660
+ "approvedBy" INTEGER,
661
+ "approverName" TEXT,
662
+ "approvedAt" TIMESTAMP(3),
663
+ "nextReviewDate" TIMESTAMP(3),
664
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
665
+ "updatedAt" TIMESTAMP(3) NOT NULL,
666
+
667
+ CONSTRAINT "FMEA_pkey" PRIMARY KEY ("id")
668
+ );
669
+
670
+ -- CreateTable
671
+ CREATE TABLE "FMEAItem" (
672
+ "id" TEXT NOT NULL,
673
+ "fmeaId" INTEGER NOT NULL,
674
+ "processStep" TEXT NOT NULL,
675
+ "processFunction" TEXT,
676
+ "failureMode" TEXT NOT NULL,
677
+ "failureEffect" TEXT NOT NULL,
678
+ "failureCause" TEXT NOT NULL,
679
+ "severity" INTEGER NOT NULL,
680
+ "severityJustification" TEXT,
681
+ "occurrence" INTEGER NOT NULL,
682
+ "occurrenceJustification" TEXT,
683
+ "preventionControl" TEXT,
684
+ "detectionControl" TEXT,
685
+ "detection" INTEGER NOT NULL,
686
+ "detectionJustification" TEXT,
687
+ "rpn" INTEGER NOT NULL,
688
+ "riskLevel" TEXT,
689
+ "recommendedAction" TEXT,
690
+ "responsibility" INTEGER,
691
+ "targetDate" TIMESTAMP(3),
692
+ "actionTaken" TEXT,
693
+ "actionTakenBy" INTEGER,
694
+ "actionTakenDate" TIMESTAMP(3),
695
+ "severityAfter" INTEGER,
696
+ "occurrenceAfter" INTEGER,
697
+ "detectionAfter" INTEGER,
698
+ "rpnAfter" INTEGER,
699
+ "linkedMachineId" INTEGER,
700
+ "linkedCAPAId" TEXT,
701
+ "isActionRequired" BOOLEAN NOT NULL DEFAULT false,
702
+ "isActionComplete" BOOLEAN NOT NULL DEFAULT false,
703
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
704
+ "updatedAt" TIMESTAMP(3) NOT NULL,
705
+
706
+ CONSTRAINT "FMEAItem_pkey" PRIMARY KEY ("id")
707
+ );
708
+
709
+ -- CreateTable
710
+ CREATE TABLE "ControlPlan" (
711
+ "id" SERIAL NOT NULL,
712
+ "organizationId" INTEGER NOT NULL,
713
+ "controlPlanNumber" TEXT NOT NULL,
714
+ "title" TEXT NOT NULL,
715
+ "type" "ControlPlanType" NOT NULL,
716
+ "productId" INTEGER,
717
+ "productName" TEXT,
718
+ "partNumber" TEXT,
719
+ "processId" INTEGER,
720
+ "revision" TEXT NOT NULL DEFAULT 'A',
721
+ "revisionDate" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
722
+ "status" "DocStatus" NOT NULL DEFAULT 'DRAFT',
723
+ "preparedBy" INTEGER NOT NULL,
724
+ "preparedName" TEXT NOT NULL,
725
+ "approvedBy" INTEGER,
726
+ "approverName" TEXT,
727
+ "approvedAt" TIMESTAMP(3),
728
+ "effectiveDate" TIMESTAMP(3),
729
+ "obsoleteDate" TIMESTAMP(3),
730
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
731
+ "updatedAt" TIMESTAMP(3) NOT NULL,
732
+
733
+ CONSTRAINT "ControlPlan_pkey" PRIMARY KEY ("id")
734
+ );
735
+
736
+ -- CreateTable
737
+ CREATE TABLE "ControlPlanItem" (
738
+ "id" TEXT NOT NULL,
739
+ "controlPlanId" INTEGER NOT NULL,
740
+ "processStep" TEXT NOT NULL,
741
+ "processNumber" TEXT,
742
+ "machineId" INTEGER,
743
+ "machineName" TEXT,
744
+ "characteristic" TEXT NOT NULL,
745
+ "characteristicType" TEXT NOT NULL,
746
+ "classificationChar" TEXT,
747
+ "specification" TEXT NOT NULL,
748
+ "lowerSpec" DOUBLE PRECISION,
749
+ "upperSpec" DOUBLE PRECISION,
750
+ "targetValue" DOUBLE PRECISION,
751
+ "unit" TEXT,
752
+ "controlMethod" TEXT NOT NULL,
753
+ "measurementDevice" TEXT,
754
+ "sampleSize" INTEGER NOT NULL,
755
+ "sampleFrequency" TEXT NOT NULL,
756
+ "reactionPlan" TEXT,
757
+ "linkedMachineId" INTEGER,
758
+ "autoGenerateTask" BOOLEAN NOT NULL DEFAULT false,
759
+ "responsiblePerson" TEXT,
760
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
761
+ "updatedAt" TIMESTAMP(3) NOT NULL,
762
+
763
+ CONSTRAINT "ControlPlanItem_pkey" PRIMARY KEY ("id")
764
+ );
765
+
766
+ -- CreateTable
767
+ CREATE TABLE "PPAPSubmission" (
768
+ "id" SERIAL NOT NULL,
769
+ "organizationId" INTEGER NOT NULL,
770
+ "ppapNumber" TEXT NOT NULL,
771
+ "productId" INTEGER NOT NULL,
772
+ "productName" TEXT NOT NULL,
773
+ "partNumber" TEXT NOT NULL,
774
+ "customerName" TEXT NOT NULL,
775
+ "customerPartNumber" TEXT,
776
+ "submissionLevel" INTEGER NOT NULL,
777
+ "status" "PPAPStatus" NOT NULL DEFAULT 'NOT_STARTED',
778
+ "designRecordProvided" BOOLEAN NOT NULL DEFAULT false,
779
+ "engineeringChangeDocuments" BOOLEAN NOT NULL DEFAULT false,
780
+ "customerApprovalProvided" BOOLEAN NOT NULL DEFAULT false,
781
+ "dfmeaProvided" BOOLEAN NOT NULL DEFAULT false,
782
+ "pfmeaProvided" BOOLEAN NOT NULL DEFAULT false,
783
+ "processFlowDiagram" BOOLEAN NOT NULL DEFAULT false,
784
+ "controlPlanProvided" BOOLEAN NOT NULL DEFAULT false,
785
+ "msaStudiesProvided" BOOLEAN NOT NULL DEFAULT false,
786
+ "dimensionalResults" BOOLEAN NOT NULL DEFAULT false,
787
+ "materialTestResults" BOOLEAN NOT NULL DEFAULT false,
788
+ "initialProcessStudies" BOOLEAN NOT NULL DEFAULT false,
789
+ "qualifiedLabDocumentation" BOOLEAN NOT NULL DEFAULT false,
790
+ "appearanceApprovalReport" BOOLEAN NOT NULL DEFAULT false,
791
+ "sampleProductProvided" BOOLEAN NOT NULL DEFAULT false,
792
+ "masterSampleProvided" BOOLEAN NOT NULL DEFAULT false,
793
+ "checkingAidsProvided" BOOLEAN NOT NULL DEFAULT false,
794
+ "customerSpecificRequirements" BOOLEAN NOT NULL DEFAULT false,
795
+ "partSubmissionWarrant" BOOLEAN NOT NULL DEFAULT false,
796
+ "documentUrls" JSONB,
797
+ "submittedBy" INTEGER,
798
+ "submittedName" TEXT,
799
+ "submittedDate" TIMESTAMP(3),
800
+ "approvedBy" TEXT,
801
+ "approvalDate" TIMESTAMP(3),
802
+ "rejectionReason" TEXT,
803
+ "validUntil" TIMESTAMP(3),
804
+ "notes" TEXT,
805
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
806
+ "updatedAt" TIMESTAMP(3) NOT NULL,
807
+
808
+ CONSTRAINT "PPAPSubmission_pkey" PRIMARY KEY ("id")
809
+ );
810
+
811
+ -- CreateTable
812
+ CREATE TABLE "Problem8D" (
813
+ "id" TEXT NOT NULL,
814
+ "organizationId" INTEGER NOT NULL,
815
+ "problemNumber" TEXT NOT NULL,
816
+ "title" TEXT NOT NULL,
817
+ "description" TEXT NOT NULL,
818
+ "sourceType" TEXT NOT NULL,
819
+ "sourceRef" TEXT,
820
+ "customerId" INTEGER,
821
+ "customerName" TEXT,
822
+ "productId" INTEGER,
823
+ "partNumber" TEXT,
824
+ "batchNumbers" TEXT[],
825
+ "quantityAffected" INTEGER,
826
+ "d0_plan" TEXT,
827
+ "d0_completedAt" TIMESTAMP(3),
828
+ "d1_teamMembers" INTEGER[],
829
+ "d1_teamLead" INTEGER,
830
+ "d1_completedAt" TIMESTAMP(3),
831
+ "d2_problemDescription" TEXT,
832
+ "d2_is_isNot" JSONB,
833
+ "d2_completedAt" TIMESTAMP(3),
834
+ "d3_containmentAction" TEXT,
835
+ "d3_verificationOfContainment" TEXT,
836
+ "d3_completedAt" TIMESTAMP(3),
837
+ "d4_rootCause" TEXT,
838
+ "d4_rootCauseVerification" TEXT,
839
+ "d4_whyWhyAnalysis" JSONB,
840
+ "d4_completedAt" TIMESTAMP(3),
841
+ "d5_correctiveActions" TEXT,
842
+ "d5_verificationPlan" TEXT,
843
+ "d5_completedAt" TIMESTAMP(3),
844
+ "d6_implementationPlan" TEXT,
845
+ "d6_implementedBy" INTEGER,
846
+ "d6_implementedAt" TIMESTAMP(3),
847
+ "d7_preventiveActions" TEXT,
848
+ "d7_systemChanges" TEXT,
849
+ "d7_completedAt" TIMESTAMP(3),
850
+ "d8_lessons" TEXT,
851
+ "d8_recognition" TEXT,
852
+ "d8_completedAt" TIMESTAMP(3),
853
+ "status" "ProblemStatus" NOT NULL DEFAULT 'OPEN',
854
+ "detectedDate" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
855
+ "targetCloseDate" TIMESTAMP(3) NOT NULL,
856
+ "closedDate" TIMESTAMP(3),
857
+ "estimatedCost" DOUBLE PRECISION,
858
+ "actualCost" DOUBLE PRECISION,
859
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
860
+ "updatedAt" TIMESTAMP(3) NOT NULL,
861
+
862
+ CONSTRAINT "Problem8D_pkey" PRIMARY KEY ("id")
863
+ );
864
+
865
+ -- CreateTable
866
+ CREATE TABLE "MasterFormulaRecord" (
867
+ "id" SERIAL NOT NULL,
868
+ "organizationId" INTEGER NOT NULL,
869
+ "productId" INTEGER NOT NULL,
870
+ "productName" TEXT NOT NULL,
871
+ "productCode" TEXT,
872
+ "mfrNumber" TEXT NOT NULL,
873
+ "version" TEXT NOT NULL,
874
+ "revision" INTEGER NOT NULL DEFAULT 1,
875
+ "standardBatchSize" DOUBLE PRECISION NOT NULL,
876
+ "batchSizeUnit" TEXT NOT NULL,
877
+ "minBatchSize" DOUBLE PRECISION,
878
+ "maxBatchSize" DOUBLE PRECISION,
879
+ "requiredEquipment" TEXT[],
880
+ "status" "DocStatus" NOT NULL DEFAULT 'DRAFT',
881
+ "effectiveDate" TIMESTAMP(3),
882
+ "obsoleteDate" TIMESTAMP(3),
883
+ "supersededBy" INTEGER,
884
+ "authoredBy" INTEGER NOT NULL,
885
+ "authorName" TEXT NOT NULL,
886
+ "reviewedBy" INTEGER,
887
+ "reviewerName" TEXT,
888
+ "approvedBy" INTEGER,
889
+ "approverName" TEXT,
890
+ "approvedAt" TIMESTAMP(3),
891
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
892
+ "updatedAt" TIMESTAMP(3) NOT NULL,
893
+
894
+ CONSTRAINT "MasterFormulaRecord_pkey" PRIMARY KEY ("id")
895
+ );
896
+
897
+ -- CreateTable
898
+ CREATE TABLE "MFRMaterial" (
899
+ "id" SERIAL NOT NULL,
900
+ "mfrId" INTEGER NOT NULL,
901
+ "materialId" INTEGER,
902
+ "materialCode" TEXT NOT NULL,
903
+ "materialName" TEXT NOT NULL,
904
+ "materialType" TEXT NOT NULL,
905
+ "quantity" DOUBLE PRECISION NOT NULL,
906
+ "unit" TEXT NOT NULL,
907
+ "tolerancePlus" DOUBLE PRECISION,
908
+ "toleranceMinus" DOUBLE PRECISION,
909
+ "additionStage" TEXT,
910
+ "instructions" TEXT,
911
+ "sequence" INTEGER NOT NULL,
912
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
913
+ "updatedAt" TIMESTAMP(3) NOT NULL,
914
+
915
+ CONSTRAINT "MFRMaterial_pkey" PRIMARY KEY ("id")
916
+ );
917
+
918
+ -- CreateTable
919
+ CREATE TABLE "MFRProcessStep" (
920
+ "id" SERIAL NOT NULL,
921
+ "mfrId" INTEGER NOT NULL,
922
+ "stepNumber" INTEGER NOT NULL,
923
+ "operation" TEXT NOT NULL,
924
+ "description" TEXT,
925
+ "durationMinutes" INTEGER,
926
+ "temperatureMin" DOUBLE PRECISION,
927
+ "temperatureMax" DOUBLE PRECISION,
928
+ "temperatureUnit" TEXT,
929
+ "speed" DOUBLE PRECISION,
930
+ "pressure" DOUBLE PRECISION,
931
+ "humidity" DOUBLE PRECISION,
932
+ "requiredEquipment" TEXT,
933
+ "machineId" INTEGER,
934
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
935
+ "updatedAt" TIMESTAMP(3) NOT NULL,
936
+
937
+ CONSTRAINT "MFRProcessStep_pkey" PRIMARY KEY ("id")
938
+ );
939
+
940
+ -- CreateTable
941
+ CREATE TABLE "MFRQualitySpec" (
942
+ "id" SERIAL NOT NULL,
943
+ "mfrId" INTEGER NOT NULL,
944
+ "processStepId" INTEGER,
945
+ "parameter" TEXT NOT NULL,
946
+ "testStage" TEXT NOT NULL,
947
+ "testMethod" TEXT,
948
+ "minValue" DOUBLE PRECISION,
949
+ "maxValue" DOUBLE PRECISION,
950
+ "targetValue" DOUBLE PRECISION,
951
+ "unit" TEXT,
952
+ "acceptanceCriteria" TEXT,
953
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
954
+ "updatedAt" TIMESTAMP(3) NOT NULL,
955
+
956
+ CONSTRAINT "MFRQualitySpec_pkey" PRIMARY KEY ("id")
957
+ );
958
+
959
+ -- CreateTable
960
+ CREATE TABLE "BatchManufacturingRecord" (
961
+ "id" TEXT NOT NULL,
962
+ "organizationId" INTEGER NOT NULL,
963
+ "batchNumber" TEXT NOT NULL,
964
+ "mfrId" INTEGER NOT NULL,
965
+ "productId" INTEGER NOT NULL,
966
+ "productName" TEXT NOT NULL,
967
+ "plannedBatchSize" DOUBLE PRECISION NOT NULL,
968
+ "actualBatchSize" DOUBLE PRECISION,
969
+ "batchSizeUnit" TEXT NOT NULL,
970
+ "yieldPercentage" DOUBLE PRECISION,
971
+ "scheduledStartDate" TIMESTAMP(3) NOT NULL,
972
+ "actualStartDate" TIMESTAMP(3),
973
+ "actualEndDate" TIMESTAMP(3),
974
+ "manufacturingDate" TIMESTAMP(3) NOT NULL,
975
+ "expiryDate" TIMESTAMP(3) NOT NULL,
976
+ "retestDate" TIMESTAMP(3),
977
+ "status" "BatchStatus" NOT NULL DEFAULT 'PENDING',
978
+ "currentStage" TEXT,
979
+ "processExecutionData" JSONB,
980
+ "equipmentUsed" TEXT[],
981
+ "qaStatus" TEXT,
982
+ "qaReleaseBy" INTEGER,
983
+ "qaReleaseName" TEXT,
984
+ "qaReleaseDate" TIMESTAMP(3),
985
+ "qaComments" TEXT,
986
+ "rejectionReason" TEXT,
987
+ "rejectionDate" TIMESTAMP(3),
988
+ "rejectedBy" INTEGER,
989
+ "storageLocation" TEXT,
990
+ "storageCondition" TEXT,
991
+ "theoreticalYield" DOUBLE PRECISION,
992
+ "practicalYield" DOUBLE PRECISION,
993
+ "yieldReconciliation" JSONB,
994
+ "orderProductId" INTEGER,
995
+ "notes" TEXT,
996
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
997
+ "updatedAt" TIMESTAMP(3) NOT NULL,
998
+
999
+ CONSTRAINT "BatchManufacturingRecord_pkey" PRIMARY KEY ("id")
1000
+ );
1001
+
1002
+ -- CreateTable
1003
+ CREATE TABLE "WeighingLog" (
1004
+ "id" TEXT NOT NULL,
1005
+ "batchId" TEXT NOT NULL,
1006
+ "materialId" INTEGER,
1007
+ "materialCode" TEXT NOT NULL,
1008
+ "materialName" TEXT NOT NULL,
1009
+ "materialBatch" TEXT NOT NULL,
1010
+ "materialExpiry" TIMESTAMP(3),
1011
+ "requiredQty" DOUBLE PRECISION NOT NULL,
1012
+ "actualQty" DOUBLE PRECISION NOT NULL,
1013
+ "tolerance" DOUBLE PRECISION,
1014
+ "unit" TEXT NOT NULL,
1015
+ "variance" DOUBLE PRECISION,
1016
+ "variancePct" DOUBLE PRECISION,
1017
+ "balanceId" INTEGER,
1018
+ "balanceName" TEXT,
1019
+ "isAutomated" BOOLEAN NOT NULL DEFAULT false,
1020
+ "weighedBy" INTEGER NOT NULL,
1021
+ "weigherName" TEXT NOT NULL,
1022
+ "verifiedBy" INTEGER,
1023
+ "verifierName" TEXT,
1024
+ "verifiedAt" TIMESTAMP(3),
1025
+ "weighedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1026
+ "containerTare" DOUBLE PRECISION,
1027
+ "grossWeight" DOUBLE PRECISION,
1028
+ "notes" TEXT,
1029
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1030
+
1031
+ CONSTRAINT "WeighingLog_pkey" PRIMARY KEY ("id")
1032
+ );
1033
+
1034
+ -- CreateTable
1035
+ CREATE TABLE "InProcessControl" (
1036
+ "id" TEXT NOT NULL,
1037
+ "batchId" TEXT NOT NULL,
1038
+ "testName" TEXT NOT NULL,
1039
+ "testStage" TEXT NOT NULL,
1040
+ "testMethod" TEXT,
1041
+ "parameter" TEXT NOT NULL,
1042
+ "specMin" DOUBLE PRECISION,
1043
+ "specMax" DOUBLE PRECISION,
1044
+ "targetValue" DOUBLE PRECISION,
1045
+ "unit" TEXT,
1046
+ "measuredValue" DOUBLE PRECISION,
1047
+ "textResult" TEXT,
1048
+ "isPass" BOOLEAN NOT NULL,
1049
+ "sampleSize" INTEGER,
1050
+ "sampleLocation" TEXT,
1051
+ "testedBy" INTEGER NOT NULL,
1052
+ "testerName" TEXT NOT NULL,
1053
+ "testedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1054
+ "reviewedBy" INTEGER,
1055
+ "reviewerName" TEXT,
1056
+ "reviewedAt" TIMESTAMP(3),
1057
+ "notes" TEXT,
1058
+
1059
+ CONSTRAINT "InProcessControl_pkey" PRIMARY KEY ("id")
1060
+ );
1061
+
1062
+ -- CreateTable
1063
+ CREATE TABLE "Deviation" (
1064
+ "id" TEXT NOT NULL,
1065
+ "organizationId" INTEGER NOT NULL,
1066
+ "deviationNumber" TEXT NOT NULL,
1067
+ "title" TEXT NOT NULL,
1068
+ "description" TEXT NOT NULL,
1069
+ "batchId" TEXT,
1070
+ "productId" INTEGER,
1071
+ "processStage" TEXT,
1072
+ "equipmentId" INTEGER,
1073
+ "severity" "DeviationSeverity" NOT NULL,
1074
+ "deviationType" TEXT NOT NULL,
1075
+ "detectedBy" INTEGER NOT NULL,
1076
+ "detectorName" TEXT NOT NULL,
1077
+ "detectedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1078
+ "status" "DeviationStatus" NOT NULL DEFAULT 'OPEN',
1079
+ "rootCause" TEXT,
1080
+ "investigation" TEXT,
1081
+ "investigatedBy" INTEGER,
1082
+ "investigatedAt" TIMESTAMP(3),
1083
+ "productImpact" BOOLEAN NOT NULL DEFAULT false,
1084
+ "customerImpact" BOOLEAN NOT NULL DEFAULT false,
1085
+ "regulatoryImpact" BOOLEAN NOT NULL DEFAULT false,
1086
+ "impactDescription" TEXT,
1087
+ "immediateAction" TEXT,
1088
+ "actionTakenBy" INTEGER,
1089
+ "actionTakenAt" TIMESTAMP(3),
1090
+ "reviewedBy" INTEGER,
1091
+ "reviewerName" TEXT,
1092
+ "reviewedAt" TIMESTAMP(3),
1093
+ "approvedBy" INTEGER,
1094
+ "approverName" TEXT,
1095
+ "approvedAt" TIMESTAMP(3),
1096
+ "closedAt" TIMESTAMP(3),
1097
+ "closureComments" TEXT,
1098
+ "isRecurrence" BOOLEAN NOT NULL DEFAULT false,
1099
+ "previousDeviationId" TEXT,
1100
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1101
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1102
+
1103
+ CONSTRAINT "Deviation_pkey" PRIMARY KEY ("id")
1104
+ );
1105
+
1106
+ -- CreateTable
1107
+ CREATE TABLE "CAPA" (
1108
+ "id" TEXT NOT NULL,
1109
+ "organizationId" INTEGER NOT NULL,
1110
+ "capaNumber" TEXT NOT NULL,
1111
+ "title" TEXT NOT NULL,
1112
+ "description" TEXT NOT NULL,
1113
+ "type" "CAPAType" NOT NULL,
1114
+ "deviationId" TEXT,
1115
+ "sourceType" TEXT,
1116
+ "sourceRef" TEXT,
1117
+ "assignedTo" INTEGER NOT NULL,
1118
+ "assigneeName" TEXT NOT NULL,
1119
+ "assignedBy" INTEGER NOT NULL,
1120
+ "assignedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1121
+ "dueDate" TIMESTAMP(3) NOT NULL,
1122
+ "status" "CAPAStatus" NOT NULL DEFAULT 'INITIATED',
1123
+ "actionPlan" TEXT,
1124
+ "implementedBy" INTEGER,
1125
+ "implementedAt" TIMESTAMP(3),
1126
+ "implementationEvidence" TEXT,
1127
+ "effectivenessCheck" TEXT,
1128
+ "effectivenessDueDate" TIMESTAMP(3),
1129
+ "isEffective" BOOLEAN,
1130
+ "effectivenessCheckedBy" INTEGER,
1131
+ "effectivenessCheckedAt" TIMESTAMP(3),
1132
+ "approvedBy" INTEGER,
1133
+ "approverName" TEXT,
1134
+ "approvedAt" TIMESTAMP(3),
1135
+ "completedAt" TIMESTAMP(3),
1136
+ "relatedCAPAIds" TEXT[],
1137
+ "notes" TEXT,
1138
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1139
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1140
+
1141
+ CONSTRAINT "CAPA_pkey" PRIMARY KEY ("id")
1142
+ );
1143
+
1144
+ -- CreateTable
1145
+ CREATE TABLE "ElectronicSignature" (
1146
+ "id" TEXT NOT NULL,
1147
+ "organizationId" INTEGER NOT NULL,
1148
+ "userId" TEXT NOT NULL,
1149
+ "userFullName" TEXT NOT NULL,
1150
+ "userTitle" TEXT,
1151
+ "userEmail" TEXT NOT NULL,
1152
+ "roleId" TEXT,
1153
+ "roleName" TEXT,
1154
+ "batchRecordId" TEXT,
1155
+ "deviationId" TEXT,
1156
+ "capaId" TEXT,
1157
+ "mfrId" INTEGER,
1158
+ "documentId" INTEGER,
1159
+ "equipmentQualId" INTEGER,
1160
+ "changeControlId" INTEGER,
1161
+ "labTestRequestId" TEXT,
1162
+ "dppId" TEXT,
1163
+ "fmeaId" INTEGER,
1164
+ "controlPlanId" INTEGER,
1165
+ "ppapSubmissionId" INTEGER,
1166
+ "meaning" "SignatureMeaning" NOT NULL,
1167
+ "reason" TEXT,
1168
+ "comments" TEXT,
1169
+ "timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1170
+ "checksum" TEXT NOT NULL,
1171
+ "checksumAlgo" TEXT NOT NULL DEFAULT 'SHA256',
1172
+ "dataSnapshot" JSONB,
1173
+ "ipAddress" TEXT,
1174
+ "deviceInfo" TEXT,
1175
+ "authMethod" TEXT,
1176
+ "sessionId" TEXT,
1177
+ "isValid" BOOLEAN NOT NULL DEFAULT true,
1178
+ "invalidatedAt" TIMESTAMP(3),
1179
+ "invalidatedBy" TEXT,
1180
+ "invalidationReason" TEXT,
1181
+ "deletedAt" TIMESTAMP(3),
1182
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1183
+
1184
+ CONSTRAINT "ElectronicSignature_pkey" PRIMARY KEY ("id")
1185
+ );
1186
+
1187
+ -- CreateTable
1188
+ CREATE TABLE "EquipmentQualification" (
1189
+ "id" SERIAL NOT NULL,
1190
+ "organizationId" INTEGER NOT NULL,
1191
+ "machineId" INTEGER NOT NULL,
1192
+ "qualificationType" TEXT NOT NULL,
1193
+ "protocolNumber" TEXT NOT NULL,
1194
+ "performedBy" TEXT NOT NULL,
1195
+ "performedDate" TIMESTAMP(3) NOT NULL,
1196
+ "expiryDate" TIMESTAMP(3) NOT NULL,
1197
+ "status" TEXT NOT NULL,
1198
+ "findings" TEXT,
1199
+ "certificateUrl" TEXT,
1200
+ "reviewedBy" TEXT,
1201
+ "approvedBy" TEXT,
1202
+ "approvedAt" TIMESTAMP(3),
1203
+ "notes" TEXT,
1204
+ "deletedAt" TIMESTAMP(3),
1205
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1206
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1207
+
1208
+ CONSTRAINT "EquipmentQualification_pkey" PRIMARY KEY ("id")
1209
+ );
1210
+
1211
+ -- CreateTable
1212
+ CREATE TABLE "ControlledDocument" (
1213
+ "id" SERIAL NOT NULL,
1214
+ "organizationId" INTEGER NOT NULL,
1215
+ "documentNumber" TEXT NOT NULL,
1216
+ "title" TEXT NOT NULL,
1217
+ "version" TEXT NOT NULL,
1218
+ "revision" INTEGER NOT NULL DEFAULT 1,
1219
+ "documentType" "DocumentType" NOT NULL,
1220
+ "category" TEXT,
1221
+ "department" TEXT,
1222
+ "status" "DocStatus" NOT NULL DEFAULT 'DRAFT',
1223
+ "effectiveDate" TIMESTAMP(3),
1224
+ "reviewDate" TIMESTAMP(3),
1225
+ "reviewFrequencyMonths" INTEGER DEFAULT 12,
1226
+ "obsoleteDate" TIMESTAMP(3),
1227
+ "supersededBy" INTEGER,
1228
+ "supersedes" INTEGER,
1229
+ "contentUrl" TEXT NOT NULL,
1230
+ "contentType" TEXT,
1231
+ "fileSize" INTEGER,
1232
+ "contentHash" TEXT NOT NULL,
1233
+ "authorId" TEXT NOT NULL,
1234
+ "authorName" TEXT NOT NULL,
1235
+ "reviewedBy" TEXT,
1236
+ "approvedBy" TEXT,
1237
+ "approvalDate" TIMESTAMP(3),
1238
+ "isPublic" BOOLEAN NOT NULL DEFAULT false,
1239
+ "targetRoles" TEXT[],
1240
+ "targetUsers" TEXT[],
1241
+ "linkedMachineTypes" TEXT[],
1242
+ "linkedProductIds" INTEGER[],
1243
+ "linkedTaskTypes" TEXT[],
1244
+ "deletedAt" TIMESTAMP(3),
1245
+ "keywords" TEXT[],
1246
+ "tags" TEXT[],
1247
+ "notes" TEXT,
1248
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1249
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1250
+
1251
+ CONSTRAINT "ControlledDocument_pkey" PRIMARY KEY ("id")
1252
+ );
1253
+
1254
+ -- CreateTable
1255
+ CREATE TABLE "TrainingRecord" (
1256
+ "id" SERIAL NOT NULL,
1257
+ "organizationId" INTEGER NOT NULL,
1258
+ "userId" TEXT NOT NULL,
1259
+ "userName" TEXT NOT NULL,
1260
+ "documentId" INTEGER,
1261
+ "trainingType" TEXT NOT NULL,
1262
+ "trainingTitle" TEXT NOT NULL,
1263
+ "trainingVersion" TEXT,
1264
+ "status" "TrainingStatus" NOT NULL DEFAULT 'NOT_STARTED',
1265
+ "startedAt" TIMESTAMP(3),
1266
+ "completedAt" TIMESTAMP(3),
1267
+ "expiresAt" TIMESTAMP(3),
1268
+ "score" DOUBLE PRECISION,
1269
+ "passingScore" DOUBLE PRECISION,
1270
+ "attempts" INTEGER NOT NULL DEFAULT 0,
1271
+ "trainerId" TEXT,
1272
+ "trainerName" TEXT,
1273
+ "verifiedById" TEXT,
1274
+ "verifiedAt" TIMESTAMP(3),
1275
+ "certificateUrl" TEXT,
1276
+ "assessmentUrl" TEXT,
1277
+ "notes" TEXT,
1278
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1279
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1280
+
1281
+ CONSTRAINT "TrainingRecord_pkey" PRIMARY KEY ("id")
1282
+ );
1283
+
1284
+ -- CreateTable
1285
+ CREATE TABLE "ChangeControl" (
1286
+ "id" SERIAL NOT NULL,
1287
+ "organizationId" INTEGER NOT NULL,
1288
+ "changeNumber" TEXT NOT NULL,
1289
+ "title" TEXT NOT NULL,
1290
+ "description" TEXT NOT NULL,
1291
+ "changeType" TEXT NOT NULL,
1292
+ "priority" TEXT NOT NULL,
1293
+ "initiatedBy" TEXT NOT NULL,
1294
+ "initiatorName" TEXT NOT NULL,
1295
+ "initiatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1296
+ "impactedSystems" TEXT[],
1297
+ "impactedDocuments" INTEGER[],
1298
+ "impactedProducts" INTEGER[],
1299
+ "riskLevel" TEXT,
1300
+ "riskDescription" TEXT,
1301
+ "status" "ChangeControlStatus" NOT NULL DEFAULT 'INITIATED',
1302
+ "reviewers" TEXT[],
1303
+ "approvers" TEXT[],
1304
+ "approvedBy" TEXT,
1305
+ "approvedAt" TIMESTAMP(3),
1306
+ "implementationPlan" TEXT,
1307
+ "implementedBy" TEXT,
1308
+ "implementedAt" TIMESTAMP(3),
1309
+ "verifiedBy" TEXT,
1310
+ "verifiedAt" TIMESTAMP(3),
1311
+ "effectivenessCheck" TEXT,
1312
+ "closedAt" TIMESTAMP(3),
1313
+ "relatedDeviationIds" TEXT[],
1314
+ "relatedCAPAIds" TEXT[],
1315
+ "deletedAt" TIMESTAMP(3),
1316
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1317
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1318
+
1319
+ CONSTRAINT "ChangeControl_pkey" PRIMARY KEY ("id")
1320
+ );
1321
+
1322
+ -- CreateTable
1323
+ CREATE TABLE "LabTestRequest" (
1324
+ "id" TEXT NOT NULL,
1325
+ "organizationId" INTEGER NOT NULL,
1326
+ "sampleId" TEXT NOT NULL,
1327
+ "sampleType" TEXT NOT NULL,
1328
+ "batchId" TEXT,
1329
+ "lotId" INTEGER,
1330
+ "productId" INTEGER,
1331
+ "testCategory" TEXT NOT NULL,
1332
+ "standardRef" TEXT NOT NULL,
1333
+ "testParameters" TEXT[],
1334
+ "labName" TEXT NOT NULL,
1335
+ "labAddress" TEXT,
1336
+ "isBISRecognized" BOOLEAN NOT NULL DEFAULT false,
1337
+ "labAccreditation" TEXT,
1338
+ "status" "TestStatus" NOT NULL DEFAULT 'PENDING',
1339
+ "requestedBy" TEXT NOT NULL,
1340
+ "requestedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1341
+ "sampleSentAt" TIMESTAMP(3),
1342
+ "resultsReceivedAt" TIMESTAMP(3),
1343
+ "sampleQuantity" DOUBLE PRECISION,
1344
+ "sampleUnit" TEXT,
1345
+ "storageCondition" TEXT,
1346
+ "retentionPeriod" INTEGER,
1347
+ "retentionExpiry" TIMESTAMP(3),
1348
+ "certificateUrl" TEXT,
1349
+ "certificateNumber" TEXT,
1350
+ "reviewedBy" TEXT,
1351
+ "reviewedAt" TIMESTAMP(3),
1352
+ "approvedBy" TEXT,
1353
+ "approvedAt" TIMESTAMP(3),
1354
+ "notes" TEXT,
1355
+ "deletedAt" TIMESTAMP(3),
1356
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1357
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1358
+
1359
+ CONSTRAINT "LabTestRequest_pkey" PRIMARY KEY ("id")
1360
+ );
1361
+
1362
+ -- CreateTable
1363
+ CREATE TABLE "TestResult" (
1364
+ "id" TEXT NOT NULL,
1365
+ "organizationId" INTEGER NOT NULL,
1366
+ "requestId" TEXT NOT NULL,
1367
+ "parameter" TEXT NOT NULL,
1368
+ "method" TEXT,
1369
+ "unit" TEXT,
1370
+ "specMin" DOUBLE PRECISION,
1371
+ "specMax" DOUBLE PRECISION,
1372
+ "targetValue" DOUBLE PRECISION,
1373
+ "measuredValue" DOUBLE PRECISION,
1374
+ "textResult" TEXT,
1375
+ "isPass" BOOLEAN NOT NULL,
1376
+ "deviationPct" DOUBLE PRECISION,
1377
+ "uncertainty" DOUBLE PRECISION,
1378
+ "confidenceLevel" DOUBLE PRECISION,
1379
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1380
+
1381
+ CONSTRAINT "TestResult_pkey" PRIMARY KEY ("id")
1382
+ );
1383
+
1384
+ -- CreateTable
1385
+ CREATE TABLE "CalibrationRecord" (
1386
+ "id" SERIAL NOT NULL,
1387
+ "organizationId" INTEGER NOT NULL,
1388
+ "equipmentType" TEXT NOT NULL,
1389
+ "equipmentId" TEXT NOT NULL,
1390
+ "deviceId" INTEGER,
1391
+ "calibrationDate" TIMESTAMP(3) NOT NULL,
1392
+ "nextDueDate" TIMESTAMP(3) NOT NULL,
1393
+ "frequency" INTEGER NOT NULL,
1394
+ "standardRef" TEXT NOT NULL,
1395
+ "traceability" TEXT,
1396
+ "asFound" TEXT,
1397
+ "asLeft" TEXT,
1398
+ "withinTolerance" BOOLEAN NOT NULL,
1399
+ "adjustmentMade" BOOLEAN NOT NULL DEFAULT false,
1400
+ "calibratedBy" TEXT NOT NULL,
1401
+ "certificateUrl" TEXT,
1402
+ "certificateNo" TEXT,
1403
+ "reviewedBy" TEXT,
1404
+ "reviewedAt" TIMESTAMP(3),
1405
+ "notes" TEXT,
1406
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1407
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1408
+
1409
+ CONSTRAINT "CalibrationRecord_pkey" PRIMARY KEY ("id")
1410
+ );
1411
+
1412
+ -- CreateTable
1413
+ CREATE TABLE "DigitalProductPassport" (
1414
+ "id" TEXT NOT NULL,
1415
+ "organizationId" INTEGER NOT NULL,
1416
+ "productionUnitId" TEXT,
1417
+ "productId" INTEGER,
1418
+ "styleNumber" TEXT NOT NULL,
1419
+ "productName" TEXT NOT NULL,
1420
+ "productCategory" TEXT NOT NULL,
1421
+ "publicUid" TEXT NOT NULL,
1422
+ "gtin" TEXT,
1423
+ "taricCode" TEXT,
1424
+ "hsnCode" TEXT,
1425
+ "qrCodeImageUrl" TEXT,
1426
+ "qrCodeFormat" TEXT,
1427
+ "qrCodeGeneratedAt" TIMESTAMP(3),
1428
+ "fiberComposition" JSONB NOT NULL,
1429
+ "primaryMaterial" TEXT NOT NULL,
1430
+ "recycledContent" DOUBLE PRECISION,
1431
+ "organicContent" DOUBLE PRECISION,
1432
+ "careInstructions" TEXT NOT NULL,
1433
+ "washingSymbols" TEXT[],
1434
+ "manufacturerName" TEXT NOT NULL,
1435
+ "manufacturerAddress" TEXT NOT NULL,
1436
+ "brandName" TEXT,
1437
+ "countryOfOrigin" TEXT NOT NULL,
1438
+ "carbonFootprint" DOUBLE PRECISION,
1439
+ "carbonCalculationMethod" TEXT,
1440
+ "waterUsage" DOUBLE PRECISION,
1441
+ "energyUsage" DOUBLE PRECISION,
1442
+ "chemicalsUsed" JSONB,
1443
+ "recyclability" INTEGER,
1444
+ "durabilityRating" TEXT,
1445
+ "repairability" TEXT,
1446
+ "repairInstructions" TEXT,
1447
+ "recyclingInstructions" TEXT,
1448
+ "endOfLifeOptions" TEXT[],
1449
+ "microplasticRelease" DOUBLE PRECISION,
1450
+ "laborCompliance" JSONB,
1451
+ "factoryCertifications" TEXT[],
1452
+ "scanCount" INTEGER NOT NULL DEFAULT 0,
1453
+ "status" "PassportStatus" NOT NULL DEFAULT 'DRAFT',
1454
+ "publishedAt" TIMESTAMP(3),
1455
+ "validUntil" TIMESTAMP(3),
1456
+ "version" TEXT NOT NULL DEFAULT 'v1.0',
1457
+ "supersededBy" TEXT,
1458
+ "invoiceNumber" TEXT,
1459
+ "shipmentDate" TIMESTAMP(3),
1460
+ "destinationCountry" TEXT,
1461
+ "customsDocUrl" TEXT,
1462
+ "keywords" TEXT[],
1463
+ "tags" TEXT[],
1464
+ "internalNotes" TEXT,
1465
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1466
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1467
+
1468
+ CONSTRAINT "DigitalProductPassport_pkey" PRIMARY KEY ("id")
1469
+ );
1470
+
1471
+ -- CreateTable
1472
+ CREATE TABLE "SupplyChainNode" (
1473
+ "id" SERIAL NOT NULL,
1474
+ "dppId" TEXT NOT NULL,
1475
+ "nodeId" TEXT NOT NULL,
1476
+ "nodeType" "SupplyChainNodeType" NOT NULL,
1477
+ "companyName" TEXT NOT NULL,
1478
+ "companyAddress" TEXT,
1479
+ "contactPerson" TEXT,
1480
+ "contactEmail" TEXT,
1481
+ "location" TEXT NOT NULL,
1482
+ "coordinates" TEXT,
1483
+ "processDate" TIMESTAMP(3) NOT NULL,
1484
+ "processDuration" INTEGER,
1485
+ "processDescription" TEXT,
1486
+ "outputMaterials" JSONB,
1487
+ "certificates" TEXT[],
1488
+ "certificateUrls" JSONB,
1489
+ "energyUsed" DOUBLE PRECISION,
1490
+ "waterUsed" DOUBLE PRECISION,
1491
+ "wasteGenerated" DOUBLE PRECISION,
1492
+ "emissionsGenerated" DOUBLE PRECISION,
1493
+ "qualityReports" TEXT,
1494
+ "isVerified" BOOLEAN NOT NULL DEFAULT false,
1495
+ "verifiedBy" TEXT,
1496
+ "verifiedAt" TIMESTAMP(3),
1497
+ "notes" TEXT,
1498
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1499
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1500
+
1501
+ CONSTRAINT "SupplyChainNode_pkey" PRIMARY KEY ("id")
1502
+ );
1503
+
1504
+ -- CreateTable
1505
+ CREATE TABLE "SupplyChainEdge" (
1506
+ "id" SERIAL NOT NULL,
1507
+ "dppId" TEXT NOT NULL,
1508
+ "fromNodeId" TEXT NOT NULL,
1509
+ "toNodeId" TEXT NOT NULL,
1510
+ "materialType" TEXT NOT NULL,
1511
+ "materialBatchId" TEXT,
1512
+ "quantity" DOUBLE PRECISION NOT NULL,
1513
+ "unit" TEXT NOT NULL,
1514
+ "transferDate" TIMESTAMP(3) NOT NULL,
1515
+ "transportMethod" TEXT,
1516
+ "invoiceNumber" TEXT,
1517
+ "documentUrl" TEXT,
1518
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1519
+
1520
+ CONSTRAINT "SupplyChainEdge_pkey" PRIMARY KEY ("id")
1521
+ );
1522
+
1523
+ -- CreateTable
1524
+ CREATE TABLE "ProductCertificate" (
1525
+ "id" SERIAL NOT NULL,
1526
+ "dppId" TEXT NOT NULL,
1527
+ "certificateType" "CertificationType" NOT NULL,
1528
+ "certificateNumber" TEXT NOT NULL,
1529
+ "certificateName" TEXT,
1530
+ "issuedBy" TEXT NOT NULL,
1531
+ "issuerLogo" TEXT,
1532
+ "issuedDate" TIMESTAMP(3) NOT NULL,
1533
+ "expiryDate" TIMESTAMP(3),
1534
+ "isValid" BOOLEAN NOT NULL DEFAULT true,
1535
+ "scope" TEXT,
1536
+ "certificateUrl" TEXT NOT NULL,
1537
+ "verificationUrl" TEXT,
1538
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1539
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1540
+
1541
+ CONSTRAINT "ProductCertificate_pkey" PRIMARY KEY ("id")
1542
+ );
1543
+
1544
+ -- CreateTable
1545
+ CREATE TABLE "TextileQRScan" (
1546
+ "id" TEXT NOT NULL,
1547
+ "dppId" TEXT NOT NULL,
1548
+ "scannedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1549
+ "ipAddress" TEXT,
1550
+ "country" TEXT,
1551
+ "city" TEXT,
1552
+ "userAgent" TEXT,
1553
+ "timeOnPage" INTEGER,
1554
+ "sectionsViewed" TEXT[],
1555
+ "referrer" TEXT,
1556
+ "utmSource" TEXT,
1557
+ "utmCampaign" TEXT,
1558
+
1559
+ CONSTRAINT "TextileQRScan_pkey" PRIMARY KEY ("id")
1560
+ );
1561
+
1562
+ -- CreateTable
1563
+ CREATE TABLE "Gateway" (
1564
+ "id" SERIAL NOT NULL,
1565
+ "gatewayUid" TEXT NOT NULL,
1566
+ "gatewayName" TEXT,
1567
+ "globalInventoryDeviceId" INTEGER,
1568
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
1569
+ "floorId" INTEGER NOT NULL,
1570
+ "secret" TEXT NOT NULL,
1571
+ "cpuModel" TEXT,
1572
+ "ramMB" INTEGER,
1573
+ "storageMB" INTEGER,
1574
+ "currentWifiSSID" TEXT,
1575
+ "currentWifiPassword" TEXT,
1576
+ "currentMQTTBrokerUrl" TEXT,
1577
+ "fallBackWifiSSID" TEXT,
1578
+ "fallBackWifiPassword" TEXT,
1579
+ "edgeAnalytics" BOOLEAN NOT NULL DEFAULT false,
1580
+ "bufferSizeMB" INTEGER DEFAULT 100,
1581
+ "offlineMode" BOOLEAN NOT NULL DEFAULT true,
1582
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1583
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1584
+
1585
+ CONSTRAINT "Gateway_pkey" PRIMARY KEY ("id")
1586
+ );
1587
+
1588
+ -- CreateTable
1589
+ CREATE TABLE "GatewayApiToken" (
1590
+ "id" SERIAL NOT NULL,
1591
+ "gatewayId" INTEGER NOT NULL,
1592
+ "apiToken" TEXT NOT NULL,
1593
+ "expiresAt" TIMESTAMP(3) NOT NULL,
1594
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1595
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1596
+
1597
+ CONSTRAINT "GatewayApiToken_pkey" PRIMARY KEY ("id")
1598
+ );
1599
+
1600
+ -- CreateTable
1601
+ CREATE TABLE "Device" (
1602
+ "id" SERIAL NOT NULL,
1603
+ "globalDeviceUid" TEXT NOT NULL,
1604
+ "deviceUid" TEXT NOT NULL,
1605
+ "globalInventoryDeviceId" INTEGER,
1606
+ "deviceName" TEXT,
1607
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
1608
+ "organizationId" INTEGER NOT NULL,
1609
+ "gatewayId" INTEGER,
1610
+ "deviceType" "DeviceType" NOT NULL DEFAULT 'SENSOR_MODULE',
1611
+ "deviceModel" TEXT,
1612
+ "firmwareVersion" TEXT,
1613
+ "ipAddress" TEXT,
1614
+ "macAddress" TEXT,
1615
+ "subnet" TEXT,
1616
+ "port" INTEGER,
1617
+ "serialConfig" JSONB,
1618
+ "machineId" INTEGER,
1619
+ "assemblyLineId" INTEGER,
1620
+ "floorId" INTEGER,
1621
+ "factoryId" INTEGER,
1622
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1623
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1624
+
1625
+ CONSTRAINT "Device_pkey" PRIMARY KEY ("id")
1626
+ );
1627
+
1628
+ -- CreateTable
1629
+ CREATE TABLE "Sensor" (
1630
+ "id" SERIAL NOT NULL,
1631
+ "sensorUid" TEXT NOT NULL,
1632
+ "sensorName" TEXT,
1633
+ "sensorType" "SensorType" NOT NULL DEFAULT 'PROXIMITY',
1634
+ "deviceId" INTEGER NOT NULL,
1635
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
1636
+ "isVirtual" BOOLEAN NOT NULL DEFAULT false,
1637
+ "machineId" INTEGER,
1638
+ "assemblyLineId" INTEGER,
1639
+ "floorId" INTEGER,
1640
+ "factoryId" INTEGER,
1641
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1642
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1643
+
1644
+ CONSTRAINT "Sensor_pkey" PRIMARY KEY ("id")
1645
+ );
1646
+
1647
+ -- CreateTable
1648
+ CREATE TABLE "ProximitySensorConfig" (
1649
+ "id" SERIAL NOT NULL,
1650
+ "sensorId" INTEGER NOT NULL,
1651
+ "range" DOUBLE PRECISION,
1652
+ "sensitivity" DOUBLE PRECISION,
1653
+ "aggregationFactor" INTEGER DEFAULT 1,
1654
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1655
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1656
+
1657
+ CONSTRAINT "ProximitySensorConfig_pkey" PRIMARY KEY ("id")
1658
+ );
1659
+
1660
+ -- CreateTable
1661
+ CREATE TABLE "CurrentSensorConfig" (
1662
+ "id" SERIAL NOT NULL,
1663
+ "sensorId" INTEGER NOT NULL,
1664
+ "currentThreshold" DOUBLE PRECISION,
1665
+ "ctRatio" TEXT DEFAULT '100:5',
1666
+ "burdenResistor" DOUBLE PRECISION,
1667
+ "calibrationGain" DOUBLE PRECISION DEFAULT 1.0,
1668
+ "idleThreshold" DOUBLE PRECISION,
1669
+ "runThreshold" DOUBLE PRECISION,
1670
+ "samplingRateHz" INTEGER DEFAULT 10,
1671
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1672
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1673
+
1674
+ CONSTRAINT "CurrentSensorConfig_pkey" PRIMARY KEY ("id")
1675
+ );
1676
+
1677
+ -- CreateTable
1678
+ CREATE TABLE "InfraredSensorConfig" (
1679
+ "id" SERIAL NOT NULL,
1680
+ "sensorId" INTEGER NOT NULL,
1681
+ "wavelength" DOUBLE PRECISION,
1682
+ "resolution" INTEGER,
1683
+ "aggregationFactor" INTEGER DEFAULT 1,
1684
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1685
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1686
+
1687
+ CONSTRAINT "InfraredSensorConfig_pkey" PRIMARY KEY ("id")
1688
+ );
1689
+
1690
+ -- CreateTable
1691
+ CREATE TABLE "MachineDeviceAssignment" (
1692
+ "id" SERIAL NOT NULL,
1693
+ "deviceId" INTEGER NOT NULL,
1694
+ "machineId" INTEGER NOT NULL,
1695
+ "assignedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1696
+ "unassignedAt" TIMESTAMP(3),
1697
+
1698
+ CONSTRAINT "MachineDeviceAssignment_pkey" PRIMARY KEY ("id")
1699
+ );
1700
+
1701
+ -- CreateTable
1702
+ CREATE TABLE "VibrationSensorConfig" (
1703
+ "id" SERIAL NOT NULL,
1704
+ "sensorId" INTEGER NOT NULL,
1705
+ "samplingRateHz" INTEGER DEFAULT 1000,
1706
+ "rangeG" DOUBLE PRECISION DEFAULT 16.0,
1707
+ "fftEnabled" BOOLEAN NOT NULL DEFAULT false,
1708
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1709
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1710
+
1711
+ CONSTRAINT "VibrationSensorConfig_pkey" PRIMARY KEY ("id")
1712
+ );
1713
+
1714
+ -- CreateTable
1715
+ CREATE TABLE "TemperatureSensorConfig" (
1716
+ "id" SERIAL NOT NULL,
1717
+ "sensorId" INTEGER NOT NULL,
1718
+ "sensorModel" TEXT,
1719
+ "minTemp" DOUBLE PRECISION,
1720
+ "maxTemp" DOUBLE PRECISION,
1721
+ "alertThreshold" DOUBLE PRECISION,
1722
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1723
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1724
+
1725
+ CONSTRAINT "TemperatureSensorConfig_pkey" PRIMARY KEY ("id")
1726
+ );
1727
+
1728
+ -- CreateTable
1729
+ CREATE TABLE "FlowSensorConfig" (
1730
+ "id" SERIAL NOT NULL,
1731
+ "sensorId" INTEGER NOT NULL,
1732
+ "unit" TEXT NOT NULL DEFAULT 'LITERS_PER_MINUTE',
1733
+ "calibrationFactor" DOUBLE PRECISION DEFAULT 1.0,
1734
+ "minFlow" DOUBLE PRECISION,
1735
+ "maxFlow" DOUBLE PRECISION,
1736
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1737
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1738
+
1739
+ CONSTRAINT "FlowSensorConfig_pkey" PRIMARY KEY ("id")
1740
+ );
1741
+
1742
+ -- CreateTable
1743
+ CREATE TABLE "WeightSensorConfig" (
1744
+ "id" SERIAL NOT NULL,
1745
+ "sensorId" INTEGER NOT NULL,
1746
+ "unit" TEXT NOT NULL DEFAULT 'KG',
1747
+ "maxCapacity" DOUBLE PRECISION,
1748
+ "resolution" DOUBLE PRECISION,
1749
+ "tareWeight" DOUBLE PRECISION,
1750
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1751
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1752
+
1753
+ CONSTRAINT "WeightSensorConfig_pkey" PRIMARY KEY ("id")
1754
+ );
1755
+
1756
+ -- CreateTable
1757
+ CREATE TABLE "PressureSensorConfig" (
1758
+ "id" SERIAL NOT NULL,
1759
+ "sensorId" INTEGER NOT NULL,
1760
+ "unit" TEXT NOT NULL DEFAULT 'BAR',
1761
+ "minPressure" DOUBLE PRECISION,
1762
+ "maxPressure" DOUBLE PRECISION,
1763
+ "alertThreshold" DOUBLE PRECISION,
1764
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1765
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1766
+
1767
+ CONSTRAINT "PressureSensorConfig_pkey" PRIMARY KEY ("id")
1768
+ );
1769
+
1770
+ -- CreateTable
1771
+ CREATE TABLE "SensorLog" (
1772
+ "id" BIGSERIAL NOT NULL,
1773
+ "sensorId" INTEGER NOT NULL,
1774
+ "senseTime" TIMESTAMP(3) NOT NULL,
1775
+ "isProcessed" BOOLEAN NOT NULL DEFAULT false,
1776
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1777
+ "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1778
+
1779
+ CONSTRAINT "SensorLog_pkey" PRIMARY KEY ("id")
1780
+ );
1781
+
1782
+ -- CreateTable
1783
+ CREATE TABLE "RFIDSensorLog" (
1784
+ "id" BIGSERIAL NOT NULL,
1785
+ "sensorLogId" BIGINT NOT NULL,
1786
+ "rfid" TEXT,
1787
+ "tapType" "RFIDTapType" NOT NULL,
1788
+ "operatorId" TEXT,
1789
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1790
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1791
+
1792
+ CONSTRAINT "RFIDSensorLog_pkey" PRIMARY KEY ("id")
1793
+ );
1794
+
1795
+ -- CreateTable
1796
+ CREATE TABLE "ProximitySensorLog" (
1797
+ "id" BIGSERIAL NOT NULL,
1798
+ "sensorLogId" BIGINT NOT NULL,
1799
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1800
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1801
+
1802
+ CONSTRAINT "ProximitySensorLog_pkey" PRIMARY KEY ("id")
1803
+ );
1804
+
1805
+ -- CreateTable
1806
+ CREATE TABLE "InfraredSensorLog" (
1807
+ "id" BIGSERIAL NOT NULL,
1808
+ "sensorLogId" BIGINT NOT NULL,
1809
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1810
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1811
+
1812
+ CONSTRAINT "InfraredSensorLog_pkey" PRIMARY KEY ("id")
1813
+ );
1814
+
1815
+ -- CreateTable
1816
+ CREATE TABLE "CurrentSensorLog" (
1817
+ "id" BIGSERIAL NOT NULL,
1818
+ "sensorLogId" BIGINT NOT NULL,
1819
+ "currentValue" DOUBLE PRECISION,
1820
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1821
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1822
+
1823
+ CONSTRAINT "CurrentSensorLog_pkey" PRIMARY KEY ("id")
1824
+ );
1825
+
1826
+ -- CreateTable
1827
+ CREATE TABLE "DevicePowerSensorLog" (
1828
+ "id" BIGSERIAL NOT NULL,
1829
+ "sensorLogId" BIGINT NOT NULL,
1830
+ "powerState" "DevicePowerState" NOT NULL,
1831
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1832
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1833
+
1834
+ CONSTRAINT "DevicePowerSensorLog_pkey" PRIMARY KEY ("id")
1835
+ );
1836
+
1837
+ -- CreateTable
1838
+ CREATE TABLE "VibrationSensorLog" (
1839
+ "id" BIGSERIAL NOT NULL,
1840
+ "sensorLogId" BIGINT NOT NULL,
1841
+ "rmsValue" DOUBLE PRECISION,
1842
+ "peakValue" DOUBLE PRECISION,
1843
+ "frequency" DOUBLE PRECISION,
1844
+ "fftData" JSONB,
1845
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1846
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1847
+
1848
+ CONSTRAINT "VibrationSensorLog_pkey" PRIMARY KEY ("id")
1849
+ );
1850
+
1851
+ -- CreateTable
1852
+ CREATE TABLE "TemperatureSensorLog" (
1853
+ "id" BIGSERIAL NOT NULL,
1854
+ "sensorLogId" BIGINT NOT NULL,
1855
+ "temperature" DOUBLE PRECISION NOT NULL,
1856
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1857
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1858
+
1859
+ CONSTRAINT "TemperatureSensorLog_pkey" PRIMARY KEY ("id")
1860
+ );
1861
+
1862
+ -- CreateTable
1863
+ CREATE TABLE "FlowSensorLog" (
1864
+ "id" BIGSERIAL NOT NULL,
1865
+ "sensorLogId" BIGINT NOT NULL,
1866
+ "flowRate" DOUBLE PRECISION NOT NULL,
1867
+ "totalVolume" DOUBLE PRECISION,
1868
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1869
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1870
+
1871
+ CONSTRAINT "FlowSensorLog_pkey" PRIMARY KEY ("id")
1872
+ );
1873
+
1874
+ -- CreateTable
1875
+ CREATE TABLE "WeightSensorLog" (
1876
+ "id" BIGSERIAL NOT NULL,
1877
+ "sensorLogId" BIGINT NOT NULL,
1878
+ "weight" DOUBLE PRECISION NOT NULL,
1879
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1880
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1881
+
1882
+ CONSTRAINT "WeightSensorLog_pkey" PRIMARY KEY ("id")
1883
+ );
1884
+
1885
+ -- CreateTable
1886
+ CREATE TABLE "PressureSensorLog" (
1887
+ "id" BIGSERIAL NOT NULL,
1888
+ "sensorLogId" BIGINT NOT NULL,
1889
+ "pressure" DOUBLE PRECISION NOT NULL,
1890
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1891
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1892
+
1893
+ CONSTRAINT "PressureSensorLog_pkey" PRIMARY KEY ("id")
1894
+ );
1895
+
1896
+ -- CreateTable
1897
+ CREATE TABLE "ProtocolDataSource" (
1898
+ "id" SERIAL NOT NULL,
1899
+ "deviceId" INTEGER NOT NULL,
1900
+ "sourceType" "DataSourceType" NOT NULL,
1901
+ "sourceName" TEXT NOT NULL,
1902
+ "description" TEXT,
1903
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
1904
+ "address" TEXT,
1905
+ "protocolConfig" JSONB,
1906
+ "dataType" TEXT,
1907
+ "unit" TEXT,
1908
+ "scaleFactor" DOUBLE PRECISION DEFAULT 1.0,
1909
+ "offset" DOUBLE PRECISION DEFAULT 0.0,
1910
+ "pollingInterval" INTEGER,
1911
+ "onChangeOnly" BOOLEAN NOT NULL DEFAULT false,
1912
+ "sensorId" INTEGER,
1913
+ "machineId" INTEGER,
1914
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1915
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1916
+
1917
+ CONSTRAINT "ProtocolDataSource_pkey" PRIMARY KEY ("id")
1918
+ );
1919
+
1920
+ -- CreateTable
1921
+ CREATE TABLE "ProtocolDataLog" (
1922
+ "id" BIGSERIAL NOT NULL,
1923
+ "dataSourceId" INTEGER NOT NULL,
1924
+ "timestamp" TIMESTAMP(3) NOT NULL,
1925
+ "rawValue" TEXT,
1926
+ "parsedValue" DOUBLE PRECISION,
1927
+ "stringValue" TEXT,
1928
+ "boolValue" BOOLEAN,
1929
+ "isProcessed" BOOLEAN NOT NULL DEFAULT false,
1930
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1931
+
1932
+ CONSTRAINT "ProtocolDataLog_pkey" PRIMARY KEY ("id")
1933
+ );
1934
+
1935
+ -- CreateTable
1936
+ CREATE TABLE "DeviceConnection" (
1937
+ "id" SERIAL NOT NULL,
1938
+ "parentDeviceId" INTEGER NOT NULL,
1939
+ "childDeviceId" INTEGER NOT NULL,
1940
+ "protocol" "CommunicationProtocol" NOT NULL,
1941
+ "connectionConfig" JSONB,
1942
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
1943
+ "lastSeen" TIMESTAMP(3),
1944
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1945
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1946
+
1947
+ CONSTRAINT "DeviceConnection_pkey" PRIMARY KEY ("id")
1948
+ );
1949
+
1950
+ -- CreateTable
1951
+ CREATE TABLE "Factory" (
1952
+ "id" SERIAL NOT NULL,
1953
+ "name" TEXT NOT NULL,
1954
+ "description" TEXT,
1955
+ "organizationId" INTEGER NOT NULL,
1956
+ "timeZone" TEXT NOT NULL DEFAULT 'UTC+5:30',
1957
+ "timeZoneString" TEXT NOT NULL DEFAULT 'Asia/Kolkata',
1958
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1959
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1960
+
1961
+ CONSTRAINT "Factory_pkey" PRIMARY KEY ("id")
1962
+ );
1963
+
1964
+ -- CreateTable
1965
+ CREATE TABLE "Floor" (
1966
+ "id" SERIAL NOT NULL,
1967
+ "code" TEXT,
1968
+ "name" TEXT NOT NULL,
1969
+ "description" TEXT,
1970
+ "factoryId" INTEGER NOT NULL,
1971
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
1972
+ "searchTags" TEXT[] DEFAULT ARRAY[]::TEXT[],
1973
+ "accessLevel" "AccessLevel" NOT NULL DEFAULT 'PUBLIC',
1974
+ "floorTypeId" INTEGER,
1975
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1976
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1977
+
1978
+ CONSTRAINT "Floor_pkey" PRIMARY KEY ("id")
1979
+ );
1980
+
1981
+ -- CreateTable
1982
+ CREATE TABLE "FloorType" (
1983
+ "id" SERIAL NOT NULL,
1984
+ "name" TEXT NOT NULL,
1985
+ "organizationId" INTEGER NOT NULL,
1986
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1987
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1988
+
1989
+ CONSTRAINT "FloorType_pkey" PRIMARY KEY ("id")
1990
+ );
1991
+
1992
+ -- CreateTable
1993
+ CREATE TABLE "FloorSetting" (
1994
+ "id" SERIAL NOT NULL,
1995
+ "floorId" INTEGER NOT NULL,
1996
+ "idleThresholdMinutes" INTEGER NOT NULL,
1997
+ "oeeExcellentPct" INTEGER NOT NULL,
1998
+ "oeeAveragePct" INTEGER NOT NULL,
1999
+ "oeePoorPct" INTEGER NOT NULL,
2000
+ "downtimeWarnMinutes" INTEGER NOT NULL,
2001
+ "downtimeAlertMinutes" INTEGER NOT NULL,
2002
+ "peakEnergykWh" INTEGER NOT NULL,
2003
+ "offPeakEnergykWh" INTEGER NOT NULL,
2004
+ "energyAlertPct" INTEGER NOT NULL,
2005
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2006
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2007
+
2008
+ CONSTRAINT "FloorSetting_pkey" PRIMARY KEY ("id")
2009
+ );
2010
+
2011
+ -- CreateTable
2012
+ CREATE TABLE "AssemblyLine" (
2013
+ "id" SERIAL NOT NULL,
2014
+ "organizationId" INTEGER NOT NULL,
2015
+ "code" TEXT,
2016
+ "name" TEXT NOT NULL,
2017
+ "description" TEXT,
2018
+ "floorId" INTEGER NOT NULL,
2019
+ "machineOrder" INTEGER[] DEFAULT ARRAY[]::INTEGER[],
2020
+ "assemblyLineTypeId" INTEGER,
2021
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2022
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2023
+
2024
+ CONSTRAINT "AssemblyLine_pkey" PRIMARY KEY ("id")
2025
+ );
2026
+
2027
+ -- CreateTable
2028
+ CREATE TABLE "FactoryShift" (
2029
+ "id" SERIAL NOT NULL,
2030
+ "factoryId" INTEGER NOT NULL,
2031
+ "name" TEXT NOT NULL,
2032
+ "startTime" TIME(0) NOT NULL,
2033
+ "endTime" TIME(0) NOT NULL,
2034
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2035
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2036
+
2037
+ CONSTRAINT "FactoryShift_pkey" PRIMARY KEY ("id")
2038
+ );
2039
+
2040
+ -- CreateTable
2041
+ CREATE TABLE "FactoryShiftMachine" (
2042
+ "id" SERIAL NOT NULL,
2043
+ "shiftId" INTEGER NOT NULL,
2044
+ "machineId" INTEGER,
2045
+
2046
+ CONSTRAINT "FactoryShiftMachine_pkey" PRIMARY KEY ("id")
2047
+ );
2048
+
2049
+ -- CreateTable
2050
+ CREATE TABLE "FactoryLot" (
2051
+ "id" SERIAL NOT NULL,
2052
+ "lotNumber" TEXT NOT NULL,
2053
+ "factoryId" INTEGER NOT NULL,
2054
+ "manufacturingDate" TIMESTAMP(3),
2055
+ "expiryDate" TIMESTAMP(3),
2056
+ "quantity" DOUBLE PRECISION,
2057
+ "measurementUnit" "ProductionMeasurementUnit",
2058
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2059
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2060
+
2061
+ CONSTRAINT "FactoryLot_pkey" PRIMARY KEY ("id")
2062
+ );
2063
+
2064
+ -- CreateTable
2065
+ CREATE TABLE "FinalProduct" (
2066
+ "id" SERIAL NOT NULL,
2067
+ "externalId" TEXT,
2068
+ "name" TEXT NOT NULL,
2069
+ "code" TEXT,
2070
+ "factoryId" INTEGER NOT NULL,
2071
+ "description" TEXT,
2072
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2073
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2074
+
2075
+ CONSTRAINT "FinalProduct_pkey" PRIMARY KEY ("id")
2076
+ );
2077
+
2078
+ -- CreateTable
2079
+ CREATE TABLE "FinalProductRoute" (
2080
+ "id" SERIAL NOT NULL,
2081
+ "finalProductId" INTEGER NOT NULL,
2082
+ "name" TEXT,
2083
+ "sequence" INTEGER NOT NULL,
2084
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2085
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2086
+
2087
+ CONSTRAINT "FinalProductRoute_pkey" PRIMARY KEY ("id")
2088
+ );
2089
+
2090
+ -- CreateTable
2091
+ CREATE TABLE "FinalProductMachineOperationRoute" (
2092
+ "id" SERIAL NOT NULL,
2093
+ "routeId" INTEGER NOT NULL,
2094
+ "operationId" INTEGER NOT NULL,
2095
+ "productAggregationFactor" INTEGER DEFAULT 1,
2096
+ "sequence" INTEGER NOT NULL,
2097
+ "expectedDuration" INTEGER,
2098
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2099
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2100
+
2101
+ CONSTRAINT "FinalProductMachineOperationRoute_pkey" PRIMARY KEY ("id")
2102
+ );
2103
+
2104
+ -- CreateTable
2105
+ CREATE TABLE "FinalProductRouteDependency" (
2106
+ "routeId" INTEGER NOT NULL,
2107
+ "dependsOnRouteId" INTEGER NOT NULL,
2108
+
2109
+ CONSTRAINT "FinalProductRouteDependency_pkey" PRIMARY KEY ("routeId","dependsOnRouteId")
2110
+ );
2111
+
2112
+ -- CreateTable
2113
+ CREATE TABLE "MachineStateLog" (
2114
+ "id" BIGSERIAL NOT NULL,
2115
+ "machineId" INTEGER NOT NULL,
2116
+ "state" "MachineState" NOT NULL,
2117
+ "startTime" TIMESTAMP(3) NOT NULL,
2118
+ "endTime" TIMESTAMP(3),
2119
+ "durationSec" INTEGER,
2120
+ "metadata" JSONB,
2121
+ "programId" INTEGER,
2122
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2123
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2124
+
2125
+ CONSTRAINT "MachineStateLog_pkey" PRIMARY KEY ("id")
2126
+ );
2127
+
2128
+ -- CreateTable
2129
+ CREATE TABLE "MachineProgram" (
2130
+ "id" SERIAL NOT NULL,
2131
+ "machineId" INTEGER NOT NULL,
2132
+ "programNumber" TEXT NOT NULL,
2133
+ "programName" TEXT,
2134
+ "description" TEXT,
2135
+ "expectedCycleTime" INTEGER,
2136
+ "expectedPowerProfile" JSONB,
2137
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
2138
+ "lastRunAt" TIMESTAMP(3),
2139
+ "totalRuns" INTEGER NOT NULL DEFAULT 0,
2140
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2141
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2142
+
2143
+ CONSTRAINT "MachineProgram_pkey" PRIMARY KEY ("id")
2144
+ );
2145
+
2146
+ -- CreateTable
2147
+ CREATE TABLE "Machine" (
2148
+ "id" SERIAL NOT NULL,
2149
+ "name" TEXT NOT NULL,
2150
+ "details" TEXT,
2151
+ "idealCycleTimeInSeconds" INTEGER,
2152
+ "assemblyLineId" INTEGER,
2153
+ "machineOperationId" INTEGER,
2154
+ "trackingType" "MachineTrackingType" NOT NULL DEFAULT 'MANUAL',
2155
+ "currentProgramId" INTEGER,
2156
+ "industryType" "MachineIndustryType" DEFAULT 'GENERAL',
2157
+ "machineModel" TEXT,
2158
+ "capabilities" JSONB,
2159
+ "primaryProtocol" "CommunicationProtocol",
2160
+ "isConnected" BOOLEAN NOT NULL DEFAULT false,
2161
+ "lastDataReceived" TIMESTAMP(3),
2162
+ "activeFMEAIds" TEXT[],
2163
+ "qualificationStatus" TEXT,
2164
+ "lastQualificationDate" TIMESTAMP(3),
2165
+ "nextQualificationDate" TIMESTAMP(3),
2166
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2167
+ "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2168
+
2169
+ CONSTRAINT "Machine_pkey" PRIMARY KEY ("id")
2170
+ );
2171
+
2172
+ -- CreateTable
2173
+ CREATE TABLE "MachineOperation" (
2174
+ "id" SERIAL NOT NULL,
2175
+ "operationName" TEXT NOT NULL,
2176
+ "description" TEXT,
2177
+ "organizationId" INTEGER NOT NULL,
2178
+ "productionSIUnit" "ProductionSIUnit" NOT NULL DEFAULT 'COUNT',
2179
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2180
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2181
+
2182
+ CONSTRAINT "MachineOperation_pkey" PRIMARY KEY ("id")
2183
+ );
2184
+
2185
+ -- CreateTable
2186
+ CREATE TABLE "MachineEvent" (
2187
+ "id" SERIAL NOT NULL,
2188
+ "machineId" INTEGER NOT NULL,
2189
+ "eventTime" TIMESTAMP(3) NOT NULL,
2190
+ "category" "EventCategory" NOT NULL,
2191
+ "title" TEXT NOT NULL,
2192
+ "subtitle" TEXT,
2193
+ "description" TEXT,
2194
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2195
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2196
+
2197
+ CONSTRAINT "MachineEvent_pkey" PRIMARY KEY ("id")
2198
+ );
2199
+
2200
+ -- CreateTable
2201
+ CREATE TABLE "MachineAlert" (
2202
+ "id" SERIAL NOT NULL,
2203
+ "machineId" INTEGER NOT NULL,
2204
+ "title" TEXT NOT NULL,
2205
+ "message" TEXT NOT NULL,
2206
+ "severity" "MachineAlertSeverity" NOT NULL DEFAULT 'LOW',
2207
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2208
+ "resolvedAt" TIMESTAMP(3),
2209
+
2210
+ CONSTRAINT "MachineAlert_pkey" PRIMARY KEY ("id")
2211
+ );
2212
+
2213
+ -- CreateTable
2214
+ CREATE TABLE "MachineAlertSubscription" (
2215
+ "id" SERIAL NOT NULL,
2216
+ "userId" INTEGER NOT NULL,
2217
+ "machineId" INTEGER NOT NULL,
2218
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2219
+
2220
+ CONSTRAINT "MachineAlertSubscription_pkey" PRIMARY KEY ("id")
2221
+ );
2222
+
2223
+ -- CreateTable
2224
+ CREATE TABLE "MaintenanceLog" (
2225
+ "id" SERIAL NOT NULL,
2226
+ "machineId" INTEGER NOT NULL,
2227
+ "organizationId" INTEGER NOT NULL,
2228
+ "reportedById" INTEGER,
2229
+ "description" TEXT,
2230
+ "status" "MaintenanceLogStatus" NOT NULL DEFAULT 'OPEN',
2231
+ "startTime" TIMESTAMP(3),
2232
+ "endTime" TIMESTAMP(3),
2233
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2234
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2235
+
2236
+ CONSTRAINT "MaintenanceLog_pkey" PRIMARY KEY ("id")
2237
+ );
2238
+
2239
+ -- CreateTable
2240
+ CREATE TABLE "MaintenanceManagerConfig" (
2241
+ "id" SERIAL NOT NULL,
2242
+ "managerId" INTEGER NOT NULL,
2243
+ "key" TEXT NOT NULL,
2244
+ "value" JSONB NOT NULL,
2245
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2246
+
2247
+ CONSTRAINT "MaintenanceManagerConfig_pkey" PRIMARY KEY ("id")
2248
+ );
2249
+
2250
+ -- CreateTable
2251
+ CREATE TABLE "MaintenanceRequest" (
2252
+ "id" SERIAL NOT NULL,
2253
+ "machineId" INTEGER NOT NULL,
2254
+ "requestedById" INTEGER NOT NULL,
2255
+ "title" TEXT NOT NULL,
2256
+ "description" TEXT NOT NULL,
2257
+ "status" "MaintenanceRequestStatus" NOT NULL DEFAULT 'NEW',
2258
+ "priority" "MaintenanceRequestPriority" NOT NULL DEFAULT 'MEDIUM',
2259
+ "categoryId" INTEGER NOT NULL,
2260
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2261
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2262
+
2263
+ CONSTRAINT "MaintenanceRequest_pkey" PRIMARY KEY ("id")
2264
+ );
2265
+
2266
+ -- CreateTable
2267
+ CREATE TABLE "MaintenanceRequestCategory" (
2268
+ "id" SERIAL NOT NULL,
2269
+ "factoryId" INTEGER NOT NULL,
2270
+ "name" TEXT NOT NULL,
2271
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2272
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2273
+
2274
+ CONSTRAINT "MaintenanceRequestCategory_pkey" PRIMARY KEY ("id")
2275
+ );
2276
+
2277
+ -- CreateTable
2278
+ CREATE TABLE "MaintenanceRequestAssignment" (
2279
+ "id" SERIAL NOT NULL,
2280
+ "requestId" INTEGER NOT NULL,
2281
+ "technicianId" INTEGER NOT NULL,
2282
+ "assignedById" INTEGER NOT NULL,
2283
+ "assignedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2284
+
2285
+ CONSTRAINT "MaintenanceRequestAssignment_pkey" PRIMARY KEY ("id")
2286
+ );
2287
+
2288
+ -- CreateTable
2289
+ CREATE TABLE "MaintenanceRequestUpdate" (
2290
+ "id" SERIAL NOT NULL,
2291
+ "requestId" INTEGER NOT NULL,
2292
+ "authorId" INTEGER NOT NULL,
2293
+ "message" TEXT NOT NULL,
2294
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2295
+
2296
+ CONSTRAINT "MaintenanceRequestUpdate_pkey" PRIMARY KEY ("id")
2297
+ );
2298
+
2299
+ -- CreateTable
2300
+ CREATE TABLE "MaintenanceRequestAttachment" (
2301
+ "id" SERIAL NOT NULL,
2302
+ "updateId" INTEGER NOT NULL,
2303
+ "fileUrl" TEXT NOT NULL,
2304
+ "fileName" TEXT NOT NULL,
2305
+ "uploadedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2306
+
2307
+ CONSTRAINT "MaintenanceRequestAttachment_pkey" PRIMARY KEY ("id")
2308
+ );
2309
+
2310
+ -- CreateTable
2311
+ CREATE TABLE "MaintenanceTechnician" (
2312
+ "id" SERIAL NOT NULL,
2313
+ "factoryId" INTEGER NOT NULL,
2314
+ "name" TEXT NOT NULL,
2315
+ "email" TEXT NOT NULL,
2316
+ "phone" TEXT,
2317
+ "hiredAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2318
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2319
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2320
+
2321
+ CONSTRAINT "MaintenanceTechnician_pkey" PRIMARY KEY ("id")
2322
+ );
2323
+
2324
+ -- CreateTable
2325
+ CREATE TABLE "TechnicianSpecialization" (
2326
+ "id" SERIAL NOT NULL,
2327
+ "technicianId" INTEGER NOT NULL,
2328
+ "specializationId" INTEGER NOT NULL,
2329
+
2330
+ CONSTRAINT "TechnicianSpecialization_pkey" PRIMARY KEY ("id")
2331
+ );
2332
+
2333
+ -- CreateTable
2334
+ CREATE TABLE "Operator" (
2335
+ "id" TEXT NOT NULL,
2336
+ "rfid" TEXT,
2337
+ "coreUserId" INTEGER,
2338
+ "externalId" TEXT,
2339
+ "firstName" TEXT,
2340
+ "lastName" TEXT,
2341
+ "description" TEXT,
2342
+ "organizationId" INTEGER,
2343
+ "factoryId" INTEGER,
2344
+ "operatorLevel" "OperatorLevel" DEFAULT 'FLOOR_WORKER',
2345
+ "teamId" INTEGER,
2346
+ "teamName" TEXT,
2347
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2348
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2349
+
2350
+ CONSTRAINT "Operator_pkey" PRIMARY KEY ("id")
2351
+ );
2352
+
2353
+ -- CreateTable
2354
+ CREATE TABLE "OperatorTimeLog" (
2355
+ "id" BIGSERIAL NOT NULL,
2356
+ "operatorId" TEXT NOT NULL,
2357
+ "checkInAt" TIMESTAMP(3) NOT NULL,
2358
+ "checkOutAt" TIMESTAMP(3),
2359
+ "deviceId" INTEGER,
2360
+ "machineId" INTEGER,
2361
+ "totalWorkingTime" INTEGER,
2362
+ "totalIdleTime" INTEGER,
2363
+ "totalNonWorkingTime" INTEGER,
2364
+ "efficiency" DOUBLE PRECISION,
2365
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2366
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2367
+
2368
+ CONSTRAINT "OperatorTimeLog_pkey" PRIMARY KEY ("id")
2369
+ );
2370
+
2371
+ -- CreateTable
2372
+ CREATE TABLE "Order" (
2373
+ "id" SERIAL NOT NULL,
2374
+ "organizationId" INTEGER NOT NULL,
2375
+ "externalId" TEXT,
2376
+ "erpSource" TEXT,
2377
+ "customerId" INTEGER,
2378
+ "orderNumber" TEXT,
2379
+ "title" TEXT,
2380
+ "description" TEXT,
2381
+ "factoryId" INTEGER NOT NULL,
2382
+ "status" "OrderStatus" NOT NULL DEFAULT 'NEW',
2383
+ "progress" DOUBLE PRECISION NOT NULL DEFAULT 0,
2384
+ "priority" "OrderPriority" DEFAULT 'LOW',
2385
+ "deadline" TIMESTAMP(3),
2386
+ "startDate" TIMESTAMP(3),
2387
+ "createdById" INTEGER,
2388
+ "assignedToId" INTEGER,
2389
+ "assignedById" INTEGER,
2390
+ "approvalAssignedToId" INTEGER,
2391
+ "approvedById" INTEGER,
2392
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2393
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2394
+
2395
+ CONSTRAINT "Order_pkey" PRIMARY KEY ("id")
2396
+ );
2397
+
2398
+ -- CreateTable
2399
+ CREATE TABLE "OrderProduct" (
2400
+ "id" SERIAL NOT NULL,
2401
+ "orderId" INTEGER NOT NULL,
2402
+ "productId" INTEGER NOT NULL,
2403
+ "quantity" INTEGER NOT NULL DEFAULT 0,
2404
+ "title" TEXT,
2405
+ "description" TEXT,
2406
+ "status" "OrderProductStatus" NOT NULL DEFAULT 'NEW',
2407
+ "progress" DOUBLE PRECISION NOT NULL DEFAULT 0,
2408
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2409
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2410
+
2411
+ CONSTRAINT "OrderProduct_pkey" PRIMARY KEY ("id")
2412
+ );
2413
+
2414
+ -- CreateTable
2415
+ CREATE TABLE "OrderComment" (
2416
+ "id" SERIAL NOT NULL,
2417
+ "orderId" INTEGER NOT NULL,
2418
+ "organizationId" INTEGER NOT NULL,
2419
+ "authorId" INTEGER,
2420
+ "text" TEXT NOT NULL,
2421
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2422
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2423
+
2424
+ CONSTRAINT "OrderComment_pkey" PRIMARY KEY ("id")
2425
+ );
2426
+
2427
+ -- CreateTable
2428
+ CREATE TABLE "ProductionUnit" (
2429
+ "id" TEXT NOT NULL,
2430
+ "serialNumber" TEXT NOT NULL,
2431
+ "organizationId" INTEGER NOT NULL,
2432
+ "orderProductId" INTEGER NOT NULL,
2433
+ "currentStepId" INTEGER,
2434
+ "status" "ProductionUnitStatus" NOT NULL DEFAULT 'IN_PRODUCTION',
2435
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2436
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2437
+
2438
+ CONSTRAINT "ProductionUnit_pkey" PRIMARY KEY ("id")
2439
+ );
2440
+
2441
+ -- CreateTable
2442
+ CREATE TABLE "ProductionUnitIdentifier" (
2443
+ "id" SERIAL NOT NULL,
2444
+ "productionUnitId" TEXT NOT NULL,
2445
+ "identifierType" "IdentifierType" NOT NULL,
2446
+ "identifierValue" TEXT NOT NULL,
2447
+ "isPrimary" BOOLEAN NOT NULL DEFAULT false,
2448
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2449
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2450
+
2451
+ CONSTRAINT "ProductionUnitIdentifier_pkey" PRIMARY KEY ("id")
2452
+ );
2453
+
2454
+ -- CreateTable
2455
+ CREATE TABLE "ProductionUnitLog" (
2456
+ "id" TEXT NOT NULL,
2457
+ "productionUnitId" TEXT NOT NULL,
2458
+ "eventId" TEXT NOT NULL,
2459
+ "details" TEXT,
2460
+ "stepId" INTEGER,
2461
+ "operatorId" INTEGER,
2462
+ "scannedBy" TEXT,
2463
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2464
+
2465
+ CONSTRAINT "ProductionUnitLog_pkey" PRIMARY KEY ("id")
2466
+ );
2467
+
2468
+ -- CreateTable
2469
+ CREATE TABLE "ProductionRouteStep" (
2470
+ "id" SERIAL NOT NULL,
2471
+ "productionUnitId" TEXT NOT NULL,
2472
+ "stepId" INTEGER,
2473
+ "machineId" INTEGER,
2474
+ "isCompleted" BOOLEAN NOT NULL DEFAULT false,
2475
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2476
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2477
+
2478
+ CONSTRAINT "ProductionRouteStep_pkey" PRIMARY KEY ("id")
2479
+ );
2480
+
2481
+ -- CreateTable
2482
+ CREATE TABLE "ProductionUnitQC" (
2483
+ "id" TEXT NOT NULL,
2484
+ "productionUnitId" TEXT NOT NULL,
2485
+ "status" TEXT NOT NULL,
2486
+ "inspectorId" INTEGER,
2487
+ "notes" TEXT,
2488
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2489
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2490
+
2491
+ CONSTRAINT "ProductionUnitQC_pkey" PRIMARY KEY ("id")
2492
+ );
2493
+
2494
+ -- CreateTable
2495
+ CREATE TABLE "OrganizationUserEntityAccess" (
2496
+ "id" SERIAL NOT NULL,
2497
+ "userId" INTEGER NOT NULL,
2498
+ "organizationId" INTEGER NOT NULL,
2499
+ "factoryId" INTEGER,
2500
+ "floorId" INTEGER,
2501
+ "assemblyLineId" INTEGER,
2502
+ "machineId" INTEGER,
2503
+ "scopeOverride" TEXT,
2504
+ "expiresAt" TIMESTAMP(3),
2505
+ "reason" TEXT,
2506
+ "grantedBy" INTEGER,
2507
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2508
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2509
+
2510
+ CONSTRAINT "OrganizationUserEntityAccess_pkey" PRIMARY KEY ("id")
2511
+ );
2512
+
2513
+ -- CreateTable
2514
+ CREATE TABLE "MaintenanceSpecialization" (
2515
+ "id" SERIAL NOT NULL,
2516
+ "organizationId" INTEGER NOT NULL,
2517
+ "name" TEXT NOT NULL,
2518
+
2519
+ CONSTRAINT "MaintenanceSpecialization_pkey" PRIMARY KEY ("id")
2520
+ );
2521
+
2522
+ -- CreateTable
2523
+ CREATE TABLE "OrganizationCustomer" (
2524
+ "id" SERIAL NOT NULL,
2525
+ "organizationId" INTEGER NOT NULL,
2526
+ "externalId" TEXT,
2527
+ "name" TEXT NOT NULL,
2528
+ "description" TEXT,
2529
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2530
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2531
+
2532
+ CONSTRAINT "OrganizationCustomer_pkey" PRIMARY KEY ("id")
2533
+ );
2534
+
2535
+ -- CreateTable
2536
+ CREATE TABLE "AssemblyLineType" (
2537
+ "id" SERIAL NOT NULL,
2538
+ "name" TEXT NOT NULL,
2539
+ "organizationId" INTEGER NOT NULL,
2540
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2541
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2542
+
2543
+ CONSTRAINT "AssemblyLineType_pkey" PRIMARY KEY ("id")
2544
+ );
2545
+
2546
+ -- CreateTable
2547
+ CREATE TABLE "Team" (
2548
+ "id" SERIAL NOT NULL,
2549
+ "organizationId" INTEGER NOT NULL,
2550
+ "name" TEXT NOT NULL,
2551
+ "description" TEXT,
2552
+ "factoryId" INTEGER,
2553
+ "memberUserIds" INTEGER[],
2554
+ "leadUserId" INTEGER,
2555
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2556
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2557
+
2558
+ CONSTRAINT "Team_pkey" PRIMARY KEY ("id")
2559
+ );
2560
+
2561
+ -- CreateTable
2562
+ CREATE TABLE "Task" (
2563
+ "id" SERIAL NOT NULL,
2564
+ "organizationId" INTEGER NOT NULL,
2565
+ "operatorId" TEXT,
2566
+ "assignedById" TEXT NOT NULL,
2567
+ "assignedToId" TEXT,
2568
+ "deviceId" INTEGER,
2569
+ "machineId" INTEGER,
2570
+ "taskGroupId" INTEGER,
2571
+ "factoryId" INTEGER,
2572
+ "operatorOpCategoryId" INTEGER,
2573
+ "shiftId" INTEGER,
2574
+ "batchRecordId" TEXT,
2575
+ "controlPlanItemId" TEXT,
2576
+ "requiredDocumentId" INTEGER,
2577
+ "documentAcknowledged" BOOLEAN NOT NULL DEFAULT false,
2578
+ "labTestRequestId" TEXT,
2579
+ "labTestCleared" BOOLEAN NOT NULL DEFAULT false,
2580
+ "fmeaItemId" TEXT,
2581
+ "failureMode" TEXT,
2582
+ "title" TEXT,
2583
+ "description" TEXT,
2584
+ "status" "TaskStatus" NOT NULL DEFAULT 'NEW',
2585
+ "startTime" TIMESTAMP(3) NOT NULL,
2586
+ "endTime" TIMESTAMP(3) NOT NULL,
2587
+ "targetQuantity" DOUBLE PRECISION,
2588
+ "actualQuantity" DOUBLE PRECISION DEFAULT 0,
2589
+ "passedQuantity" DOUBLE PRECISION DEFAULT 0,
2590
+ "rejectedQuantity" DOUBLE PRECISION DEFAULT 0,
2591
+ "reworkQuantity" DOUBLE PRECISION DEFAULT 0,
2592
+ "wasteQuantity" DOUBLE PRECISION DEFAULT 0,
2593
+ "measurementUnit" "ProductionMeasurementUnit" DEFAULT 'PIECE',
2594
+ "efficiency" DOUBLE PRECISION,
2595
+ "yieldPercentage" DOUBLE PRECISION,
2596
+ "qualityRate" DOUBLE PRECISION,
2597
+ "sequence" INTEGER NOT NULL DEFAULT 0,
2598
+ "reworkOfTaskId" INTEGER,
2599
+ "reworkCount" INTEGER NOT NULL DEFAULT 0,
2600
+ "machineOperationId" INTEGER,
2601
+ "startedAt" TIMESTAMP(3),
2602
+ "completedAt" TIMESTAMP(3),
2603
+ "deletedAt" TIMESTAMP(3),
2604
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2605
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2606
+
2607
+ CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
2608
+ );
2609
+
2610
+ -- CreateTable
2611
+ CREATE TABLE "TaskGroup" (
2612
+ "id" SERIAL NOT NULL,
2613
+ "description" TEXT,
2614
+ "status" "TaskGroupStatus" NOT NULL DEFAULT 'NEW',
2615
+ "targetQuantity" DOUBLE PRECISION NOT NULL,
2616
+ "actualQuantity" DOUBLE PRECISION NOT NULL DEFAULT 0,
2617
+ "measurementUnit" "ProductionMeasurementUnit" NOT NULL DEFAULT 'PIECE',
2618
+ "totalPassedQuantity" DOUBLE PRECISION DEFAULT 0,
2619
+ "totalRejectedQuantity" DOUBLE PRECISION DEFAULT 0,
2620
+ "totalReworkQuantity" DOUBLE PRECISION DEFAULT 0,
2621
+ "overallEfficiency" DOUBLE PRECISION,
2622
+ "factoryId" INTEGER,
2623
+ "organizationId" INTEGER,
2624
+ "productRouteId" INTEGER,
2625
+ "orderProductId" INTEGER,
2626
+ "deadline" TIMESTAMP(3) NOT NULL,
2627
+ "reworkOfTaskGroupId" INTEGER,
2628
+ "reworkCount" INTEGER NOT NULL DEFAULT 0,
2629
+ "startedAt" TIMESTAMP(3),
2630
+ "completedAt" TIMESTAMP(3),
2631
+ "deletedAt" TIMESTAMP(3),
2632
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2633
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2634
+
2635
+ CONSTRAINT "TaskGroup_pkey" PRIMARY KEY ("id")
2636
+ );
2637
+
2638
+ -- CreateTable
2639
+ CREATE TABLE "TaskLot" (
2640
+ "id" SERIAL NOT NULL,
2641
+ "taskId" INTEGER NOT NULL,
2642
+ "lotId" INTEGER NOT NULL,
2643
+
2644
+ CONSTRAINT "TaskLot_pkey" PRIMARY KEY ("id")
2645
+ );
2646
+
2647
+ -- CreateTable
2648
+ CREATE TABLE "TaskGroupLot" (
2649
+ "id" SERIAL NOT NULL,
2650
+ "taskGroupId" INTEGER NOT NULL,
2651
+ "lotId" INTEGER NOT NULL,
2652
+
2653
+ CONSTRAINT "TaskGroupLot_pkey" PRIMARY KEY ("id")
2654
+ );
2655
+
2656
+ -- CreateTable
2657
+ CREATE TABLE "TaskInspection" (
2658
+ "id" SERIAL NOT NULL,
2659
+ "taskId" INTEGER NOT NULL,
2660
+ "inspectorId" TEXT NOT NULL,
2661
+ "passed" BOOLEAN NOT NULL DEFAULT false,
2662
+ "passedQuantity" DOUBLE PRECISION DEFAULT 0,
2663
+ "defectQuantity" DOUBLE PRECISION DEFAULT 0,
2664
+ "wasteQuantity" DOUBLE PRECISION DEFAULT 0,
2665
+ "reworkQuantity" DOUBLE PRECISION DEFAULT 0,
2666
+ "measurementUnit" "ProductionMeasurementUnit" DEFAULT 'PIECE',
2667
+ "notes" TEXT,
2668
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2669
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2670
+
2671
+ CONSTRAINT "TaskInspection_pkey" PRIMARY KEY ("id")
2672
+ );
2673
+
2674
+ -- CreateTable
2675
+ CREATE TABLE "TaskComment" (
2676
+ "id" SERIAL NOT NULL,
2677
+ "taskId" INTEGER NOT NULL,
2678
+ "organizationId" INTEGER NOT NULL,
2679
+ "authorId" TEXT,
2680
+ "text" TEXT NOT NULL,
2681
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2682
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2683
+
2684
+ CONSTRAINT "TaskComment_pkey" PRIMARY KEY ("id")
2685
+ );
2686
+
2687
+ -- CreateTable
2688
+ CREATE TABLE "OperatorOperationCategory" (
2689
+ "id" SERIAL NOT NULL,
2690
+ "factoryId" INTEGER NOT NULL,
2691
+ "name" TEXT NOT NULL,
2692
+ "description" TEXT,
2693
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
2694
+ "updatedAt" TIMESTAMP(3) NOT NULL,
2695
+
2696
+ CONSTRAINT "OperatorOperationCategory_pkey" PRIMARY KEY ("id")
2697
+ );
2698
+
2699
+ -- CreateIndex
2700
+ CREATE INDEX "MachineHourlyAnalytics_machineId_startDateTime_idx" ON "MachineHourlyAnalytics"("machineId", "startDateTime");
2701
+
2702
+ -- CreateIndex
2703
+ CREATE INDEX "MachineHourlyAnalytics_organizationId_startDateTime_idx" ON "MachineHourlyAnalytics"("organizationId", "startDateTime");
2704
+
2705
+ -- CreateIndex
2706
+ CREATE INDEX "MachineHourlyAnalytics_machineId_startDateTime_endDateTime_idx" ON "MachineHourlyAnalytics"("machineId", "startDateTime", "endDateTime");
2707
+
2708
+ -- CreateIndex
2709
+ CREATE UNIQUE INDEX "unique_machineHourlyCompound" ON "MachineHourlyAnalytics"("organizationId", "machineId", "startDateTime");
2710
+
2711
+ -- CreateIndex
2712
+ CREATE INDEX "MachineDailyAnalytics_machineId_date_idx" ON "MachineDailyAnalytics"("machineId", "date");
2713
+
2714
+ -- CreateIndex
2715
+ CREATE UNIQUE INDEX "unique_machineDailyCompound" ON "MachineDailyAnalytics"("organizationId", "machineId", "date");
2716
+
2717
+ -- CreateIndex
2718
+ CREATE UNIQUE INDEX "unique_machineMonthlyCompound" ON "MachineMonthlyAnalytics"("organizationId", "machineId", "month", "year");
2719
+
2720
+ -- CreateIndex
2721
+ CREATE UNIQUE INDEX "unique_lineHourlyCompound" ON "LineHourlyAnalytics"("organizationId", "assemblyLineId", "startDateTime");
2722
+
2723
+ -- CreateIndex
2724
+ CREATE UNIQUE INDEX "unique_floorHourlyCompound" ON "FloorHourlyAnalytics"("organizationId", "floorId", "startDateTime");
2725
+
2726
+ -- CreateIndex
2727
+ CREATE UNIQUE INDEX "unique_factoryHourlyCompound" ON "FactoryHourlyAnalytics"("organizationId", "factoryId", "startDateTime");
2728
+
2729
+ -- CreateIndex
2730
+ CREATE UNIQUE INDEX "unique_deviceHourlyCompound" ON "DeviceHourlyAnalytics"("organizationId", "deviceId", "startDateTime");
2731
+
2732
+ -- CreateIndex
2733
+ CREATE UNIQUE INDEX "unique_sensorHourlyCompound" ON "SensorHourlyAnalytics"("sensorId", "startDateTime");
2734
+
2735
+ -- CreateIndex
2736
+ CREATE UNIQUE INDEX "unique_proximityCompound" ON "ProximitySensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2737
+
2738
+ -- CreateIndex
2739
+ CREATE UNIQUE INDEX "unique_infraredCompound" ON "InfraredSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2740
+
2741
+ -- CreateIndex
2742
+ CREATE UNIQUE INDEX "DevicePowerSensorHourlyAnalytics_deviceHourlyAnalyticsId_key" ON "DevicePowerSensorHourlyAnalytics"("deviceHourlyAnalyticsId");
2743
+
2744
+ -- CreateIndex
2745
+ CREATE INDEX "ProtocolDataSourceHourlyAnalytics_dataSourceId_startDateTim_idx" ON "ProtocolDataSourceHourlyAnalytics"("dataSourceId", "startDateTime", "endDateTime");
2746
+
2747
+ -- CreateIndex
2748
+ CREATE UNIQUE INDEX "ProtocolDataSourceHourlyAnalytics_dataSourceId_startDateTim_key" ON "ProtocolDataSourceHourlyAnalytics"("dataSourceId", "startDateTime");
2749
+
2750
+ -- CreateIndex
2751
+ CREATE UNIQUE INDEX "CurrentSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "CurrentSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2752
+
2753
+ -- CreateIndex
2754
+ CREATE UNIQUE INDEX "VibrationSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "VibrationSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2755
+
2756
+ -- CreateIndex
2757
+ CREATE UNIQUE INDEX "TemperatureSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "TemperatureSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2758
+
2759
+ -- CreateIndex
2760
+ CREATE UNIQUE INDEX "FlowSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "FlowSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2761
+
2762
+ -- CreateIndex
2763
+ CREATE UNIQUE INDEX "WeightSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "WeightSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2764
+
2765
+ -- CreateIndex
2766
+ CREATE UNIQUE INDEX "PressureSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "PressureSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
2767
+
2768
+ -- CreateIndex
2769
+ CREATE INDEX "AuditLog_organizationId_timestamp_idx" ON "AuditLog"("organizationId", "timestamp" DESC);
2770
+
2771
+ -- CreateIndex
2772
+ CREATE INDEX "AuditLog_organizationId_entityName_entityId_idx" ON "AuditLog"("organizationId", "entityName", "entityId");
2773
+
2774
+ -- CreateIndex
2775
+ CREATE INDEX "AuditLog_organizationId_userId_timestamp_idx" ON "AuditLog"("organizationId", "userId", "timestamp" DESC);
2776
+
2777
+ -- CreateIndex
2778
+ CREATE INDEX "AuditLog_organizationId_isGxPRecord_timestamp_idx" ON "AuditLog"("organizationId", "isGxPRecord", "timestamp" DESC);
2779
+
2780
+ -- CreateIndex
2781
+ CREATE INDEX "AuditLog_criticality_idx" ON "AuditLog"("criticality");
2782
+
2783
+ -- CreateIndex
2784
+ CREATE INDEX "ChatbotHistory_userId_idx" ON "ChatbotHistory"("userId");
2785
+
2786
+ -- CreateIndex
2787
+ CREATE INDEX "ChatbotHistory_organizationId_idx" ON "ChatbotHistory"("organizationId");
2788
+
2789
+ -- CreateIndex
2790
+ CREATE INDEX "ChatbotHistory_factoryId_idx" ON "ChatbotHistory"("factoryId");
2791
+
2792
+ -- CreateIndex
2793
+ CREATE INDEX "ChatbotHistory_machineId_idx" ON "ChatbotHistory"("machineId");
2794
+
2795
+ -- CreateIndex
2796
+ CREATE INDEX "ChatbotHistory_deviceId_idx" ON "ChatbotHistory"("deviceId");
2797
+
2798
+ -- CreateIndex
2799
+ CREATE INDEX "ChatbotHistory_sensorId_idx" ON "ChatbotHistory"("sensorId");
2800
+
2801
+ -- CreateIndex
2802
+ CREATE INDEX "ChatbotHistory_createdAt_idx" ON "ChatbotHistory"("createdAt");
2803
+
2804
+ -- CreateIndex
2805
+ CREATE INDEX "ChatbotHistory_userId_createdAt_idx" ON "ChatbotHistory"("userId", "createdAt");
2806
+
2807
+ -- CreateIndex
2808
+ CREATE INDEX "ChatbotHistory_organizationId_isArchived_idx" ON "ChatbotHistory"("organizationId", "isArchived");
2809
+
2810
+ -- CreateIndex
2811
+ CREATE INDEX "ChatbotMessage_chatHistoryId_idx" ON "ChatbotMessage"("chatHistoryId");
2812
+
2813
+ -- CreateIndex
2814
+ CREATE INDEX "ChatbotMessage_createdAt_idx" ON "ChatbotMessage"("createdAt");
2815
+
2816
+ -- CreateIndex
2817
+ CREATE INDEX "ChatbotMessage_sender_idx" ON "ChatbotMessage"("sender");
2818
+
2819
+ -- CreateIndex
2820
+ CREATE INDEX "ChatbotKnowledgeBase_organizationId_idx" ON "ChatbotKnowledgeBase"("organizationId");
2821
+
2822
+ -- CreateIndex
2823
+ CREATE INDEX "ChatbotKnowledgeBase_factoryId_idx" ON "ChatbotKnowledgeBase"("factoryId");
2824
+
2825
+ -- CreateIndex
2826
+ CREATE INDEX "ChatbotKnowledgeBase_machineId_idx" ON "ChatbotKnowledgeBase"("machineId");
2827
+
2828
+ -- CreateIndex
2829
+ CREATE INDEX "ChatbotKnowledgeBase_deviceId_idx" ON "ChatbotKnowledgeBase"("deviceId");
2830
+
2831
+ -- CreateIndex
2832
+ CREATE INDEX "ChatbotKnowledgeBase_sensorId_idx" ON "ChatbotKnowledgeBase"("sensorId");
2833
+
2834
+ -- CreateIndex
2835
+ CREATE INDEX "ChatbotKnowledgeBase_documentType_idx" ON "ChatbotKnowledgeBase"("documentType");
2836
+
2837
+ -- CreateIndex
2838
+ CREATE INDEX "ChatbotKnowledgeBase_embeddingStatus_idx" ON "ChatbotKnowledgeBase"("embeddingStatus");
2839
+
2840
+ -- CreateIndex
2841
+ CREATE INDEX "ChatbotKnowledgeBase_isActive_idx" ON "ChatbotKnowledgeBase"("isActive");
2842
+
2843
+ -- CreateIndex
2844
+ CREATE INDEX "ChatbotKnowledgeBase_organizationId_documentType_isActive_idx" ON "ChatbotKnowledgeBase"("organizationId", "documentType", "isActive");
2845
+
2846
+ -- CreateIndex
2847
+ CREATE INDEX "ChatbotKnowledgeChunk_knowledgeBaseId_idx" ON "ChatbotKnowledgeChunk"("knowledgeBaseId");
2848
+
2849
+ -- CreateIndex
2850
+ CREATE INDEX "ChatbotKnowledgeChunk_knowledgeBaseId_chunkIndex_idx" ON "ChatbotKnowledgeChunk"("knowledgeBaseId", "chunkIndex");
2851
+
2852
+ -- CreateIndex
2853
+ CREATE INDEX "ChatbotSearchHistory_userId_idx" ON "ChatbotSearchHistory"("userId");
2854
+
2855
+ -- CreateIndex
2856
+ CREATE INDEX "ChatbotSearchHistory_organizationId_idx" ON "ChatbotSearchHistory"("organizationId");
2857
+
2858
+ -- CreateIndex
2859
+ CREATE INDEX "ChatbotSearchHistory_createdAt_idx" ON "ChatbotSearchHistory"("createdAt");
2860
+
2861
+ -- CreateIndex
2862
+ CREATE INDEX "ChatbotSearchHistory_userId_createdAt_idx" ON "ChatbotSearchHistory"("userId", "createdAt");
2863
+
2864
+ -- CreateIndex
2865
+ CREATE INDEX "DeviceConversationContext_machineId_idx" ON "DeviceConversationContext"("machineId");
2866
+
2867
+ -- CreateIndex
2868
+ CREATE INDEX "DeviceConversationContext_deviceId_idx" ON "DeviceConversationContext"("deviceId");
2869
+
2870
+ -- CreateIndex
2871
+ CREATE INDEX "DeviceConversationContext_sensorId_idx" ON "DeviceConversationContext"("sensorId");
2872
+
2873
+ -- CreateIndex
2874
+ CREATE INDEX "DeviceConversationContext_isActive_idx" ON "DeviceConversationContext"("isActive");
2875
+
2876
+ -- CreateIndex
2877
+ CREATE UNIQUE INDEX "DeviceConversationContext_organizationId_entityType_entityI_key" ON "DeviceConversationContext"("organizationId", "entityType", "entityId");
2878
+
2879
+ -- CreateIndex
2880
+ CREATE INDEX "ChatbotFeedback_chatHistoryId_idx" ON "ChatbotFeedback"("chatHistoryId");
2881
+
2882
+ -- CreateIndex
2883
+ CREATE INDEX "ChatbotFeedback_messageId_idx" ON "ChatbotFeedback"("messageId");
2884
+
2885
+ -- CreateIndex
2886
+ CREATE INDEX "ChatbotFeedback_userId_idx" ON "ChatbotFeedback"("userId");
2887
+
2888
+ -- CreateIndex
2889
+ CREATE INDEX "ChatbotFeedback_organizationId_idx" ON "ChatbotFeedback"("organizationId");
2890
+
2891
+ -- CreateIndex
2892
+ CREATE INDEX "ChatbotFeedback_rating_idx" ON "ChatbotFeedback"("rating");
2893
+
2894
+ -- CreateIndex
2895
+ CREATE UNIQUE INDEX "FMEA_fmeaNumber_key" ON "FMEA"("fmeaNumber");
2896
+
2897
+ -- CreateIndex
2898
+ CREATE INDEX "FMEA_organizationId_status_idx" ON "FMEA"("organizationId", "status");
2899
+
2900
+ -- CreateIndex
2901
+ CREATE INDEX "FMEA_fmeaNumber_idx" ON "FMEA"("fmeaNumber");
2902
+
2903
+ -- CreateIndex
2904
+ CREATE INDEX "FMEA_productId_idx" ON "FMEA"("productId");
2905
+
2906
+ -- CreateIndex
2907
+ CREATE INDEX "FMEAItem_fmeaId_idx" ON "FMEAItem"("fmeaId");
2908
+
2909
+ -- CreateIndex
2910
+ CREATE INDEX "FMEAItem_rpn_idx" ON "FMEAItem"("rpn");
2911
+
2912
+ -- CreateIndex
2913
+ CREATE INDEX "FMEAItem_linkedMachineId_idx" ON "FMEAItem"("linkedMachineId");
2914
+
2915
+ -- CreateIndex
2916
+ CREATE UNIQUE INDEX "ControlPlan_controlPlanNumber_key" ON "ControlPlan"("controlPlanNumber");
2917
+
2918
+ -- CreateIndex
2919
+ CREATE INDEX "ControlPlan_organizationId_status_idx" ON "ControlPlan"("organizationId", "status");
2920
+
2921
+ -- CreateIndex
2922
+ CREATE INDEX "ControlPlan_controlPlanNumber_idx" ON "ControlPlan"("controlPlanNumber");
2923
+
2924
+ -- CreateIndex
2925
+ CREATE INDEX "ControlPlan_productId_idx" ON "ControlPlan"("productId");
2926
+
2927
+ -- CreateIndex
2928
+ CREATE INDEX "ControlPlanItem_controlPlanId_idx" ON "ControlPlanItem"("controlPlanId");
2929
+
2930
+ -- CreateIndex
2931
+ CREATE INDEX "ControlPlanItem_machineId_idx" ON "ControlPlanItem"("machineId");
2932
+
2933
+ -- CreateIndex
2934
+ CREATE UNIQUE INDEX "PPAPSubmission_ppapNumber_key" ON "PPAPSubmission"("ppapNumber");
2935
+
2936
+ -- CreateIndex
2937
+ CREATE INDEX "PPAPSubmission_organizationId_status_idx" ON "PPAPSubmission"("organizationId", "status");
2938
+
2939
+ -- CreateIndex
2940
+ CREATE INDEX "PPAPSubmission_ppapNumber_idx" ON "PPAPSubmission"("ppapNumber");
2941
+
2942
+ -- CreateIndex
2943
+ CREATE INDEX "PPAPSubmission_productId_idx" ON "PPAPSubmission"("productId");
2944
+
2945
+ -- CreateIndex
2946
+ CREATE UNIQUE INDEX "Problem8D_problemNumber_key" ON "Problem8D"("problemNumber");
2947
+
2948
+ -- CreateIndex
2949
+ CREATE INDEX "Problem8D_organizationId_status_idx" ON "Problem8D"("organizationId", "status");
2950
+
2951
+ -- CreateIndex
2952
+ CREATE INDEX "Problem8D_problemNumber_idx" ON "Problem8D"("problemNumber");
2953
+
2954
+ -- CreateIndex
2955
+ CREATE INDEX "Problem8D_customerId_idx" ON "Problem8D"("customerId");
2956
+
2957
+ -- CreateIndex
2958
+ CREATE UNIQUE INDEX "MasterFormulaRecord_mfrNumber_key" ON "MasterFormulaRecord"("mfrNumber");
2959
+
2960
+ -- CreateIndex
2961
+ CREATE INDEX "MasterFormulaRecord_organizationId_status_idx" ON "MasterFormulaRecord"("organizationId", "status");
2962
+
2963
+ -- CreateIndex
2964
+ CREATE INDEX "MasterFormulaRecord_productId_idx" ON "MasterFormulaRecord"("productId");
2965
+
2966
+ -- CreateIndex
2967
+ CREATE INDEX "MasterFormulaRecord_mfrNumber_idx" ON "MasterFormulaRecord"("mfrNumber");
2968
+
2969
+ -- CreateIndex
2970
+ CREATE INDEX "MFRMaterial_mfrId_sequence_idx" ON "MFRMaterial"("mfrId", "sequence");
2971
+
2972
+ -- CreateIndex
2973
+ CREATE INDEX "MFRProcessStep_mfrId_stepNumber_idx" ON "MFRProcessStep"("mfrId", "stepNumber");
2974
+
2975
+ -- CreateIndex
2976
+ CREATE INDEX "MFRQualitySpec_mfrId_idx" ON "MFRQualitySpec"("mfrId");
2977
+
2978
+ -- CreateIndex
2979
+ CREATE INDEX "MFRQualitySpec_processStepId_idx" ON "MFRQualitySpec"("processStepId");
2980
+
2981
+ -- CreateIndex
2982
+ CREATE UNIQUE INDEX "BatchManufacturingRecord_batchNumber_key" ON "BatchManufacturingRecord"("batchNumber");
2983
+
2984
+ -- CreateIndex
2985
+ CREATE INDEX "BatchManufacturingRecord_organizationId_status_idx" ON "BatchManufacturingRecord"("organizationId", "status");
2986
+
2987
+ -- CreateIndex
2988
+ CREATE INDEX "BatchManufacturingRecord_batchNumber_idx" ON "BatchManufacturingRecord"("batchNumber");
2989
+
2990
+ -- CreateIndex
2991
+ CREATE INDEX "BatchManufacturingRecord_mfrId_idx" ON "BatchManufacturingRecord"("mfrId");
2992
+
2993
+ -- CreateIndex
2994
+ CREATE INDEX "BatchManufacturingRecord_manufacturingDate_idx" ON "BatchManufacturingRecord"("manufacturingDate");
2995
+
2996
+ -- CreateIndex
2997
+ CREATE INDEX "BatchManufacturingRecord_expiryDate_idx" ON "BatchManufacturingRecord"("expiryDate");
2998
+
2999
+ -- CreateIndex
3000
+ CREATE INDEX "BatchManufacturingRecord_status_qaReleaseDate_idx" ON "BatchManufacturingRecord"("status", "qaReleaseDate");
3001
+
3002
+ -- CreateIndex
3003
+ CREATE INDEX "WeighingLog_batchId_idx" ON "WeighingLog"("batchId");
3004
+
3005
+ -- CreateIndex
3006
+ CREATE INDEX "WeighingLog_materialCode_idx" ON "WeighingLog"("materialCode");
3007
+
3008
+ -- CreateIndex
3009
+ CREATE INDEX "WeighingLog_weighedAt_idx" ON "WeighingLog"("weighedAt");
3010
+
3011
+ -- CreateIndex
3012
+ CREATE INDEX "InProcessControl_batchId_idx" ON "InProcessControl"("batchId");
3013
+
3014
+ -- CreateIndex
3015
+ CREATE INDEX "InProcessControl_testStage_idx" ON "InProcessControl"("testStage");
3016
+
3017
+ -- CreateIndex
3018
+ CREATE UNIQUE INDEX "Deviation_deviationNumber_key" ON "Deviation"("deviationNumber");
3019
+
3020
+ -- CreateIndex
3021
+ CREATE INDEX "Deviation_organizationId_status_idx" ON "Deviation"("organizationId", "status");
3022
+
3023
+ -- CreateIndex
3024
+ CREATE INDEX "Deviation_deviationNumber_idx" ON "Deviation"("deviationNumber");
3025
+
3026
+ -- CreateIndex
3027
+ CREATE INDEX "Deviation_batchId_idx" ON "Deviation"("batchId");
3028
+
3029
+ -- CreateIndex
3030
+ CREATE INDEX "Deviation_severity_status_idx" ON "Deviation"("severity", "status");
3031
+
3032
+ -- CreateIndex
3033
+ CREATE UNIQUE INDEX "CAPA_capaNumber_key" ON "CAPA"("capaNumber");
3034
+
3035
+ -- CreateIndex
3036
+ CREATE INDEX "CAPA_organizationId_status_idx" ON "CAPA"("organizationId", "status");
3037
+
3038
+ -- CreateIndex
3039
+ CREATE INDEX "CAPA_capaNumber_idx" ON "CAPA"("capaNumber");
3040
+
3041
+ -- CreateIndex
3042
+ CREATE INDEX "CAPA_deviationId_idx" ON "CAPA"("deviationId");
3043
+
3044
+ -- CreateIndex
3045
+ CREATE INDEX "CAPA_assignedTo_status_idx" ON "CAPA"("assignedTo", "status");
3046
+
3047
+ -- CreateIndex
3048
+ CREATE INDEX "CAPA_dueDate_idx" ON "CAPA"("dueDate");
3049
+
3050
+ -- CreateIndex
3051
+ CREATE INDEX "ElectronicSignature_organizationId_timestamp_idx" ON "ElectronicSignature"("organizationId", "timestamp" DESC);
3052
+
3053
+ -- CreateIndex
3054
+ CREATE INDEX "ElectronicSignature_organizationId_batchRecordId_idx" ON "ElectronicSignature"("organizationId", "batchRecordId");
3055
+
3056
+ -- CreateIndex
3057
+ CREATE INDEX "ElectronicSignature_organizationId_documentId_idx" ON "ElectronicSignature"("organizationId", "documentId");
3058
+
3059
+ -- CreateIndex
3060
+ CREATE INDEX "ElectronicSignature_organizationId_userId_timestamp_idx" ON "ElectronicSignature"("organizationId", "userId", "timestamp" DESC);
3061
+
3062
+ -- CreateIndex
3063
+ CREATE INDEX "ElectronicSignature_isValid_idx" ON "ElectronicSignature"("isValid");
3064
+
3065
+ -- CreateIndex
3066
+ CREATE INDEX "EquipmentQualification_organizationId_machineId_idx" ON "EquipmentQualification"("organizationId", "machineId");
3067
+
3068
+ -- CreateIndex
3069
+ CREATE INDEX "EquipmentQualification_organizationId_expiryDate_idx" ON "EquipmentQualification"("organizationId", "expiryDate");
3070
+
3071
+ -- CreateIndex
3072
+ CREATE INDEX "EquipmentQualification_organizationId_qualificationType_sta_idx" ON "EquipmentQualification"("organizationId", "qualificationType", "status");
3073
+
3074
+ -- CreateIndex
3075
+ CREATE INDEX "ControlledDocument_organizationId_status_idx" ON "ControlledDocument"("organizationId", "status");
3076
+
3077
+ -- CreateIndex
3078
+ CREATE INDEX "ControlledDocument_organizationId_documentType_status_idx" ON "ControlledDocument"("organizationId", "documentType", "status");
3079
+
3080
+ -- CreateIndex
3081
+ CREATE INDEX "ControlledDocument_organizationId_reviewDate_idx" ON "ControlledDocument"("organizationId", "reviewDate");
3082
+
3083
+ -- CreateIndex
3084
+ CREATE INDEX "ControlledDocument_effectiveDate_obsoleteDate_idx" ON "ControlledDocument"("effectiveDate", "obsoleteDate");
3085
+
3086
+ -- CreateIndex
3087
+ CREATE UNIQUE INDEX "ControlledDocument_organizationId_documentNumber_version_key" ON "ControlledDocument"("organizationId", "documentNumber", "version");
3088
+
3089
+ -- CreateIndex
3090
+ CREATE INDEX "TrainingRecord_organizationId_userId_status_idx" ON "TrainingRecord"("organizationId", "userId", "status");
3091
+
3092
+ -- CreateIndex
3093
+ CREATE INDEX "TrainingRecord_organizationId_expiresAt_idx" ON "TrainingRecord"("organizationId", "expiresAt");
3094
+
3095
+ -- CreateIndex
3096
+ CREATE INDEX "TrainingRecord_documentId_idx" ON "TrainingRecord"("documentId");
3097
+
3098
+ -- CreateIndex
3099
+ CREATE UNIQUE INDEX "ChangeControl_changeNumber_key" ON "ChangeControl"("changeNumber");
3100
+
3101
+ -- CreateIndex
3102
+ CREATE INDEX "ChangeControl_organizationId_status_idx" ON "ChangeControl"("organizationId", "status");
3103
+
3104
+ -- CreateIndex
3105
+ CREATE INDEX "ChangeControl_organizationId_changeNumber_idx" ON "ChangeControl"("organizationId", "changeNumber");
3106
+
3107
+ -- CreateIndex
3108
+ CREATE INDEX "ChangeControl_organizationId_initiatedAt_idx" ON "ChangeControl"("organizationId", "initiatedAt" DESC);
3109
+
3110
+ -- CreateIndex
3111
+ CREATE UNIQUE INDEX "LabTestRequest_sampleId_key" ON "LabTestRequest"("sampleId");
3112
+
3113
+ -- CreateIndex
3114
+ CREATE INDEX "LabTestRequest_organizationId_status_idx" ON "LabTestRequest"("organizationId", "status");
3115
+
3116
+ -- CreateIndex
3117
+ CREATE INDEX "LabTestRequest_organizationId_sampleId_idx" ON "LabTestRequest"("organizationId", "sampleId");
3118
+
3119
+ -- CreateIndex
3120
+ CREATE INDEX "LabTestRequest_organizationId_batchId_idx" ON "LabTestRequest"("organizationId", "batchId");
3121
+
3122
+ -- CreateIndex
3123
+ CREATE INDEX "LabTestRequest_organizationId_requestedAt_idx" ON "LabTestRequest"("organizationId", "requestedAt" DESC);
3124
+
3125
+ -- CreateIndex
3126
+ CREATE INDEX "TestResult_organizationId_requestId_idx" ON "TestResult"("organizationId", "requestId");
3127
+
3128
+ -- CreateIndex
3129
+ CREATE INDEX "TestResult_organizationId_isPass_idx" ON "TestResult"("organizationId", "isPass");
3130
+
3131
+ -- CreateIndex
3132
+ CREATE INDEX "CalibrationRecord_organizationId_nextDueDate_idx" ON "CalibrationRecord"("organizationId", "nextDueDate");
3133
+
3134
+ -- CreateIndex
3135
+ CREATE INDEX "CalibrationRecord_organizationId_equipmentId_idx" ON "CalibrationRecord"("organizationId", "equipmentId");
3136
+
3137
+ -- CreateIndex
3138
+ CREATE INDEX "CalibrationRecord_deviceId_idx" ON "CalibrationRecord"("deviceId");
3139
+
3140
+ -- CreateIndex
3141
+ CREATE UNIQUE INDEX "DigitalProductPassport_productionUnitId_key" ON "DigitalProductPassport"("productionUnitId");
3142
+
3143
+ -- CreateIndex
3144
+ CREATE UNIQUE INDEX "DigitalProductPassport_publicUid_key" ON "DigitalProductPassport"("publicUid");
3145
+
3146
+ -- CreateIndex
3147
+ CREATE INDEX "DigitalProductPassport_organizationId_status_idx" ON "DigitalProductPassport"("organizationId", "status");
3148
+
3149
+ -- CreateIndex
3150
+ CREATE INDEX "DigitalProductPassport_publicUid_idx" ON "DigitalProductPassport"("publicUid");
3151
+
3152
+ -- CreateIndex
3153
+ CREATE INDEX "DigitalProductPassport_styleNumber_idx" ON "DigitalProductPassport"("styleNumber");
3154
+
3155
+ -- CreateIndex
3156
+ CREATE INDEX "DigitalProductPassport_productId_idx" ON "DigitalProductPassport"("productId");
3157
+
3158
+ -- CreateIndex
3159
+ CREATE INDEX "DigitalProductPassport_gtin_idx" ON "DigitalProductPassport"("gtin");
3160
+
3161
+ -- CreateIndex
3162
+ CREATE UNIQUE INDEX "SupplyChainNode_nodeId_key" ON "SupplyChainNode"("nodeId");
3163
+
3164
+ -- CreateIndex
3165
+ CREATE INDEX "SupplyChainNode_dppId_idx" ON "SupplyChainNode"("dppId");
3166
+
3167
+ -- CreateIndex
3168
+ CREATE INDEX "SupplyChainNode_nodeType_idx" ON "SupplyChainNode"("nodeType");
3169
+
3170
+ -- CreateIndex
3171
+ CREATE INDEX "SupplyChainNode_nodeId_idx" ON "SupplyChainNode"("nodeId");
3172
+
3173
+ -- CreateIndex
3174
+ CREATE INDEX "SupplyChainEdge_dppId_idx" ON "SupplyChainEdge"("dppId");
3175
+
3176
+ -- CreateIndex
3177
+ CREATE INDEX "SupplyChainEdge_fromNodeId_idx" ON "SupplyChainEdge"("fromNodeId");
3178
+
3179
+ -- CreateIndex
3180
+ CREATE INDEX "SupplyChainEdge_toNodeId_idx" ON "SupplyChainEdge"("toNodeId");
3181
+
3182
+ -- CreateIndex
3183
+ CREATE UNIQUE INDEX "SupplyChainEdge_fromNodeId_toNodeId_materialBatchId_key" ON "SupplyChainEdge"("fromNodeId", "toNodeId", "materialBatchId");
3184
+
3185
+ -- CreateIndex
3186
+ CREATE INDEX "ProductCertificate_dppId_idx" ON "ProductCertificate"("dppId");
3187
+
3188
+ -- CreateIndex
3189
+ CREATE INDEX "ProductCertificate_certificateType_idx" ON "ProductCertificate"("certificateType");
3190
+
3191
+ -- CreateIndex
3192
+ CREATE INDEX "ProductCertificate_expiryDate_idx" ON "ProductCertificate"("expiryDate");
3193
+
3194
+ -- CreateIndex
3195
+ CREATE INDEX "TextileQRScan_dppId_scannedAt_idx" ON "TextileQRScan"("dppId", "scannedAt");
3196
+
3197
+ -- CreateIndex
3198
+ CREATE INDEX "TextileQRScan_country_idx" ON "TextileQRScan"("country");
3199
+
3200
+ -- CreateIndex
3201
+ CREATE UNIQUE INDEX "Gateway_gatewayUid_key" ON "Gateway"("gatewayUid");
3202
+
3203
+ -- CreateIndex
3204
+ CREATE UNIQUE INDEX "Gateway_globalInventoryDeviceId_key" ON "Gateway"("globalInventoryDeviceId");
3205
+
3206
+ -- CreateIndex
3207
+ CREATE INDEX "Gateway_floorId_idx" ON "Gateway"("floorId");
3208
+
3209
+ -- CreateIndex
3210
+ CREATE UNIQUE INDEX "GatewayApiToken_gatewayId_key" ON "GatewayApiToken"("gatewayId");
3211
+
3212
+ -- CreateIndex
3213
+ CREATE UNIQUE INDEX "Device_globalDeviceUid_key" ON "Device"("globalDeviceUid");
3214
+
3215
+ -- CreateIndex
3216
+ CREATE UNIQUE INDEX "Device_deviceUid_key" ON "Device"("deviceUid");
3217
+
3218
+ -- CreateIndex
3219
+ CREATE UNIQUE INDEX "Device_globalInventoryDeviceId_key" ON "Device"("globalInventoryDeviceId");
3220
+
3221
+ -- CreateIndex
3222
+ CREATE INDEX "Device_organizationId_idx" ON "Device"("organizationId");
3223
+
3224
+ -- CreateIndex
3225
+ CREATE INDEX "Device_globalDeviceUid_idx" ON "Device"("globalDeviceUid");
3226
+
3227
+ -- CreateIndex
3228
+ CREATE INDEX "Device_gatewayId_idx" ON "Device"("gatewayId");
3229
+
3230
+ -- CreateIndex
3231
+ CREATE INDEX "Device_machineId_idx" ON "Device"("machineId");
3232
+
3233
+ -- CreateIndex
3234
+ CREATE INDEX "Device_factoryId_idx" ON "Device"("factoryId");
3235
+
3236
+ -- CreateIndex
3237
+ CREATE INDEX "Device_ipAddress_idx" ON "Device"("ipAddress");
3238
+
3239
+ -- CreateIndex
3240
+ CREATE UNIQUE INDEX "Sensor_sensorUid_key" ON "Sensor"("sensorUid");
3241
+
3242
+ -- CreateIndex
3243
+ CREATE INDEX "Sensor_deviceId_idx" ON "Sensor"("deviceId");
3244
+
3245
+ -- CreateIndex
3246
+ CREATE INDEX "Sensor_isVirtual_idx" ON "Sensor"("isVirtual");
3247
+
3248
+ -- CreateIndex
3249
+ CREATE UNIQUE INDEX "ProximitySensorConfig_sensorId_key" ON "ProximitySensorConfig"("sensorId");
3250
+
3251
+ -- CreateIndex
3252
+ CREATE UNIQUE INDEX "CurrentSensorConfig_sensorId_key" ON "CurrentSensorConfig"("sensorId");
3253
+
3254
+ -- CreateIndex
3255
+ CREATE UNIQUE INDEX "InfraredSensorConfig_sensorId_key" ON "InfraredSensorConfig"("sensorId");
3256
+
3257
+ -- CreateIndex
3258
+ CREATE INDEX "MachineDeviceAssignment_deviceId_idx" ON "MachineDeviceAssignment"("deviceId");
3259
+
3260
+ -- CreateIndex
3261
+ CREATE INDEX "MachineDeviceAssignment_machineId_idx" ON "MachineDeviceAssignment"("machineId");
3262
+
3263
+ -- CreateIndex
3264
+ CREATE INDEX "MachineDeviceAssignment_assignedAt_idx" ON "MachineDeviceAssignment"("assignedAt");
3265
+
3266
+ -- CreateIndex
3267
+ CREATE INDEX "MachineDeviceAssignment_unassignedAt_idx" ON "MachineDeviceAssignment"("unassignedAt");
3268
+
3269
+ -- CreateIndex
3270
+ CREATE UNIQUE INDEX "VibrationSensorConfig_sensorId_key" ON "VibrationSensorConfig"("sensorId");
3271
+
3272
+ -- CreateIndex
3273
+ CREATE UNIQUE INDEX "TemperatureSensorConfig_sensorId_key" ON "TemperatureSensorConfig"("sensorId");
3274
+
3275
+ -- CreateIndex
3276
+ CREATE UNIQUE INDEX "FlowSensorConfig_sensorId_key" ON "FlowSensorConfig"("sensorId");
3277
+
3278
+ -- CreateIndex
3279
+ CREATE UNIQUE INDEX "WeightSensorConfig_sensorId_key" ON "WeightSensorConfig"("sensorId");
3280
+
3281
+ -- CreateIndex
3282
+ CREATE UNIQUE INDEX "PressureSensorConfig_sensorId_key" ON "PressureSensorConfig"("sensorId");
3283
+
3284
+ -- CreateIndex
3285
+ CREATE INDEX "SensorLog_isProcessed_idx" ON "SensorLog"("isProcessed");
3286
+
3287
+ -- CreateIndex
3288
+ CREATE INDEX "SensorLog_sensorId_isProcessed_idx" ON "SensorLog"("sensorId", "isProcessed");
3289
+
3290
+ -- CreateIndex
3291
+ CREATE INDEX "SensorLog_senseTime_idx" ON "SensorLog"("senseTime");
3292
+
3293
+ -- CreateIndex
3294
+ CREATE UNIQUE INDEX "SensorLog_sensorId_senseTime_key" ON "SensorLog"("sensorId", "senseTime");
3295
+
3296
+ -- CreateIndex
3297
+ CREATE UNIQUE INDEX "RFIDSensorLog_sensorLogId_key" ON "RFIDSensorLog"("sensorLogId");
3298
+
3299
+ -- CreateIndex
3300
+ CREATE INDEX "RFIDSensorLog_operatorId_idx" ON "RFIDSensorLog"("operatorId");
3301
+
3302
+ -- CreateIndex
3303
+ CREATE INDEX "RFIDSensorLog_rfid_idx" ON "RFIDSensorLog"("rfid");
3304
+
3305
+ -- CreateIndex
3306
+ CREATE INDEX "RFIDSensorLog_sensorLogId_idx" ON "RFIDSensorLog"("sensorLogId");
3307
+
3308
+ -- CreateIndex
3309
+ CREATE UNIQUE INDEX "ProximitySensorLog_sensorLogId_key" ON "ProximitySensorLog"("sensorLogId");
3310
+
3311
+ -- CreateIndex
3312
+ CREATE UNIQUE INDEX "InfraredSensorLog_sensorLogId_key" ON "InfraredSensorLog"("sensorLogId");
3313
+
3314
+ -- CreateIndex
3315
+ CREATE UNIQUE INDEX "CurrentSensorLog_sensorLogId_key" ON "CurrentSensorLog"("sensorLogId");
3316
+
3317
+ -- CreateIndex
3318
+ CREATE UNIQUE INDEX "DevicePowerSensorLog_sensorLogId_key" ON "DevicePowerSensorLog"("sensorLogId");
3319
+
3320
+ -- CreateIndex
3321
+ CREATE UNIQUE INDEX "VibrationSensorLog_sensorLogId_key" ON "VibrationSensorLog"("sensorLogId");
3322
+
3323
+ -- CreateIndex
3324
+ CREATE UNIQUE INDEX "TemperatureSensorLog_sensorLogId_key" ON "TemperatureSensorLog"("sensorLogId");
3325
+
3326
+ -- CreateIndex
3327
+ CREATE UNIQUE INDEX "FlowSensorLog_sensorLogId_key" ON "FlowSensorLog"("sensorLogId");
3328
+
3329
+ -- CreateIndex
3330
+ CREATE UNIQUE INDEX "WeightSensorLog_sensorLogId_key" ON "WeightSensorLog"("sensorLogId");
3331
+
3332
+ -- CreateIndex
3333
+ CREATE UNIQUE INDEX "PressureSensorLog_sensorLogId_key" ON "PressureSensorLog"("sensorLogId");
3334
+
3335
+ -- CreateIndex
3336
+ CREATE UNIQUE INDEX "ProtocolDataSource_sensorId_key" ON "ProtocolDataSource"("sensorId");
3337
+
3338
+ -- CreateIndex
3339
+ CREATE INDEX "ProtocolDataSource_deviceId_idx" ON "ProtocolDataSource"("deviceId");
3340
+
3341
+ -- CreateIndex
3342
+ CREATE INDEX "ProtocolDataSource_sourceType_idx" ON "ProtocolDataSource"("sourceType");
3343
+
3344
+ -- CreateIndex
3345
+ CREATE INDEX "ProtocolDataSource_machineId_idx" ON "ProtocolDataSource"("machineId");
3346
+
3347
+ -- CreateIndex
3348
+ CREATE INDEX "ProtocolDataLog_dataSourceId_isProcessed_idx" ON "ProtocolDataLog"("dataSourceId", "isProcessed");
3349
+
3350
+ -- CreateIndex
3351
+ CREATE INDEX "ProtocolDataLog_timestamp_idx" ON "ProtocolDataLog"("timestamp");
3352
+
3353
+ -- CreateIndex
3354
+ CREATE UNIQUE INDEX "ProtocolDataLog_dataSourceId_timestamp_key" ON "ProtocolDataLog"("dataSourceId", "timestamp");
3355
+
3356
+ -- CreateIndex
3357
+ CREATE INDEX "DeviceConnection_parentDeviceId_idx" ON "DeviceConnection"("parentDeviceId");
3358
+
3359
+ -- CreateIndex
3360
+ CREATE UNIQUE INDEX "DeviceConnection_parentDeviceId_childDeviceId_protocol_key" ON "DeviceConnection"("parentDeviceId", "childDeviceId", "protocol");
3361
+
3362
+ -- CreateIndex
3363
+ CREATE INDEX "Factory_organizationId_idx" ON "Factory"("organizationId");
3364
+
3365
+ -- CreateIndex
3366
+ CREATE INDEX "Floor_factoryId_idx" ON "Floor"("factoryId");
3367
+
3368
+ -- CreateIndex
3369
+ CREATE INDEX "FloorType_organizationId_idx" ON "FloorType"("organizationId");
3370
+
3371
+ -- CreateIndex
3372
+ CREATE UNIQUE INDEX "FloorType_organizationId_name_key" ON "FloorType"("organizationId", "name");
3373
+
3374
+ -- CreateIndex
3375
+ CREATE UNIQUE INDEX "FloorSetting_floorId_key" ON "FloorSetting"("floorId");
3376
+
3377
+ -- CreateIndex
3378
+ CREATE INDEX "AssemblyLine_floorId_idx" ON "AssemblyLine"("floorId");
3379
+
3380
+ -- CreateIndex
3381
+ CREATE INDEX "AssemblyLine_organizationId_idx" ON "AssemblyLine"("organizationId");
3382
+
3383
+ -- CreateIndex
3384
+ CREATE INDEX "FactoryShift_factoryId_idx" ON "FactoryShift"("factoryId");
3385
+
3386
+ -- CreateIndex
3387
+ CREATE INDEX "FactoryShiftMachine_shiftId_idx" ON "FactoryShiftMachine"("shiftId");
3388
+
3389
+ -- CreateIndex
3390
+ CREATE INDEX "FactoryShiftMachine_machineId_idx" ON "FactoryShiftMachine"("machineId");
3391
+
3392
+ -- CreateIndex
3393
+ CREATE INDEX "FactoryLot_factoryId_idx" ON "FactoryLot"("factoryId");
3394
+
3395
+ -- CreateIndex
3396
+ CREATE INDEX "FactoryLot_lotNumber_idx" ON "FactoryLot"("lotNumber");
3397
+
3398
+ -- CreateIndex
3399
+ CREATE UNIQUE INDEX "FactoryLot_factoryId_lotNumber_key" ON "FactoryLot"("factoryId", "lotNumber");
3400
+
3401
+ -- CreateIndex
3402
+ CREATE INDEX "FinalProduct_externalId_idx" ON "FinalProduct"("externalId");
3403
+
3404
+ -- CreateIndex
3405
+ CREATE INDEX "FinalProduct_factoryId_idx" ON "FinalProduct"("factoryId");
3406
+
3407
+ -- CreateIndex
3408
+ CREATE UNIQUE INDEX "FinalProduct_factoryId_code_key" ON "FinalProduct"("factoryId", "code");
3409
+
3410
+ -- CreateIndex
3411
+ CREATE INDEX "FinalProductRoute_finalProductId_idx" ON "FinalProductRoute"("finalProductId");
3412
+
3413
+ -- CreateIndex
3414
+ CREATE INDEX "FinalProductRoute_finalProductId_sequence_idx" ON "FinalProductRoute"("finalProductId", "sequence");
3415
+
3416
+ -- CreateIndex
3417
+ CREATE INDEX "FinalProductMachineOperationRoute_routeId_idx" ON "FinalProductMachineOperationRoute"("routeId");
3418
+
3419
+ -- CreateIndex
3420
+ CREATE INDEX "FinalProductMachineOperationRoute_operationId_idx" ON "FinalProductMachineOperationRoute"("operationId");
3421
+
3422
+ -- CreateIndex
3423
+ CREATE INDEX "FinalProductMachineOperationRoute_routeId_sequence_idx" ON "FinalProductMachineOperationRoute"("routeId", "sequence");
3424
+
3425
+ -- CreateIndex
3426
+ CREATE INDEX "FinalProductRouteDependency_routeId_idx" ON "FinalProductRouteDependency"("routeId");
3427
+
3428
+ -- CreateIndex
3429
+ CREATE INDEX "FinalProductRouteDependency_dependsOnRouteId_idx" ON "FinalProductRouteDependency"("dependsOnRouteId");
3430
+
3431
+ -- CreateIndex
3432
+ CREATE INDEX "MachineStateLog_machineId_startTime_idx" ON "MachineStateLog"("machineId", "startTime");
3433
+
3434
+ -- CreateIndex
3435
+ CREATE INDEX "MachineStateLog_state_startTime_idx" ON "MachineStateLog"("state", "startTime");
3436
+
3437
+ -- CreateIndex
3438
+ CREATE INDEX "MachineProgram_machineId_idx" ON "MachineProgram"("machineId");
3439
+
3440
+ -- CreateIndex
3441
+ CREATE UNIQUE INDEX "MachineProgram_machineId_programNumber_key" ON "MachineProgram"("machineId", "programNumber");
3442
+
3443
+ -- CreateIndex
3444
+ CREATE INDEX "Machine_assemblyLineId_idx" ON "Machine"("assemblyLineId");
3445
+
3446
+ -- CreateIndex
3447
+ CREATE INDEX "Machine_primaryProtocol_idx" ON "Machine"("primaryProtocol");
3448
+
3449
+ -- CreateIndex
3450
+ CREATE INDEX "Machine_isConnected_idx" ON "Machine"("isConnected");
3451
+
3452
+ -- CreateIndex
3453
+ CREATE UNIQUE INDEX "MachineOperation_organizationId_operationName_key" ON "MachineOperation"("organizationId", "operationName");
3454
+
3455
+ -- CreateIndex
3456
+ CREATE INDEX "MachineEvent_machineId_idx" ON "MachineEvent"("machineId");
3457
+
3458
+ -- CreateIndex
3459
+ CREATE UNIQUE INDEX "MachineAlertSubscription_userId_machineId_key" ON "MachineAlertSubscription"("userId", "machineId");
3460
+
3461
+ -- CreateIndex
3462
+ CREATE INDEX "MaintenanceLog_machineId_idx" ON "MaintenanceLog"("machineId");
3463
+
3464
+ -- CreateIndex
3465
+ CREATE INDEX "MaintenanceLog_status_idx" ON "MaintenanceLog"("status");
3466
+
3467
+ -- CreateIndex
3468
+ CREATE INDEX "MaintenanceLog_organizationId_idx" ON "MaintenanceLog"("organizationId");
3469
+
3470
+ -- CreateIndex
3471
+ CREATE UNIQUE INDEX "MaintenanceManagerConfig_managerId_key_key" ON "MaintenanceManagerConfig"("managerId", "key");
3472
+
3473
+ -- CreateIndex
3474
+ CREATE INDEX "MaintenanceRequest_machineId_idx" ON "MaintenanceRequest"("machineId");
3475
+
3476
+ -- CreateIndex
3477
+ CREATE INDEX "MaintenanceRequest_status_idx" ON "MaintenanceRequest"("status");
3478
+
3479
+ -- CreateIndex
3480
+ CREATE INDEX "MaintenanceRequest_priority_idx" ON "MaintenanceRequest"("priority");
3481
+
3482
+ -- CreateIndex
3483
+ CREATE INDEX "MaintenanceRequestCategory_factoryId_idx" ON "MaintenanceRequestCategory"("factoryId");
3484
+
3485
+ -- CreateIndex
3486
+ CREATE UNIQUE INDEX "MaintenanceRequestCategory_factoryId_name_key" ON "MaintenanceRequestCategory"("factoryId", "name");
3487
+
3488
+ -- CreateIndex
3489
+ CREATE INDEX "MaintenanceRequestAssignment_requestId_idx" ON "MaintenanceRequestAssignment"("requestId");
3490
+
3491
+ -- CreateIndex
3492
+ CREATE INDEX "MaintenanceRequestAssignment_technicianId_idx" ON "MaintenanceRequestAssignment"("technicianId");
3493
+
3494
+ -- CreateIndex
3495
+ CREATE INDEX "MaintenanceRequestUpdate_requestId_idx" ON "MaintenanceRequestUpdate"("requestId");
3496
+
3497
+ -- CreateIndex
3498
+ CREATE INDEX "MaintenanceRequestAttachment_updateId_idx" ON "MaintenanceRequestAttachment"("updateId");
3499
+
3500
+ -- CreateIndex
3501
+ CREATE UNIQUE INDEX "MaintenanceTechnician_email_key" ON "MaintenanceTechnician"("email");
3502
+
3503
+ -- CreateIndex
3504
+ CREATE INDEX "MaintenanceTechnician_factoryId_idx" ON "MaintenanceTechnician"("factoryId");
3505
+
3506
+ -- CreateIndex
3507
+ CREATE INDEX "TechnicianSpecialization_technicianId_idx" ON "TechnicianSpecialization"("technicianId");
3508
+
3509
+ -- CreateIndex
3510
+ CREATE UNIQUE INDEX "TechnicianSpecialization_technicianId_specializationId_key" ON "TechnicianSpecialization"("technicianId", "specializationId");
3511
+
3512
+ -- CreateIndex
3513
+ CREATE UNIQUE INDEX "Operator_coreUserId_key" ON "Operator"("coreUserId");
3514
+
3515
+ -- CreateIndex
3516
+ CREATE INDEX "Operator_externalId_idx" ON "Operator"("externalId");
3517
+
3518
+ -- CreateIndex
3519
+ CREATE INDEX "Operator_coreUserId_idx" ON "Operator"("coreUserId");
3520
+
3521
+ -- CreateIndex
3522
+ CREATE INDEX "Operator_organizationId_operatorLevel_idx" ON "Operator"("organizationId", "operatorLevel");
3523
+
3524
+ -- CreateIndex
3525
+ CREATE UNIQUE INDEX "Operator_organizationId_rfid_key" ON "Operator"("organizationId", "rfid");
3526
+
3527
+ -- CreateIndex
3528
+ CREATE INDEX "OperatorTimeLog_operatorId_checkInAt_idx" ON "OperatorTimeLog"("operatorId", "checkInAt");
3529
+
3530
+ -- CreateIndex
3531
+ CREATE INDEX "OperatorTimeLog_deviceId_checkInAt_idx" ON "OperatorTimeLog"("deviceId", "checkInAt");
3532
+
3533
+ -- CreateIndex
3534
+ CREATE INDEX "OperatorTimeLog_machineId_checkInAt_idx" ON "OperatorTimeLog"("machineId", "checkInAt");
3535
+
3536
+ -- CreateIndex
3537
+ CREATE INDEX "OperatorTimeLog_checkInAt_checkOutAt_idx" ON "OperatorTimeLog"("checkInAt", "checkOutAt");
3538
+
3539
+ -- CreateIndex
3540
+ CREATE UNIQUE INDEX "Order_externalId_key" ON "Order"("externalId");
3541
+
3542
+ -- CreateIndex
3543
+ CREATE INDEX "Order_organizationId_idx" ON "Order"("organizationId");
3544
+
3545
+ -- CreateIndex
3546
+ CREATE INDEX "Order_customerId_idx" ON "Order"("customerId");
3547
+
3548
+ -- CreateIndex
3549
+ CREATE INDEX "Order_factoryId_idx" ON "Order"("factoryId");
3550
+
3551
+ -- CreateIndex
3552
+ CREATE INDEX "Order_status_idx" ON "Order"("status");
3553
+
3554
+ -- CreateIndex
3555
+ CREATE INDEX "Order_erpSource_externalId_idx" ON "Order"("erpSource", "externalId");
3556
+
3557
+ -- CreateIndex
3558
+ CREATE INDEX "OrderProduct_orderId_idx" ON "OrderProduct"("orderId");
3559
+
3560
+ -- CreateIndex
3561
+ CREATE INDEX "OrderProduct_productId_idx" ON "OrderProduct"("productId");
3562
+
3563
+ -- CreateIndex
3564
+ CREATE INDEX "OrderProduct_status_idx" ON "OrderProduct"("status");
3565
+
3566
+ -- CreateIndex
3567
+ CREATE INDEX "OrderComment_orderId_idx" ON "OrderComment"("orderId");
3568
+
3569
+ -- CreateIndex
3570
+ CREATE INDEX "OrderComment_organizationId_idx" ON "OrderComment"("organizationId");
3571
+
3572
+ -- CreateIndex
3573
+ CREATE INDEX "OrderComment_authorId_idx" ON "OrderComment"("authorId");
3574
+
3575
+ -- CreateIndex
3576
+ CREATE UNIQUE INDEX "ProductionUnit_serialNumber_key" ON "ProductionUnit"("serialNumber");
3577
+
3578
+ -- CreateIndex
3579
+ CREATE INDEX "ProductionUnit_orderProductId_idx" ON "ProductionUnit"("orderProductId");
3580
+
3581
+ -- CreateIndex
3582
+ CREATE INDEX "ProductionUnit_serialNumber_idx" ON "ProductionUnit"("serialNumber");
3583
+
3584
+ -- CreateIndex
3585
+ CREATE INDEX "ProductionUnit_status_idx" ON "ProductionUnit"("status");
3586
+
3587
+ -- CreateIndex
3588
+ CREATE INDEX "ProductionUnit_organizationId_status_idx" ON "ProductionUnit"("organizationId", "status");
3589
+
3590
+ -- CreateIndex
3591
+ CREATE INDEX "ProductionUnitIdentifier_productionUnitId_idx" ON "ProductionUnitIdentifier"("productionUnitId");
3592
+
3593
+ -- CreateIndex
3594
+ CREATE INDEX "ProductionUnitIdentifier_identifierType_identifierValue_idx" ON "ProductionUnitIdentifier"("identifierType", "identifierValue");
3595
+
3596
+ -- CreateIndex
3597
+ CREATE UNIQUE INDEX "ProductionUnitIdentifier_identifierValue_key" ON "ProductionUnitIdentifier"("identifierValue");
3598
+
3599
+ -- CreateIndex
3600
+ CREATE INDEX "ProductionUnitLog_productionUnitId_idx" ON "ProductionUnitLog"("productionUnitId");
3601
+
3602
+ -- CreateIndex
3603
+ CREATE INDEX "ProductionUnitLog_eventId_idx" ON "ProductionUnitLog"("eventId");
3604
+
3605
+ -- CreateIndex
3606
+ CREATE INDEX "ProductionUnitLog_createdAt_idx" ON "ProductionUnitLog"("createdAt");
3607
+
3608
+ -- CreateIndex
3609
+ CREATE UNIQUE INDEX "ProductionRouteStep_productionUnitId_key" ON "ProductionRouteStep"("productionUnitId");
3610
+
3611
+ -- CreateIndex
3612
+ CREATE INDEX "ProductionRouteStep_stepId_idx" ON "ProductionRouteStep"("stepId");
3613
+
3614
+ -- CreateIndex
3615
+ CREATE INDEX "ProductionRouteStep_machineId_idx" ON "ProductionRouteStep"("machineId");
3616
+
3617
+ -- CreateIndex
3618
+ CREATE INDEX "ProductionUnitQC_productionUnitId_idx" ON "ProductionUnitQC"("productionUnitId");
3619
+
3620
+ -- CreateIndex
3621
+ CREATE INDEX "ProductionUnitQC_inspectorId_idx" ON "ProductionUnitQC"("inspectorId");
3622
+
3623
+ -- CreateIndex
3624
+ CREATE INDEX "OrganizationUserEntityAccess_userId_organizationId_idx" ON "OrganizationUserEntityAccess"("userId", "organizationId");
3625
+
3626
+ -- CreateIndex
3627
+ CREATE INDEX "access_lookup_idx" ON "OrganizationUserEntityAccess"("userId", "organizationId", "factoryId", "floorId", "assemblyLineId", "machineId");
3628
+
3629
+ -- CreateIndex
3630
+ CREATE INDEX "OrganizationUserEntityAccess_factoryId_idx" ON "OrganizationUserEntityAccess"("factoryId");
3631
+
3632
+ -- CreateIndex
3633
+ CREATE INDEX "OrganizationUserEntityAccess_floorId_idx" ON "OrganizationUserEntityAccess"("floorId");
3634
+
3635
+ -- CreateIndex
3636
+ CREATE INDEX "OrganizationUserEntityAccess_assemblyLineId_idx" ON "OrganizationUserEntityAccess"("assemblyLineId");
3637
+
3638
+ -- CreateIndex
3639
+ CREATE INDEX "OrganizationUserEntityAccess_machineId_idx" ON "OrganizationUserEntityAccess"("machineId");
3640
+
3641
+ -- CreateIndex
3642
+ CREATE INDEX "OrganizationUserEntityAccess_expiresAt_idx" ON "OrganizationUserEntityAccess"("expiresAt");
3643
+
3644
+ -- CreateIndex
3645
+ CREATE INDEX "MaintenanceSpecialization_organizationId_idx" ON "MaintenanceSpecialization"("organizationId");
3646
+
3647
+ -- CreateIndex
3648
+ CREATE UNIQUE INDEX "MaintenanceSpecialization_organizationId_name_key" ON "MaintenanceSpecialization"("organizationId", "name");
3649
+
3650
+ -- CreateIndex
3651
+ CREATE INDEX "OrganizationCustomer_organizationId_idx" ON "OrganizationCustomer"("organizationId");
3652
+
3653
+ -- CreateIndex
3654
+ CREATE UNIQUE INDEX "OrganizationCustomer_organizationId_externalId_key" ON "OrganizationCustomer"("organizationId", "externalId");
3655
+
3656
+ -- CreateIndex
3657
+ CREATE INDEX "AssemblyLineType_organizationId_idx" ON "AssemblyLineType"("organizationId");
3658
+
3659
+ -- CreateIndex
3660
+ CREATE UNIQUE INDEX "AssemblyLineType_organizationId_name_key" ON "AssemblyLineType"("organizationId", "name");
3661
+
3662
+ -- CreateIndex
3663
+ CREATE INDEX "Team_organizationId_idx" ON "Team"("organizationId");
3664
+
3665
+ -- CreateIndex
3666
+ CREATE INDEX "Team_factoryId_idx" ON "Team"("factoryId");
3667
+
3668
+ -- CreateIndex
3669
+ CREATE UNIQUE INDEX "Team_organizationId_name_key" ON "Team"("organizationId", "name");
3670
+
3671
+ -- CreateIndex
3672
+ CREATE INDEX "Task_organizationId_status_createdAt_idx" ON "Task"("organizationId", "status", "createdAt" DESC);
3673
+
3674
+ -- CreateIndex
3675
+ CREATE INDEX "Task_organizationId_machineId_status_idx" ON "Task"("organizationId", "machineId", "status");
3676
+
3677
+ -- CreateIndex
3678
+ CREATE INDEX "Task_organizationId_operatorId_status_idx" ON "Task"("organizationId", "operatorId", "status");
3679
+
3680
+ -- CreateIndex
3681
+ CREATE INDEX "Task_organizationId_batchRecordId_idx" ON "Task"("organizationId", "batchRecordId");
3682
+
3683
+ -- CreateIndex
3684
+ CREATE INDEX "Task_organizationId_taskGroupId_idx" ON "Task"("organizationId", "taskGroupId");
3685
+
3686
+ -- CreateIndex
3687
+ CREATE INDEX "Task_fmeaItemId_idx" ON "Task"("fmeaItemId");
3688
+
3689
+ -- CreateIndex
3690
+ CREATE INDEX "TaskGroup_organizationId_status_idx" ON "TaskGroup"("organizationId", "status");
3691
+
3692
+ -- CreateIndex
3693
+ CREATE INDEX "TaskGroup_organizationId_orderProductId_idx" ON "TaskGroup"("organizationId", "orderProductId");
3694
+
3695
+ -- CreateIndex
3696
+ CREATE INDEX "TaskGroup_organizationId_deadline_idx" ON "TaskGroup"("organizationId", "deadline");
3697
+
3698
+ -- CreateIndex
3699
+ CREATE UNIQUE INDEX "TaskLot_taskId_lotId_key" ON "TaskLot"("taskId", "lotId");
3700
+
3701
+ -- CreateIndex
3702
+ CREATE UNIQUE INDEX "TaskGroupLot_taskGroupId_lotId_key" ON "TaskGroupLot"("taskGroupId", "lotId");
3703
+
3704
+ -- CreateIndex
3705
+ CREATE INDEX "TaskInspection_taskId_idx" ON "TaskInspection"("taskId");
3706
+
3707
+ -- CreateIndex
3708
+ CREATE INDEX "OperatorOperationCategory_factoryId_idx" ON "OperatorOperationCategory"("factoryId");
3709
+
3710
+ -- AddForeignKey
3711
+ ALTER TABLE "MachineHourlyAnalytics" ADD CONSTRAINT "MachineHourlyAnalytics_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3712
+
3713
+ -- AddForeignKey
3714
+ ALTER TABLE "MachineDailyAnalytics" ADD CONSTRAINT "MachineDailyAnalytics_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3715
+
3716
+ -- AddForeignKey
3717
+ ALTER TABLE "MachineMonthlyAnalytics" ADD CONSTRAINT "MachineMonthlyAnalytics_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3718
+
3719
+ -- AddForeignKey
3720
+ ALTER TABLE "LineHourlyAnalytics" ADD CONSTRAINT "LineHourlyAnalytics_assemblyLineId_fkey" FOREIGN KEY ("assemblyLineId") REFERENCES "AssemblyLine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3721
+
3722
+ -- AddForeignKey
3723
+ ALTER TABLE "FloorHourlyAnalytics" ADD CONSTRAINT "FloorHourlyAnalytics_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "Floor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3724
+
3725
+ -- AddForeignKey
3726
+ ALTER TABLE "FactoryHourlyAnalytics" ADD CONSTRAINT "FactoryHourlyAnalytics_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3727
+
3728
+ -- AddForeignKey
3729
+ ALTER TABLE "DeviceHourlyAnalytics" ADD CONSTRAINT "DeviceHourlyAnalytics_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3730
+
3731
+ -- AddForeignKey
3732
+ ALTER TABLE "DeviceHourlyAnalytics" ADD CONSTRAINT "DeviceHourlyAnalytics_machineHourlyAnalyticsId_fkey" FOREIGN KEY ("machineHourlyAnalyticsId") REFERENCES "MachineHourlyAnalytics"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3733
+
3734
+ -- AddForeignKey
3735
+ ALTER TABLE "SensorHourlyAnalytics" ADD CONSTRAINT "SensorHourlyAnalytics_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3736
+
3737
+ -- AddForeignKey
3738
+ ALTER TABLE "SensorHourlyAnalytics" ADD CONSTRAINT "SensorHourlyAnalytics_deviceHourlyAnalyticsId_fkey" FOREIGN KEY ("deviceHourlyAnalyticsId") REFERENCES "DeviceHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3739
+
3740
+ -- AddForeignKey
3741
+ ALTER TABLE "ProximitySensorHourlyAnalytics" ADD CONSTRAINT "ProximitySensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3742
+
3743
+ -- AddForeignKey
3744
+ ALTER TABLE "InfraredSensorHourlyAnalytics" ADD CONSTRAINT "InfraredSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3745
+
3746
+ -- AddForeignKey
3747
+ ALTER TABLE "DevicePowerSensorHourlyAnalytics" ADD CONSTRAINT "DevicePowerSensorHourlyAnalytics_deviceHourlyAnalyticsId_fkey" FOREIGN KEY ("deviceHourlyAnalyticsId") REFERENCES "DeviceHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3748
+
3749
+ -- AddForeignKey
3750
+ ALTER TABLE "ProtocolDataSourceHourlyAnalytics" ADD CONSTRAINT "ProtocolDataSourceHourlyAnalytics_dataSourceId_fkey" FOREIGN KEY ("dataSourceId") REFERENCES "ProtocolDataSource"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3751
+
3752
+ -- AddForeignKey
3753
+ ALTER TABLE "CurrentSensorHourlyAnalytics" ADD CONSTRAINT "CurrentSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3754
+
3755
+ -- AddForeignKey
3756
+ ALTER TABLE "VibrationSensorHourlyAnalytics" ADD CONSTRAINT "VibrationSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3757
+
3758
+ -- AddForeignKey
3759
+ ALTER TABLE "TemperatureSensorHourlyAnalytics" ADD CONSTRAINT "TemperatureSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3760
+
3761
+ -- AddForeignKey
3762
+ ALTER TABLE "FlowSensorHourlyAnalytics" ADD CONSTRAINT "FlowSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3763
+
3764
+ -- AddForeignKey
3765
+ ALTER TABLE "WeightSensorHourlyAnalytics" ADD CONSTRAINT "WeightSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3766
+
3767
+ -- AddForeignKey
3768
+ ALTER TABLE "PressureSensorHourlyAnalytics" ADD CONSTRAINT "PressureSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3769
+
3770
+ -- AddForeignKey
3771
+ ALTER TABLE "AuditLog" ADD CONSTRAINT "AuditLog_payloadId_fkey" FOREIGN KEY ("payloadId") REFERENCES "AuditLogPayload"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3772
+
3773
+ -- AddForeignKey
3774
+ ALTER TABLE "ChatbotMessage" ADD CONSTRAINT "ChatbotMessage_chatHistoryId_fkey" FOREIGN KEY ("chatHistoryId") REFERENCES "ChatbotHistory"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3775
+
3776
+ -- AddForeignKey
3777
+ ALTER TABLE "ChatbotKnowledgeChunk" ADD CONSTRAINT "ChatbotKnowledgeChunk_knowledgeBaseId_fkey" FOREIGN KEY ("knowledgeBaseId") REFERENCES "ChatbotKnowledgeBase"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3778
+
3779
+ -- AddForeignKey
3780
+ ALTER TABLE "FMEAItem" ADD CONSTRAINT "FMEAItem_fmeaId_fkey" FOREIGN KEY ("fmeaId") REFERENCES "FMEA"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3781
+
3782
+ -- AddForeignKey
3783
+ ALTER TABLE "ControlPlanItem" ADD CONSTRAINT "ControlPlanItem_controlPlanId_fkey" FOREIGN KEY ("controlPlanId") REFERENCES "ControlPlan"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3784
+
3785
+ -- AddForeignKey
3786
+ ALTER TABLE "MFRMaterial" ADD CONSTRAINT "MFRMaterial_mfrId_fkey" FOREIGN KEY ("mfrId") REFERENCES "MasterFormulaRecord"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3787
+
3788
+ -- AddForeignKey
3789
+ ALTER TABLE "MFRProcessStep" ADD CONSTRAINT "MFRProcessStep_mfrId_fkey" FOREIGN KEY ("mfrId") REFERENCES "MasterFormulaRecord"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3790
+
3791
+ -- AddForeignKey
3792
+ ALTER TABLE "MFRQualitySpec" ADD CONSTRAINT "MFRQualitySpec_mfrId_fkey" FOREIGN KEY ("mfrId") REFERENCES "MasterFormulaRecord"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3793
+
3794
+ -- AddForeignKey
3795
+ ALTER TABLE "MFRQualitySpec" ADD CONSTRAINT "MFRQualitySpec_processStepId_fkey" FOREIGN KEY ("processStepId") REFERENCES "MFRProcessStep"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3796
+
3797
+ -- AddForeignKey
3798
+ ALTER TABLE "BatchManufacturingRecord" ADD CONSTRAINT "BatchManufacturingRecord_mfrId_fkey" FOREIGN KEY ("mfrId") REFERENCES "MasterFormulaRecord"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3799
+
3800
+ -- AddForeignKey
3801
+ ALTER TABLE "WeighingLog" ADD CONSTRAINT "WeighingLog_batchId_fkey" FOREIGN KEY ("batchId") REFERENCES "BatchManufacturingRecord"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3802
+
3803
+ -- AddForeignKey
3804
+ ALTER TABLE "InProcessControl" ADD CONSTRAINT "InProcessControl_batchId_fkey" FOREIGN KEY ("batchId") REFERENCES "BatchManufacturingRecord"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3805
+
3806
+ -- AddForeignKey
3807
+ ALTER TABLE "Deviation" ADD CONSTRAINT "Deviation_batchId_fkey" FOREIGN KEY ("batchId") REFERENCES "BatchManufacturingRecord"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3808
+
3809
+ -- AddForeignKey
3810
+ ALTER TABLE "CAPA" ADD CONSTRAINT "CAPA_deviationId_fkey" FOREIGN KEY ("deviationId") REFERENCES "Deviation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3811
+
3812
+ -- AddForeignKey
3813
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_batchRecordId_fkey" FOREIGN KEY ("batchRecordId") REFERENCES "BatchManufacturingRecord"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3814
+
3815
+ -- AddForeignKey
3816
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_deviationId_fkey" FOREIGN KEY ("deviationId") REFERENCES "Deviation"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3817
+
3818
+ -- AddForeignKey
3819
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_capaId_fkey" FOREIGN KEY ("capaId") REFERENCES "CAPA"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3820
+
3821
+ -- AddForeignKey
3822
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_mfrId_fkey" FOREIGN KEY ("mfrId") REFERENCES "MasterFormulaRecord"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3823
+
3824
+ -- AddForeignKey
3825
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "ControlledDocument"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3826
+
3827
+ -- AddForeignKey
3828
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_equipmentQualId_fkey" FOREIGN KEY ("equipmentQualId") REFERENCES "EquipmentQualification"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3829
+
3830
+ -- AddForeignKey
3831
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_changeControlId_fkey" FOREIGN KEY ("changeControlId") REFERENCES "ChangeControl"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3832
+
3833
+ -- AddForeignKey
3834
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_labTestRequestId_fkey" FOREIGN KEY ("labTestRequestId") REFERENCES "LabTestRequest"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3835
+
3836
+ -- AddForeignKey
3837
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_dppId_fkey" FOREIGN KEY ("dppId") REFERENCES "DigitalProductPassport"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3838
+
3839
+ -- AddForeignKey
3840
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_fmeaId_fkey" FOREIGN KEY ("fmeaId") REFERENCES "FMEA"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3841
+
3842
+ -- AddForeignKey
3843
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_controlPlanId_fkey" FOREIGN KEY ("controlPlanId") REFERENCES "ControlPlan"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3844
+
3845
+ -- AddForeignKey
3846
+ ALTER TABLE "ElectronicSignature" ADD CONSTRAINT "ElectronicSignature_ppapSubmissionId_fkey" FOREIGN KEY ("ppapSubmissionId") REFERENCES "PPAPSubmission"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3847
+
3848
+ -- AddForeignKey
3849
+ ALTER TABLE "EquipmentQualification" ADD CONSTRAINT "EquipmentQualification_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3850
+
3851
+ -- AddForeignKey
3852
+ ALTER TABLE "TrainingRecord" ADD CONSTRAINT "TrainingRecord_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "ControlledDocument"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3853
+
3854
+ -- AddForeignKey
3855
+ ALTER TABLE "TestResult" ADD CONSTRAINT "TestResult_requestId_fkey" FOREIGN KEY ("requestId") REFERENCES "LabTestRequest"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3856
+
3857
+ -- AddForeignKey
3858
+ ALTER TABLE "SupplyChainNode" ADD CONSTRAINT "SupplyChainNode_dppId_fkey" FOREIGN KEY ("dppId") REFERENCES "DigitalProductPassport"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3859
+
3860
+ -- AddForeignKey
3861
+ ALTER TABLE "SupplyChainEdge" ADD CONSTRAINT "SupplyChainEdge_dppId_fkey" FOREIGN KEY ("dppId") REFERENCES "DigitalProductPassport"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3862
+
3863
+ -- AddForeignKey
3864
+ ALTER TABLE "SupplyChainEdge" ADD CONSTRAINT "SupplyChainEdge_fromNodeId_fkey" FOREIGN KEY ("fromNodeId") REFERENCES "SupplyChainNode"("nodeId") ON DELETE CASCADE ON UPDATE CASCADE;
3865
+
3866
+ -- AddForeignKey
3867
+ ALTER TABLE "SupplyChainEdge" ADD CONSTRAINT "SupplyChainEdge_toNodeId_fkey" FOREIGN KEY ("toNodeId") REFERENCES "SupplyChainNode"("nodeId") ON DELETE CASCADE ON UPDATE CASCADE;
3868
+
3869
+ -- AddForeignKey
3870
+ ALTER TABLE "ProductCertificate" ADD CONSTRAINT "ProductCertificate_dppId_fkey" FOREIGN KEY ("dppId") REFERENCES "DigitalProductPassport"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3871
+
3872
+ -- AddForeignKey
3873
+ ALTER TABLE "TextileQRScan" ADD CONSTRAINT "TextileQRScan_dppId_fkey" FOREIGN KEY ("dppId") REFERENCES "DigitalProductPassport"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3874
+
3875
+ -- AddForeignKey
3876
+ ALTER TABLE "Gateway" ADD CONSTRAINT "Gateway_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "Floor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3877
+
3878
+ -- AddForeignKey
3879
+ ALTER TABLE "GatewayApiToken" ADD CONSTRAINT "GatewayApiToken_gatewayId_fkey" FOREIGN KEY ("gatewayId") REFERENCES "Gateway"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3880
+
3881
+ -- AddForeignKey
3882
+ ALTER TABLE "Device" ADD CONSTRAINT "Device_gatewayId_fkey" FOREIGN KEY ("gatewayId") REFERENCES "Gateway"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3883
+
3884
+ -- AddForeignKey
3885
+ ALTER TABLE "Device" ADD CONSTRAINT "Device_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3886
+
3887
+ -- AddForeignKey
3888
+ ALTER TABLE "Device" ADD CONSTRAINT "Device_assemblyLineId_fkey" FOREIGN KEY ("assemblyLineId") REFERENCES "AssemblyLine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3889
+
3890
+ -- AddForeignKey
3891
+ ALTER TABLE "Device" ADD CONSTRAINT "Device_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "Floor"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3892
+
3893
+ -- AddForeignKey
3894
+ ALTER TABLE "Device" ADD CONSTRAINT "Device_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3895
+
3896
+ -- AddForeignKey
3897
+ ALTER TABLE "Sensor" ADD CONSTRAINT "Sensor_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3898
+
3899
+ -- AddForeignKey
3900
+ ALTER TABLE "Sensor" ADD CONSTRAINT "Sensor_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3901
+
3902
+ -- AddForeignKey
3903
+ ALTER TABLE "Sensor" ADD CONSTRAINT "Sensor_assemblyLineId_fkey" FOREIGN KEY ("assemblyLineId") REFERENCES "AssemblyLine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3904
+
3905
+ -- AddForeignKey
3906
+ ALTER TABLE "Sensor" ADD CONSTRAINT "Sensor_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "Floor"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3907
+
3908
+ -- AddForeignKey
3909
+ ALTER TABLE "Sensor" ADD CONSTRAINT "Sensor_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3910
+
3911
+ -- AddForeignKey
3912
+ ALTER TABLE "ProximitySensorConfig" ADD CONSTRAINT "ProximitySensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3913
+
3914
+ -- AddForeignKey
3915
+ ALTER TABLE "CurrentSensorConfig" ADD CONSTRAINT "CurrentSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3916
+
3917
+ -- AddForeignKey
3918
+ ALTER TABLE "InfraredSensorConfig" ADD CONSTRAINT "InfraredSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3919
+
3920
+ -- AddForeignKey
3921
+ ALTER TABLE "MachineDeviceAssignment" ADD CONSTRAINT "MachineDeviceAssignment_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3922
+
3923
+ -- AddForeignKey
3924
+ ALTER TABLE "MachineDeviceAssignment" ADD CONSTRAINT "MachineDeviceAssignment_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3925
+
3926
+ -- AddForeignKey
3927
+ ALTER TABLE "VibrationSensorConfig" ADD CONSTRAINT "VibrationSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3928
+
3929
+ -- AddForeignKey
3930
+ ALTER TABLE "TemperatureSensorConfig" ADD CONSTRAINT "TemperatureSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3931
+
3932
+ -- AddForeignKey
3933
+ ALTER TABLE "FlowSensorConfig" ADD CONSTRAINT "FlowSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3934
+
3935
+ -- AddForeignKey
3936
+ ALTER TABLE "WeightSensorConfig" ADD CONSTRAINT "WeightSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3937
+
3938
+ -- AddForeignKey
3939
+ ALTER TABLE "PressureSensorConfig" ADD CONSTRAINT "PressureSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3940
+
3941
+ -- AddForeignKey
3942
+ ALTER TABLE "SensorLog" ADD CONSTRAINT "SensorLog_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3943
+
3944
+ -- AddForeignKey
3945
+ ALTER TABLE "RFIDSensorLog" ADD CONSTRAINT "RFIDSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3946
+
3947
+ -- AddForeignKey
3948
+ ALTER TABLE "RFIDSensorLog" ADD CONSTRAINT "RFIDSensorLog_operatorId_fkey" FOREIGN KEY ("operatorId") REFERENCES "Operator"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3949
+
3950
+ -- AddForeignKey
3951
+ ALTER TABLE "ProximitySensorLog" ADD CONSTRAINT "ProximitySensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3952
+
3953
+ -- AddForeignKey
3954
+ ALTER TABLE "InfraredSensorLog" ADD CONSTRAINT "InfraredSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3955
+
3956
+ -- AddForeignKey
3957
+ ALTER TABLE "CurrentSensorLog" ADD CONSTRAINT "CurrentSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3958
+
3959
+ -- AddForeignKey
3960
+ ALTER TABLE "DevicePowerSensorLog" ADD CONSTRAINT "DevicePowerSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3961
+
3962
+ -- AddForeignKey
3963
+ ALTER TABLE "VibrationSensorLog" ADD CONSTRAINT "VibrationSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3964
+
3965
+ -- AddForeignKey
3966
+ ALTER TABLE "TemperatureSensorLog" ADD CONSTRAINT "TemperatureSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3967
+
3968
+ -- AddForeignKey
3969
+ ALTER TABLE "FlowSensorLog" ADD CONSTRAINT "FlowSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3970
+
3971
+ -- AddForeignKey
3972
+ ALTER TABLE "WeightSensorLog" ADD CONSTRAINT "WeightSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3973
+
3974
+ -- AddForeignKey
3975
+ ALTER TABLE "PressureSensorLog" ADD CONSTRAINT "PressureSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
3976
+
3977
+ -- AddForeignKey
3978
+ ALTER TABLE "ProtocolDataSource" ADD CONSTRAINT "ProtocolDataSource_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "Sensor"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3979
+
3980
+ -- AddForeignKey
3981
+ ALTER TABLE "ProtocolDataSource" ADD CONSTRAINT "ProtocolDataSource_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3982
+
3983
+ -- AddForeignKey
3984
+ ALTER TABLE "ProtocolDataSource" ADD CONSTRAINT "ProtocolDataSource_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3985
+
3986
+ -- AddForeignKey
3987
+ ALTER TABLE "ProtocolDataLog" ADD CONSTRAINT "ProtocolDataLog_dataSourceId_fkey" FOREIGN KEY ("dataSourceId") REFERENCES "ProtocolDataSource"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3988
+
3989
+ -- AddForeignKey
3990
+ ALTER TABLE "DeviceConnection" ADD CONSTRAINT "DeviceConnection_parentDeviceId_fkey" FOREIGN KEY ("parentDeviceId") REFERENCES "Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3991
+
3992
+ -- AddForeignKey
3993
+ ALTER TABLE "Floor" ADD CONSTRAINT "Floor_floorTypeId_fkey" FOREIGN KEY ("floorTypeId") REFERENCES "FloorType"("id") ON DELETE SET NULL ON UPDATE CASCADE;
3994
+
3995
+ -- AddForeignKey
3996
+ ALTER TABLE "Floor" ADD CONSTRAINT "Floor_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
3997
+
3998
+ -- AddForeignKey
3999
+ ALTER TABLE "FloorSetting" ADD CONSTRAINT "FloorSetting_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "Floor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4000
+
4001
+ -- AddForeignKey
4002
+ ALTER TABLE "AssemblyLine" ADD CONSTRAINT "AssemblyLine_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "Floor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4003
+
4004
+ -- AddForeignKey
4005
+ ALTER TABLE "FactoryShift" ADD CONSTRAINT "FactoryShift_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4006
+
4007
+ -- AddForeignKey
4008
+ ALTER TABLE "FactoryShiftMachine" ADD CONSTRAINT "FactoryShiftMachine_shiftId_fkey" FOREIGN KEY ("shiftId") REFERENCES "FactoryShift"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4009
+
4010
+ -- AddForeignKey
4011
+ ALTER TABLE "FactoryShiftMachine" ADD CONSTRAINT "FactoryShiftMachine_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4012
+
4013
+ -- AddForeignKey
4014
+ ALTER TABLE "FactoryLot" ADD CONSTRAINT "FactoryLot_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4015
+
4016
+ -- AddForeignKey
4017
+ ALTER TABLE "FinalProduct" ADD CONSTRAINT "FinalProduct_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE CASCADE ON UPDATE CASCADE;
4018
+
4019
+ -- AddForeignKey
4020
+ ALTER TABLE "FinalProductRoute" ADD CONSTRAINT "FinalProductRoute_finalProductId_fkey" FOREIGN KEY ("finalProductId") REFERENCES "FinalProduct"("id") ON DELETE CASCADE ON UPDATE CASCADE;
4021
+
4022
+ -- AddForeignKey
4023
+ ALTER TABLE "FinalProductMachineOperationRoute" ADD CONSTRAINT "FinalProductMachineOperationRoute_routeId_fkey" FOREIGN KEY ("routeId") REFERENCES "FinalProductRoute"("id") ON DELETE CASCADE ON UPDATE CASCADE;
4024
+
4025
+ -- AddForeignKey
4026
+ ALTER TABLE "FinalProductMachineOperationRoute" ADD CONSTRAINT "FinalProductMachineOperationRoute_operationId_fkey" FOREIGN KEY ("operationId") REFERENCES "MachineOperation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
4027
+
4028
+ -- AddForeignKey
4029
+ ALTER TABLE "FinalProductRouteDependency" ADD CONSTRAINT "FinalProductRouteDependency_routeId_fkey" FOREIGN KEY ("routeId") REFERENCES "FinalProductRoute"("id") ON DELETE CASCADE ON UPDATE CASCADE;
4030
+
4031
+ -- AddForeignKey
4032
+ ALTER TABLE "FinalProductRouteDependency" ADD CONSTRAINT "FinalProductRouteDependency_dependsOnRouteId_fkey" FOREIGN KEY ("dependsOnRouteId") REFERENCES "FinalProductRoute"("id") ON DELETE CASCADE ON UPDATE CASCADE;
4033
+
4034
+ -- AddForeignKey
4035
+ ALTER TABLE "MachineStateLog" ADD CONSTRAINT "MachineStateLog_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4036
+
4037
+ -- AddForeignKey
4038
+ ALTER TABLE "MachineProgram" ADD CONSTRAINT "MachineProgram_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4039
+
4040
+ -- AddForeignKey
4041
+ ALTER TABLE "Machine" ADD CONSTRAINT "Machine_currentProgramId_fkey" FOREIGN KEY ("currentProgramId") REFERENCES "MachineProgram"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4042
+
4043
+ -- AddForeignKey
4044
+ ALTER TABLE "Machine" ADD CONSTRAINT "Machine_assemblyLineId_fkey" FOREIGN KEY ("assemblyLineId") REFERENCES "AssemblyLine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4045
+
4046
+ -- AddForeignKey
4047
+ ALTER TABLE "Machine" ADD CONSTRAINT "Machine_machineOperationId_fkey" FOREIGN KEY ("machineOperationId") REFERENCES "MachineOperation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4048
+
4049
+ -- AddForeignKey
4050
+ ALTER TABLE "MachineEvent" ADD CONSTRAINT "MachineEvent_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4051
+
4052
+ -- AddForeignKey
4053
+ ALTER TABLE "MachineAlert" ADD CONSTRAINT "MachineAlert_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4054
+
4055
+ -- AddForeignKey
4056
+ ALTER TABLE "MachineAlertSubscription" ADD CONSTRAINT "MachineAlertSubscription_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4057
+
4058
+ -- AddForeignKey
4059
+ ALTER TABLE "MaintenanceLog" ADD CONSTRAINT "MaintenanceLog_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4060
+
4061
+ -- AddForeignKey
4062
+ ALTER TABLE "MaintenanceRequest" ADD CONSTRAINT "MaintenanceRequest_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4063
+
4064
+ -- AddForeignKey
4065
+ ALTER TABLE "MaintenanceRequest" ADD CONSTRAINT "MaintenanceRequest_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "MaintenanceRequestCategory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4066
+
4067
+ -- AddForeignKey
4068
+ ALTER TABLE "MaintenanceRequestCategory" ADD CONSTRAINT "MaintenanceRequestCategory_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4069
+
4070
+ -- AddForeignKey
4071
+ ALTER TABLE "MaintenanceRequestAssignment" ADD CONSTRAINT "MaintenanceRequestAssignment_requestId_fkey" FOREIGN KEY ("requestId") REFERENCES "MaintenanceRequest"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4072
+
4073
+ -- AddForeignKey
4074
+ ALTER TABLE "MaintenanceRequestAssignment" ADD CONSTRAINT "MaintenanceRequestAssignment_technicianId_fkey" FOREIGN KEY ("technicianId") REFERENCES "MaintenanceTechnician"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4075
+
4076
+ -- AddForeignKey
4077
+ ALTER TABLE "MaintenanceRequestUpdate" ADD CONSTRAINT "MaintenanceRequestUpdate_requestId_fkey" FOREIGN KEY ("requestId") REFERENCES "MaintenanceRequest"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4078
+
4079
+ -- AddForeignKey
4080
+ ALTER TABLE "MaintenanceRequestAttachment" ADD CONSTRAINT "MaintenanceRequestAttachment_updateId_fkey" FOREIGN KEY ("updateId") REFERENCES "MaintenanceRequestUpdate"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4081
+
4082
+ -- AddForeignKey
4083
+ ALTER TABLE "MaintenanceTechnician" ADD CONSTRAINT "MaintenanceTechnician_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4084
+
4085
+ -- AddForeignKey
4086
+ ALTER TABLE "TechnicianSpecialization" ADD CONSTRAINT "TechnicianSpecialization_technicianId_fkey" FOREIGN KEY ("technicianId") REFERENCES "MaintenanceTechnician"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4087
+
4088
+ -- AddForeignKey
4089
+ ALTER TABLE "Operator" ADD CONSTRAINT "Operator_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4090
+
4091
+ -- AddForeignKey
4092
+ ALTER TABLE "OperatorTimeLog" ADD CONSTRAINT "OperatorTimeLog_operatorId_fkey" FOREIGN KEY ("operatorId") REFERENCES "Operator"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4093
+
4094
+ -- AddForeignKey
4095
+ ALTER TABLE "OperatorTimeLog" ADD CONSTRAINT "OperatorTimeLog_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4096
+
4097
+ -- AddForeignKey
4098
+ ALTER TABLE "OperatorTimeLog" ADD CONSTRAINT "OperatorTimeLog_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4099
+
4100
+ -- AddForeignKey
4101
+ ALTER TABLE "Order" ADD CONSTRAINT "Order_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4102
+
4103
+ -- AddForeignKey
4104
+ ALTER TABLE "OrderProduct" ADD CONSTRAINT "OrderProduct_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4105
+
4106
+ -- AddForeignKey
4107
+ ALTER TABLE "OrderProduct" ADD CONSTRAINT "OrderProduct_productId_fkey" FOREIGN KEY ("productId") REFERENCES "FinalProduct"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4108
+
4109
+ -- AddForeignKey
4110
+ ALTER TABLE "OrderComment" ADD CONSTRAINT "OrderComment_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4111
+
4112
+ -- AddForeignKey
4113
+ ALTER TABLE "ProductionUnit" ADD CONSTRAINT "ProductionUnit_orderProductId_fkey" FOREIGN KEY ("orderProductId") REFERENCES "OrderProduct"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4114
+
4115
+ -- AddForeignKey
4116
+ ALTER TABLE "ProductionUnitIdentifier" ADD CONSTRAINT "ProductionUnitIdentifier_productionUnitId_fkey" FOREIGN KEY ("productionUnitId") REFERENCES "ProductionUnit"("id") ON DELETE CASCADE ON UPDATE CASCADE;
4117
+
4118
+ -- AddForeignKey
4119
+ ALTER TABLE "ProductionUnitLog" ADD CONSTRAINT "ProductionUnitLog_productionUnitId_fkey" FOREIGN KEY ("productionUnitId") REFERENCES "ProductionUnit"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4120
+
4121
+ -- AddForeignKey
4122
+ ALTER TABLE "ProductionUnitLog" ADD CONSTRAINT "ProductionUnitLog_stepId_fkey" FOREIGN KEY ("stepId") REFERENCES "ProductionRouteStep"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4123
+
4124
+ -- AddForeignKey
4125
+ ALTER TABLE "ProductionRouteStep" ADD CONSTRAINT "ProductionRouteStep_productionUnitId_fkey" FOREIGN KEY ("productionUnitId") REFERENCES "ProductionUnit"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4126
+
4127
+ -- AddForeignKey
4128
+ ALTER TABLE "ProductionUnitQC" ADD CONSTRAINT "ProductionUnitQC_productionUnitId_fkey" FOREIGN KEY ("productionUnitId") REFERENCES "ProductionUnit"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4129
+
4130
+ -- AddForeignKey
4131
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_operatorId_fkey" FOREIGN KEY ("operatorId") REFERENCES "Operator"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4132
+
4133
+ -- AddForeignKey
4134
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4135
+
4136
+ -- AddForeignKey
4137
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "Machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4138
+
4139
+ -- AddForeignKey
4140
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_taskGroupId_fkey" FOREIGN KEY ("taskGroupId") REFERENCES "TaskGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4141
+
4142
+ -- AddForeignKey
4143
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_shiftId_fkey" FOREIGN KEY ("shiftId") REFERENCES "FactoryShift"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4144
+
4145
+ -- AddForeignKey
4146
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4147
+
4148
+ -- AddForeignKey
4149
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_operatorOpCategoryId_fkey" FOREIGN KEY ("operatorOpCategoryId") REFERENCES "OperatorOperationCategory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4150
+
4151
+ -- AddForeignKey
4152
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_machineOperationId_fkey" FOREIGN KEY ("machineOperationId") REFERENCES "MachineOperation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4153
+
4154
+ -- AddForeignKey
4155
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_fmeaItemId_fkey" FOREIGN KEY ("fmeaItemId") REFERENCES "FMEAItem"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4156
+
4157
+ -- AddForeignKey
4158
+ ALTER TABLE "Task" ADD CONSTRAINT "Task_reworkOfTaskId_fkey" FOREIGN KEY ("reworkOfTaskId") REFERENCES "Task"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4159
+
4160
+ -- AddForeignKey
4161
+ ALTER TABLE "TaskGroup" ADD CONSTRAINT "TaskGroup_reworkOfTaskGroupId_fkey" FOREIGN KEY ("reworkOfTaskGroupId") REFERENCES "TaskGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4162
+
4163
+ -- AddForeignKey
4164
+ ALTER TABLE "TaskGroup" ADD CONSTRAINT "TaskGroup_productRouteId_fkey" FOREIGN KEY ("productRouteId") REFERENCES "FinalProductRoute"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4165
+
4166
+ -- AddForeignKey
4167
+ ALTER TABLE "TaskGroup" ADD CONSTRAINT "TaskGroup_orderProductId_fkey" FOREIGN KEY ("orderProductId") REFERENCES "OrderProduct"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4168
+
4169
+ -- AddForeignKey
4170
+ ALTER TABLE "TaskGroup" ADD CONSTRAINT "TaskGroup_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
4171
+
4172
+ -- AddForeignKey
4173
+ ALTER TABLE "TaskLot" ADD CONSTRAINT "TaskLot_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4174
+
4175
+ -- AddForeignKey
4176
+ ALTER TABLE "TaskLot" ADD CONSTRAINT "TaskLot_lotId_fkey" FOREIGN KEY ("lotId") REFERENCES "FactoryLot"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4177
+
4178
+ -- AddForeignKey
4179
+ ALTER TABLE "TaskGroupLot" ADD CONSTRAINT "TaskGroupLot_taskGroupId_fkey" FOREIGN KEY ("taskGroupId") REFERENCES "TaskGroup"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4180
+
4181
+ -- AddForeignKey
4182
+ ALTER TABLE "TaskGroupLot" ADD CONSTRAINT "TaskGroupLot_lotId_fkey" FOREIGN KEY ("lotId") REFERENCES "FactoryLot"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4183
+
4184
+ -- AddForeignKey
4185
+ ALTER TABLE "TaskInspection" ADD CONSTRAINT "TaskInspection_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4186
+
4187
+ -- AddForeignKey
4188
+ ALTER TABLE "TaskComment" ADD CONSTRAINT "TaskComment_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
4189
+
4190
+ -- AddForeignKey
4191
+ ALTER TABLE "OperatorOperationCategory" ADD CONSTRAINT "OperatorOperationCategory_factoryId_fkey" FOREIGN KEY ("factoryId") REFERENCES "Factory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;