@machynx/data-db 1.0.5 → 1.0.6

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.
@@ -1,3 +1,6 @@
1
+ -- Enable pgvector extension
2
+ CREATE EXTENSION IF NOT EXISTS vector;
3
+
1
4
  -- CreateSchema
2
5
  CREATE SCHEMA IF NOT EXISTS "analytics";
3
6
 
@@ -37,11 +40,23 @@ CREATE SCHEMA IF NOT EXISTS "production_tracking";
37
40
  -- CreateSchema
38
41
  CREATE SCHEMA IF NOT EXISTS "tasks";
39
42
 
43
+ -- CreateExtension
44
+ CREATE EXTENSION IF NOT EXISTS "vector";
45
+
46
+ -- CreateEnum
47
+ CREATE TYPE "analytics"."ProductionMeasurementUnit" AS ENUM ('PIECE', 'PART', 'UNIT', 'ASSEMBLY', 'BATCH', 'LOT', 'KG', 'LITERS', 'METERS', 'GRAMS', 'TONS', 'HOURS', 'CYCLES');
48
+
49
+ -- CreateEnum
50
+ CREATE TYPE "chatbot"."ChatbotMessageSender" AS ENUM ('USER', 'BOT', 'SYSTEM', 'DEVICE');
51
+
52
+ -- CreateEnum
53
+ CREATE TYPE "chatbot"."EmbeddingStatus" AS ENUM ('PENDING', 'PROCESSING', 'COMPLETED', 'FAILED');
54
+
40
55
  -- CreateEnum
41
- CREATE TYPE "chatbot"."ChatbotMessageSender" AS ENUM ('USER', 'BOT');
56
+ CREATE TYPE "chatbot"."DocumentType" AS ENUM ('MANUAL', 'SOP', 'TROUBLESHOOTING_GUIDE', 'MACHINE_SPEC', 'SAFETY_PROTOCOL', 'TRAINING_MATERIAL', 'ERROR_CODE_REFERENCE', 'MAINTENANCE_LOG', 'PAST_CHAT', 'OTHER');
42
57
 
43
58
  -- CreateEnum
44
- CREATE TYPE "device"."SensorType" AS ENUM ('PROXIMITY', 'INFRARED', 'RFID', 'CURRENT');
59
+ CREATE TYPE "device"."SensorType" AS ENUM ('PROXIMITY', 'INFRARED', 'RFID', 'CURRENT', 'VIBRATION', 'TEMPERATURE', 'PRESSURE', 'FLOW', 'WEIGHT', 'LEVEL', 'PH', 'HUMIDITY');
45
60
 
46
61
  -- CreateEnum
47
62
  CREATE TYPE "device"."RFIDTapType" AS ENUM ('CHECKIN', 'CHECKOUT');
@@ -49,6 +64,15 @@ CREATE TYPE "device"."RFIDTapType" AS ENUM ('CHECKIN', 'CHECKOUT');
49
64
  -- CreateEnum
50
65
  CREATE TYPE "device"."DevicePowerState" AS ENUM ('POWER_ON', 'POWER_OFF');
51
66
 
67
+ -- CreateEnum
68
+ CREATE TYPE "device"."DeviceType" AS ENUM ('SENSOR_MODULE', 'GATEWAY', 'PLC', 'SCADA_RTU', 'MODBUS_GATEWAY', 'MQTT_BRIDGE', 'PROTOCOL_CONVERTER', 'HYBRID');
69
+
70
+ -- CreateEnum
71
+ CREATE TYPE "device"."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');
72
+
73
+ -- CreateEnum
74
+ CREATE TYPE "device"."DataSourceType" AS ENUM ('PHYSICAL_SENSOR', 'MODBUS_REGISTER', 'MODBUS_COIL', 'MQTT_TOPIC', 'OPC_UA_NODE', 'PLC_TAG', 'SCADA_POINT', 'REST_ENDPOINT');
75
+
52
76
  -- CreateEnum
53
77
  CREATE TYPE "factory"."WeekDay" AS ENUM ('SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY');
54
78
 
@@ -56,7 +80,7 @@ CREATE TYPE "factory"."WeekDay" AS ENUM ('SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESD
56
80
  CREATE TYPE "factory"."AccessLevel" AS ENUM ('PUBLIC', 'PRIVATE');
57
81
 
58
82
  -- CreateEnum
59
- CREATE TYPE "machine"."ProductionSIUnit" AS ENUM ('COUNT', 'WEIGHT', 'LITERS');
83
+ CREATE TYPE "machine"."ProductionSIUnit" AS ENUM ('COUNT', 'WEIGHT', 'LITERS', 'METERS', 'BATCHES', 'HOURS');
60
84
 
61
85
  -- CreateEnum
62
86
  CREATE TYPE "machine"."MachineAlertSeverity" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL');
@@ -67,6 +91,12 @@ CREATE TYPE "machine"."EventCategory" AS ENUM ('GENERAL', 'MEDIUM', 'OPERATION',
67
91
  -- CreateEnum
68
92
  CREATE TYPE "machine"."MachineTrackingType" AS ENUM ('MANUAL', 'AUTOMATED');
69
93
 
94
+ -- CreateEnum
95
+ CREATE TYPE "machine"."MachineState" AS ENUM ('UNKNOWN', 'RUNNING', 'IDLE', 'STOPPED', 'ALARM', 'SETUP', 'MAINTENANCE');
96
+
97
+ -- CreateEnum
98
+ CREATE TYPE "machine"."MachineIndustryType" AS ENUM ('GARMENT', 'CNC_MACHINING', 'FOOD_BEVERAGE', 'PHARMACEUTICAL', 'AUTOMOTIVE', 'PAPER', 'PLASTICS', 'GENERAL');
99
+
70
100
  -- CreateEnum
71
101
  CREATE TYPE "maintenance"."MaintenanceLogStatus" AS ENUM ('OPEN', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED');
72
102
 
@@ -76,6 +106,9 @@ CREATE TYPE "maintenance"."MaintenanceRequestStatus" AS ENUM ('NEW', 'APPROVED',
76
106
  -- CreateEnum
77
107
  CREATE TYPE "maintenance"."MaintenanceRequestPriority" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL');
78
108
 
109
+ -- CreateEnum
110
+ CREATE TYPE "operator"."OperatorLevel" AS ENUM ('FLOOR_WORKER', 'TEAM_LEAD', 'SUPERVISOR', 'QC_INSPECTOR', 'MAINTENANCE_TECH');
111
+
79
112
  -- CreateEnum
80
113
  CREATE TYPE "order"."OrderStatus" AS ENUM ('NEW', 'CONFIRMED', 'IN_PROGRESS', 'ON_TRACK', 'DELAYED', 'AT_RISK', 'COMPLETED', 'CANCELED');
81
114
 
@@ -88,6 +121,9 @@ CREATE TYPE "order"."OrderProductStatus" AS ENUM ('NEW', 'IN_PROGRESS', 'ON_TRAC
88
121
  -- CreateEnum
89
122
  CREATE TYPE "production_tracking"."ProductionUnitStatus" AS ENUM ('IN_PRODUCTION', 'IN_QA', 'REWORK', 'COMPLETE', 'REJECTED', 'SHIPPED');
90
123
 
124
+ -- CreateEnum
125
+ CREATE TYPE "production_tracking"."IdentifierType" AS ENUM ('RFID', 'BARCODE', 'QR_CODE', 'MANUAL', 'NFC');
126
+
91
127
  -- CreateEnum
92
128
  CREATE TYPE "tasks"."TaskStatus" AS ENUM ('NEW', 'IN_PROGRESS', 'COMPLETED', 'CANCELED', 'OVERDUE', 'INCOMPLETE');
93
129
 
@@ -99,14 +135,35 @@ CREATE TABLE "analytics"."MachineHourlyAnalytics" (
99
135
  "id" BIGSERIAL NOT NULL,
100
136
  "machineId" INTEGER NOT NULL,
101
137
  "organizationId" INTEGER NOT NULL,
102
- "totalProductionCount" INTEGER,
138
+ "totalProduction" DOUBLE PRECISION,
139
+ "productionUnit" "analytics"."ProductionMeasurementUnit",
140
+ "passedProduction" DOUBLE PRECISION,
141
+ "rejectedProduction" DOUBLE PRECISION,
142
+ "reworkProduction" DOUBLE PRECISION,
143
+ "wasteProduction" DOUBLE PRECISION,
103
144
  "efficiency" DOUBLE PRECISION,
104
145
  "utilization" DOUBLE PRECISION,
146
+ "availability" DOUBLE PRECISION,
147
+ "performance" DOUBLE PRECISION,
148
+ "quality" DOUBLE PRECISION,
149
+ "oee" DOUBLE PRECISION,
105
150
  "totalPowerConsumed" DOUBLE PRECISION,
151
+ "runningTime" DOUBLE PRECISION,
106
152
  "idleTime" DOUBLE PRECISION,
153
+ "stoppedTime" DOUBLE PRECISION,
154
+ "alarmTime" DOUBLE PRECISION,
155
+ "setupTime" DOUBLE PRECISION,
156
+ "maintenanceTime" DOUBLE PRECISION,
107
157
  "nonWorkingTime" DOUBLE PRECISION,
108
158
  "upTime" DOUBLE PRECISION,
109
159
  "productiveTime" DOUBLE PRECISION,
160
+ "cycleCount" INTEGER,
161
+ "avgCycleTime" DOUBLE PRECISION,
162
+ "minCycleTime" DOUBLE PRECISION,
163
+ "maxCycleTime" DOUBLE PRECISION,
164
+ "expectedYield" DOUBLE PRECISION,
165
+ "actualYield" DOUBLE PRECISION,
166
+ "lossPercentage" DOUBLE PRECISION,
110
167
  "startDateTime" TIMESTAMP(3),
111
168
  "endDateTime" TIMESTAMP(3),
112
169
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -120,7 +177,12 @@ CREATE TABLE "analytics"."MachineDailyAnalytics" (
120
177
  "id" BIGSERIAL NOT NULL,
121
178
  "machineId" INTEGER NOT NULL,
122
179
  "organizationId" INTEGER NOT NULL,
123
- "totalProductionCount" INTEGER,
180
+ "totalProduction" DOUBLE PRECISION,
181
+ "productionUnit" "analytics"."ProductionMeasurementUnit",
182
+ "passedProduction" DOUBLE PRECISION,
183
+ "rejectedProduction" DOUBLE PRECISION,
184
+ "reworkProduction" DOUBLE PRECISION,
185
+ "wasteProduction" DOUBLE PRECISION,
124
186
  "avgEfficiency" DOUBLE PRECISION,
125
187
  "avgUtilization" DOUBLE PRECISION,
126
188
  "totalPowerConsumed" DOUBLE PRECISION,
@@ -137,7 +199,12 @@ CREATE TABLE "analytics"."MachineMonthlyAnalytics" (
137
199
  "id" BIGSERIAL NOT NULL,
138
200
  "machineId" INTEGER NOT NULL,
139
201
  "organizationId" INTEGER NOT NULL,
140
- "totalProductionCount" BIGINT,
202
+ "totalProduction" DOUBLE PRECISION,
203
+ "productionUnit" "analytics"."ProductionMeasurementUnit",
204
+ "passedProduction" DOUBLE PRECISION,
205
+ "rejectedProduction" DOUBLE PRECISION,
206
+ "reworkProduction" DOUBLE PRECISION,
207
+ "wasteProduction" DOUBLE PRECISION,
141
208
  "avgEfficiency" DOUBLE PRECISION,
142
209
  "totalPowerConsumed" DOUBLE PRECISION,
143
210
  "month" INTEGER NOT NULL,
@@ -155,7 +222,8 @@ CREATE TABLE "analytics"."LineHourlyAnalytics" (
155
222
  "organizationId" INTEGER NOT NULL,
156
223
  "averageEfficiency" DOUBLE PRECISION,
157
224
  "averageUtilization" DOUBLE PRECISION,
158
- "totalProductionCount" INTEGER,
225
+ "totalProduction" DOUBLE PRECISION,
226
+ "productionUnit" "analytics"."ProductionMeasurementUnit",
159
227
  "startDateTime" TIMESTAMP(3),
160
228
  "endDateTime" TIMESTAMP(3),
161
229
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -170,7 +238,8 @@ CREATE TABLE "analytics"."FloorHourlyAnalytics" (
170
238
  "floorId" INTEGER NOT NULL,
171
239
  "organizationId" INTEGER NOT NULL,
172
240
  "averageEfficiency" DOUBLE PRECISION,
173
- "totalProductionCount" INTEGER,
241
+ "totalProduction" DOUBLE PRECISION,
242
+ "productionUnit" "analytics"."ProductionMeasurementUnit",
174
243
  "startDateTime" TIMESTAMP(3),
175
244
  "endDateTime" TIMESTAMP(3),
176
245
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -185,7 +254,8 @@ CREATE TABLE "analytics"."FactoryHourlyAnalytics" (
185
254
  "factoryId" INTEGER NOT NULL,
186
255
  "organizationId" INTEGER NOT NULL,
187
256
  "averageEfficiency" DOUBLE PRECISION,
188
- "totalProductionCount" INTEGER,
257
+ "totalProduction" DOUBLE PRECISION,
258
+ "productionUnit" "analytics"."ProductionMeasurementUnit",
189
259
  "startDateTime" TIMESTAMP(3),
190
260
  "endDateTime" TIMESTAMP(3),
191
261
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -268,6 +338,126 @@ CREATE TABLE "analytics"."DevicePowerSensorHourlyAnalytics" (
268
338
  CONSTRAINT "DevicePowerSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
269
339
  );
270
340
 
341
+ -- CreateTable
342
+ CREATE TABLE "analytics"."ProtocolDataSourceHourlyAnalytics" (
343
+ "id" BIGSERIAL NOT NULL,
344
+ "dataSourceId" INTEGER NOT NULL,
345
+ "totalSamples" INTEGER,
346
+ "successfulReads" INTEGER,
347
+ "failedReads" INTEGER,
348
+ "avgValue" DOUBLE PRECISION,
349
+ "minValue" DOUBLE PRECISION,
350
+ "maxValue" DOUBLE PRECISION,
351
+ "stdDev" DOUBLE PRECISION,
352
+ "avgResponseTimeMs" DOUBLE PRECISION,
353
+ "timeouts" INTEGER,
354
+ "crcErrors" INTEGER,
355
+ "startDateTime" TIMESTAMP(3),
356
+ "endDateTime" TIMESTAMP(3),
357
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
358
+ "updatedAt" TIMESTAMP(3) NOT NULL,
359
+
360
+ CONSTRAINT "ProtocolDataSourceHourlyAnalytics_pkey" PRIMARY KEY ("id")
361
+ );
362
+
363
+ -- CreateTable
364
+ CREATE TABLE "analytics"."CurrentSensorHourlyAnalytics" (
365
+ "id" BIGSERIAL NOT NULL,
366
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
367
+ "avgCurrent" DOUBLE PRECISION,
368
+ "maxCurrent" DOUBLE PRECISION,
369
+ "minCurrent" DOUBLE PRECISION,
370
+ "runTime" DOUBLE PRECISION,
371
+ "idleTime" DOUBLE PRECISION,
372
+ "startDateTime" TIMESTAMP(3),
373
+ "endDateTime" TIMESTAMP(3),
374
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
375
+ "updatedAt" TIMESTAMP(3) NOT NULL,
376
+
377
+ CONSTRAINT "CurrentSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
378
+ );
379
+
380
+ -- CreateTable
381
+ CREATE TABLE "analytics"."VibrationSensorHourlyAnalytics" (
382
+ "id" BIGSERIAL NOT NULL,
383
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
384
+ "avgRMS" DOUBLE PRECISION,
385
+ "maxRMS" DOUBLE PRECISION,
386
+ "dominantFrequency" DOUBLE PRECISION,
387
+ "healthScore" DOUBLE PRECISION,
388
+ "alertCount" INTEGER,
389
+ "startDateTime" TIMESTAMP(3),
390
+ "endDateTime" TIMESTAMP(3),
391
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
392
+ "updatedAt" TIMESTAMP(3) NOT NULL,
393
+
394
+ CONSTRAINT "VibrationSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
395
+ );
396
+
397
+ -- CreateTable
398
+ CREATE TABLE "analytics"."TemperatureSensorHourlyAnalytics" (
399
+ "id" BIGSERIAL NOT NULL,
400
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
401
+ "avgTemp" DOUBLE PRECISION,
402
+ "maxTemp" DOUBLE PRECISION,
403
+ "minTemp" DOUBLE PRECISION,
404
+ "timeAboveThreshold" DOUBLE PRECISION,
405
+ "startDateTime" TIMESTAMP(3),
406
+ "endDateTime" TIMESTAMP(3),
407
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
408
+ "updatedAt" TIMESTAMP(3) NOT NULL,
409
+
410
+ CONSTRAINT "TemperatureSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
411
+ );
412
+
413
+ -- CreateTable
414
+ CREATE TABLE "analytics"."FlowSensorHourlyAnalytics" (
415
+ "id" BIGSERIAL NOT NULL,
416
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
417
+ "avgFlowRate" DOUBLE PRECISION,
418
+ "totalVolume" DOUBLE PRECISION,
419
+ "maxFlowRate" DOUBLE PRECISION,
420
+ "minFlowRate" DOUBLE PRECISION,
421
+ "startDateTime" TIMESTAMP(3),
422
+ "endDateTime" TIMESTAMP(3),
423
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
424
+ "updatedAt" TIMESTAMP(3) NOT NULL,
425
+
426
+ CONSTRAINT "FlowSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
427
+ );
428
+
429
+ -- CreateTable
430
+ CREATE TABLE "analytics"."WeightSensorHourlyAnalytics" (
431
+ "id" BIGSERIAL NOT NULL,
432
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
433
+ "avgWeight" DOUBLE PRECISION,
434
+ "maxWeight" DOUBLE PRECISION,
435
+ "minWeight" DOUBLE PRECISION,
436
+ "totalMeasurements" INTEGER,
437
+ "startDateTime" TIMESTAMP(3),
438
+ "endDateTime" TIMESTAMP(3),
439
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
440
+ "updatedAt" TIMESTAMP(3) NOT NULL,
441
+
442
+ CONSTRAINT "WeightSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
443
+ );
444
+
445
+ -- CreateTable
446
+ CREATE TABLE "analytics"."PressureSensorHourlyAnalytics" (
447
+ "id" BIGSERIAL NOT NULL,
448
+ "sensorHourlyAnalyticsId" BIGINT NOT NULL,
449
+ "avgPressure" DOUBLE PRECISION,
450
+ "maxPressure" DOUBLE PRECISION,
451
+ "minPressure" DOUBLE PRECISION,
452
+ "timeOutOfRange" DOUBLE PRECISION,
453
+ "startDateTime" TIMESTAMP(3),
454
+ "endDateTime" TIMESTAMP(3),
455
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
456
+ "updatedAt" TIMESTAMP(3) NOT NULL,
457
+
458
+ CONSTRAINT "PressureSensorHourlyAnalytics_pkey" PRIMARY KEY ("id")
459
+ );
460
+
271
461
  -- CreateTable
272
462
  CREATE TABLE "audit"."AuditLog" (
273
463
  "id" BIGSERIAL NOT NULL,
@@ -284,6 +474,8 @@ CREATE TABLE "audit"."AuditLog" (
284
474
  "userAgent" TEXT,
285
475
  "oldValues" JSONB,
286
476
  "newValues" JSONB,
477
+ "duration" INTEGER,
478
+ "errorMessage" TEXT,
287
479
 
288
480
  CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id")
289
481
  );
@@ -294,6 +486,13 @@ CREATE TABLE "chatbot"."ChatbotHistory" (
294
486
  "title" TEXT NOT NULL,
295
487
  "userId" INTEGER NOT NULL,
296
488
  "organizationId" INTEGER NOT NULL,
489
+ "factoryId" INTEGER,
490
+ "machineId" INTEGER,
491
+ "deviceId" INTEGER,
492
+ "sensorId" INTEGER,
493
+ "contextType" TEXT,
494
+ "contextData" JSONB,
495
+ "isArchived" BOOLEAN NOT NULL DEFAULT false,
297
496
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
298
497
  "updatedAt" TIMESTAMP(3) NOT NULL,
299
498
 
@@ -306,27 +505,131 @@ CREATE TABLE "chatbot"."ChatbotMessage" (
306
505
  "chatHistoryId" INTEGER NOT NULL,
307
506
  "sender" "chatbot"."ChatbotMessageSender" NOT NULL,
308
507
  "message" TEXT NOT NULL,
309
- "tokensUsed" INTEGER NOT NULL,
508
+ "tokensUsed" INTEGER NOT NULL DEFAULT 0,
509
+ "model" TEXT,
510
+ "cost" DOUBLE PRECISION,
310
511
  "jsonContent" JSONB,
512
+ "embedding" vector(1536),
513
+ "retrievedChunkIds" INTEGER[] DEFAULT ARRAY[]::INTEGER[],
311
514
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
312
515
  "updatedAt" TIMESTAMP(3) NOT NULL,
313
516
 
314
517
  CONSTRAINT "ChatbotMessage_pkey" PRIMARY KEY ("id")
315
518
  );
316
519
 
520
+ -- CreateTable
521
+ CREATE TABLE "chatbot"."ChatbotKnowledgeBase" (
522
+ "id" SERIAL NOT NULL,
523
+ "organizationId" INTEGER NOT NULL,
524
+ "factoryId" INTEGER,
525
+ "machineId" INTEGER,
526
+ "deviceId" INTEGER,
527
+ "sensorId" INTEGER,
528
+ "documentType" "chatbot"."DocumentType" NOT NULL,
529
+ "title" TEXT NOT NULL,
530
+ "content" TEXT NOT NULL,
531
+ "summary" TEXT,
532
+ "metadata" JSONB,
533
+ "fileUrl" TEXT,
534
+ "embedding" vector(1536),
535
+ "embeddingModel" TEXT NOT NULL DEFAULT 'text-embedding-3-small',
536
+ "embeddingStatus" "chatbot"."EmbeddingStatus" NOT NULL DEFAULT 'PENDING',
537
+ "embeddingError" TEXT,
538
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
539
+ "lastAccessedAt" TIMESTAMP(3),
540
+ "accessCount" INTEGER NOT NULL DEFAULT 0,
541
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
542
+ "updatedAt" TIMESTAMP(3) NOT NULL,
543
+
544
+ CONSTRAINT "ChatbotKnowledgeBase_pkey" PRIMARY KEY ("id")
545
+ );
546
+
547
+ -- CreateTable
548
+ CREATE TABLE "chatbot"."ChatbotKnowledgeChunk" (
549
+ "id" SERIAL NOT NULL,
550
+ "knowledgeBaseId" INTEGER NOT NULL,
551
+ "chunkIndex" INTEGER NOT NULL,
552
+ "content" TEXT NOT NULL,
553
+ "embedding" vector(1536),
554
+ "metadata" JSONB,
555
+ "tokenCount" INTEGER,
556
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
557
+ "updatedAt" TIMESTAMP(3) NOT NULL,
558
+
559
+ CONSTRAINT "ChatbotKnowledgeChunk_pkey" PRIMARY KEY ("id")
560
+ );
561
+
562
+ -- CreateTable
563
+ CREATE TABLE "chatbot"."ChatbotSearchHistory" (
564
+ "id" SERIAL NOT NULL,
565
+ "userId" INTEGER NOT NULL,
566
+ "organizationId" INTEGER NOT NULL,
567
+ "query" TEXT NOT NULL,
568
+ "queryEmbedding" vector(1536),
569
+ "results" JSONB NOT NULL,
570
+ "clickedResults" INTEGER[] DEFAULT ARRAY[]::INTEGER[],
571
+ "resultCount" INTEGER NOT NULL DEFAULT 0,
572
+ "wasHelpful" BOOLEAN,
573
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
574
+
575
+ CONSTRAINT "ChatbotSearchHistory_pkey" PRIMARY KEY ("id")
576
+ );
577
+
578
+ -- CreateTable
579
+ CREATE TABLE "chatbot"."DeviceConversationContext" (
580
+ "id" SERIAL NOT NULL,
581
+ "organizationId" INTEGER NOT NULL,
582
+ "machineId" INTEGER,
583
+ "deviceId" INTEGER,
584
+ "sensorId" INTEGER,
585
+ "entityType" TEXT NOT NULL,
586
+ "entityId" INTEGER NOT NULL,
587
+ "personality" TEXT,
588
+ "capabilities" JSONB NOT NULL,
589
+ "currentState" JSONB,
590
+ "lastSync" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
591
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
592
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
593
+ "updatedAt" TIMESTAMP(3) NOT NULL,
594
+
595
+ CONSTRAINT "DeviceConversationContext_pkey" PRIMARY KEY ("id")
596
+ );
597
+
598
+ -- CreateTable
599
+ CREATE TABLE "chatbot"."ChatbotFeedback" (
600
+ "id" SERIAL NOT NULL,
601
+ "chatHistoryId" INTEGER NOT NULL,
602
+ "messageId" INTEGER NOT NULL,
603
+ "userId" INTEGER NOT NULL,
604
+ "organizationId" INTEGER NOT NULL,
605
+ "rating" INTEGER,
606
+ "wasHelpful" BOOLEAN,
607
+ "feedback" TEXT,
608
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
609
+
610
+ CONSTRAINT "ChatbotFeedback_pkey" PRIMARY KEY ("id")
611
+ );
612
+
317
613
  -- CreateTable
318
614
  CREATE TABLE "device"."Gateway" (
319
615
  "id" SERIAL NOT NULL,
320
616
  "gatewayUid" TEXT NOT NULL,
321
617
  "gatewayName" TEXT,
618
+ "globalInventoryDeviceId" INTEGER,
322
619
  "isActive" BOOLEAN NOT NULL DEFAULT true,
323
620
  "floorId" INTEGER NOT NULL,
324
621
  "secret" TEXT NOT NULL,
622
+ "cpuModel" TEXT,
623
+ "ramMB" INTEGER,
624
+ "storageMB" INTEGER,
325
625
  "currentWifiSSID" TEXT,
326
626
  "currentWifiPassword" TEXT,
327
627
  "currentMQTTBrokerUrl" TEXT,
328
628
  "fallBackWifiSSID" TEXT,
329
629
  "fallBackWifiPassword" TEXT,
630
+ "edgeAnalytics" BOOLEAN NOT NULL DEFAULT false,
631
+ "bufferSizeMB" INTEGER DEFAULT 100,
632
+ "offlineMode" BOOLEAN NOT NULL DEFAULT true,
330
633
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
331
634
  "updatedAt" TIMESTAMP(3) NOT NULL,
332
635
 
@@ -350,10 +653,19 @@ CREATE TABLE "device"."Device" (
350
653
  "id" SERIAL NOT NULL,
351
654
  "globalDeviceUid" TEXT NOT NULL,
352
655
  "deviceUid" TEXT NOT NULL,
656
+ "globalInventoryDeviceId" INTEGER,
353
657
  "deviceName" TEXT,
354
658
  "isActive" BOOLEAN NOT NULL DEFAULT true,
355
659
  "organizationId" INTEGER NOT NULL,
356
660
  "gatewayId" INTEGER,
661
+ "deviceType" "device"."DeviceType" NOT NULL DEFAULT 'SENSOR_MODULE',
662
+ "deviceModel" TEXT,
663
+ "firmwareVersion" TEXT,
664
+ "ipAddress" TEXT,
665
+ "macAddress" TEXT,
666
+ "subnet" TEXT,
667
+ "port" INTEGER,
668
+ "serialConfig" JSONB,
357
669
  "machineId" INTEGER,
358
670
  "assemblyLineId" INTEGER,
359
671
  "floorId" INTEGER,
@@ -372,6 +684,7 @@ CREATE TABLE "device"."Sensor" (
372
684
  "sensorType" "device"."SensorType" NOT NULL DEFAULT 'PROXIMITY',
373
685
  "deviceId" INTEGER NOT NULL,
374
686
  "isActive" BOOLEAN NOT NULL DEFAULT true,
687
+ "isVirtual" BOOLEAN NOT NULL DEFAULT false,
375
688
  "machineId" INTEGER,
376
689
  "assemblyLineId" INTEGER,
377
690
  "floorId" INTEGER,
@@ -400,6 +713,12 @@ CREATE TABLE "device"."CurrentSensorConfig" (
400
713
  "id" SERIAL NOT NULL,
401
714
  "sensorId" INTEGER NOT NULL,
402
715
  "currentThreshold" DOUBLE PRECISION,
716
+ "ctRatio" TEXT DEFAULT '100:5',
717
+ "burdenResistor" DOUBLE PRECISION,
718
+ "calibrationGain" DOUBLE PRECISION DEFAULT 1.0,
719
+ "idleThreshold" DOUBLE PRECISION,
720
+ "runThreshold" DOUBLE PRECISION,
721
+ "samplingRateHz" INTEGER DEFAULT 10,
403
722
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
404
723
  "updatedAt" TIMESTAMP(3) NOT NULL,
405
724
 
@@ -430,6 +749,75 @@ CREATE TABLE "device"."MachineDeviceAssignment" (
430
749
  CONSTRAINT "MachineDeviceAssignment_pkey" PRIMARY KEY ("id")
431
750
  );
432
751
 
752
+ -- CreateTable
753
+ CREATE TABLE "device"."VibrationSensorConfig" (
754
+ "id" SERIAL NOT NULL,
755
+ "sensorId" INTEGER NOT NULL,
756
+ "samplingRateHz" INTEGER DEFAULT 1000,
757
+ "rangeG" DOUBLE PRECISION DEFAULT 16.0,
758
+ "fftEnabled" BOOLEAN NOT NULL DEFAULT false,
759
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
760
+ "updatedAt" TIMESTAMP(3) NOT NULL,
761
+
762
+ CONSTRAINT "VibrationSensorConfig_pkey" PRIMARY KEY ("id")
763
+ );
764
+
765
+ -- CreateTable
766
+ CREATE TABLE "device"."TemperatureSensorConfig" (
767
+ "id" SERIAL NOT NULL,
768
+ "sensorId" INTEGER NOT NULL,
769
+ "sensorModel" TEXT,
770
+ "minTemp" DOUBLE PRECISION,
771
+ "maxTemp" DOUBLE PRECISION,
772
+ "alertThreshold" DOUBLE PRECISION,
773
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
774
+ "updatedAt" TIMESTAMP(3) NOT NULL,
775
+
776
+ CONSTRAINT "TemperatureSensorConfig_pkey" PRIMARY KEY ("id")
777
+ );
778
+
779
+ -- CreateTable
780
+ CREATE TABLE "device"."FlowSensorConfig" (
781
+ "id" SERIAL NOT NULL,
782
+ "sensorId" INTEGER NOT NULL,
783
+ "unit" TEXT NOT NULL DEFAULT 'LITERS_PER_MINUTE',
784
+ "calibrationFactor" DOUBLE PRECISION DEFAULT 1.0,
785
+ "minFlow" DOUBLE PRECISION,
786
+ "maxFlow" DOUBLE PRECISION,
787
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
788
+ "updatedAt" TIMESTAMP(3) NOT NULL,
789
+
790
+ CONSTRAINT "FlowSensorConfig_pkey" PRIMARY KEY ("id")
791
+ );
792
+
793
+ -- CreateTable
794
+ CREATE TABLE "device"."WeightSensorConfig" (
795
+ "id" SERIAL NOT NULL,
796
+ "sensorId" INTEGER NOT NULL,
797
+ "unit" TEXT NOT NULL DEFAULT 'KG',
798
+ "maxCapacity" DOUBLE PRECISION,
799
+ "resolution" DOUBLE PRECISION,
800
+ "tareWeight" DOUBLE PRECISION,
801
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
802
+ "updatedAt" TIMESTAMP(3) NOT NULL,
803
+
804
+ CONSTRAINT "WeightSensorConfig_pkey" PRIMARY KEY ("id")
805
+ );
806
+
807
+ -- CreateTable
808
+ CREATE TABLE "device"."PressureSensorConfig" (
809
+ "id" SERIAL NOT NULL,
810
+ "sensorId" INTEGER NOT NULL,
811
+ "unit" TEXT NOT NULL DEFAULT 'BAR',
812
+ "minPressure" DOUBLE PRECISION,
813
+ "maxPressure" DOUBLE PRECISION,
814
+ "alertThreshold" DOUBLE PRECISION,
815
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
816
+ "updatedAt" TIMESTAMP(3) NOT NULL,
817
+
818
+ CONSTRAINT "PressureSensorConfig_pkey" PRIMARY KEY ("id")
819
+ );
820
+
433
821
  -- CreateTable
434
822
  CREATE TABLE "device"."SensorLog" (
435
823
  "id" BIGSERIAL NOT NULL,
@@ -497,6 +885,119 @@ CREATE TABLE "device"."DevicePowerSensorLog" (
497
885
  CONSTRAINT "DevicePowerSensorLog_pkey" PRIMARY KEY ("id")
498
886
  );
499
887
 
888
+ -- CreateTable
889
+ CREATE TABLE "device"."VibrationSensorLog" (
890
+ "id" BIGSERIAL NOT NULL,
891
+ "sensorLogId" BIGINT NOT NULL,
892
+ "rmsValue" DOUBLE PRECISION,
893
+ "peakValue" DOUBLE PRECISION,
894
+ "frequency" DOUBLE PRECISION,
895
+ "fftData" JSONB,
896
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
897
+ "updatedAt" TIMESTAMP(3) NOT NULL,
898
+
899
+ CONSTRAINT "VibrationSensorLog_pkey" PRIMARY KEY ("id")
900
+ );
901
+
902
+ -- CreateTable
903
+ CREATE TABLE "device"."TemperatureSensorLog" (
904
+ "id" BIGSERIAL NOT NULL,
905
+ "sensorLogId" BIGINT NOT NULL,
906
+ "temperature" DOUBLE PRECISION NOT NULL,
907
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
908
+ "updatedAt" TIMESTAMP(3) NOT NULL,
909
+
910
+ CONSTRAINT "TemperatureSensorLog_pkey" PRIMARY KEY ("id")
911
+ );
912
+
913
+ -- CreateTable
914
+ CREATE TABLE "device"."FlowSensorLog" (
915
+ "id" BIGSERIAL NOT NULL,
916
+ "sensorLogId" BIGINT NOT NULL,
917
+ "flowRate" DOUBLE PRECISION NOT NULL,
918
+ "totalVolume" DOUBLE PRECISION,
919
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
920
+ "updatedAt" TIMESTAMP(3) NOT NULL,
921
+
922
+ CONSTRAINT "FlowSensorLog_pkey" PRIMARY KEY ("id")
923
+ );
924
+
925
+ -- CreateTable
926
+ CREATE TABLE "device"."WeightSensorLog" (
927
+ "id" BIGSERIAL NOT NULL,
928
+ "sensorLogId" BIGINT NOT NULL,
929
+ "weight" DOUBLE PRECISION NOT NULL,
930
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
931
+ "updatedAt" TIMESTAMP(3) NOT NULL,
932
+
933
+ CONSTRAINT "WeightSensorLog_pkey" PRIMARY KEY ("id")
934
+ );
935
+
936
+ -- CreateTable
937
+ CREATE TABLE "device"."PressureSensorLog" (
938
+ "id" BIGSERIAL NOT NULL,
939
+ "sensorLogId" BIGINT NOT NULL,
940
+ "pressure" DOUBLE PRECISION NOT NULL,
941
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
942
+ "updatedAt" TIMESTAMP(3) NOT NULL,
943
+
944
+ CONSTRAINT "PressureSensorLog_pkey" PRIMARY KEY ("id")
945
+ );
946
+
947
+ -- CreateTable
948
+ CREATE TABLE "device"."ProtocolDataSource" (
949
+ "id" SERIAL NOT NULL,
950
+ "deviceId" INTEGER NOT NULL,
951
+ "sourceType" "device"."DataSourceType" NOT NULL,
952
+ "sourceName" TEXT NOT NULL,
953
+ "description" TEXT,
954
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
955
+ "address" TEXT,
956
+ "protocolConfig" JSONB,
957
+ "dataType" TEXT,
958
+ "unit" TEXT,
959
+ "scaleFactor" DOUBLE PRECISION DEFAULT 1.0,
960
+ "offset" DOUBLE PRECISION DEFAULT 0.0,
961
+ "pollingInterval" INTEGER,
962
+ "onChangeOnly" BOOLEAN NOT NULL DEFAULT false,
963
+ "sensorId" INTEGER,
964
+ "machineId" INTEGER,
965
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
966
+ "updatedAt" TIMESTAMP(3) NOT NULL,
967
+
968
+ CONSTRAINT "ProtocolDataSource_pkey" PRIMARY KEY ("id")
969
+ );
970
+
971
+ -- CreateTable
972
+ CREATE TABLE "device"."ProtocolDataLog" (
973
+ "id" BIGSERIAL NOT NULL,
974
+ "dataSourceId" INTEGER NOT NULL,
975
+ "timestamp" TIMESTAMP(3) NOT NULL,
976
+ "rawValue" TEXT,
977
+ "parsedValue" DOUBLE PRECISION,
978
+ "stringValue" TEXT,
979
+ "boolValue" BOOLEAN,
980
+ "isProcessed" BOOLEAN NOT NULL DEFAULT false,
981
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
982
+
983
+ CONSTRAINT "ProtocolDataLog_pkey" PRIMARY KEY ("id")
984
+ );
985
+
986
+ -- CreateTable
987
+ CREATE TABLE "device"."DeviceConnection" (
988
+ "id" SERIAL NOT NULL,
989
+ "parentDeviceId" INTEGER NOT NULL,
990
+ "childDeviceId" INTEGER NOT NULL,
991
+ "protocol" "device"."CommunicationProtocol" NOT NULL,
992
+ "connectionConfig" JSONB,
993
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
994
+ "lastSeen" TIMESTAMP(3),
995
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
996
+ "updatedAt" TIMESTAMP(3) NOT NULL,
997
+
998
+ CONSTRAINT "DeviceConnection_pkey" PRIMARY KEY ("id")
999
+ );
1000
+
500
1001
  -- CreateTable
501
1002
  CREATE TABLE "factory"."Factory" (
502
1003
  "id" SERIAL NOT NULL,
@@ -600,9 +1101,11 @@ CREATE TABLE "factory"."FactoryShiftMachine" (
600
1101
  CREATE TABLE "factory"."FactoryLot" (
601
1102
  "id" SERIAL NOT NULL,
602
1103
  "lotNumber" TEXT NOT NULL,
603
- "receivedAt" TIMESTAMP(3) NOT NULL,
604
- "expiryAt" TIMESTAMP(3),
605
1104
  "factoryId" INTEGER NOT NULL,
1105
+ "manufacturingDate" TIMESTAMP(3),
1106
+ "expiryDate" TIMESTAMP(3),
1107
+ "quantity" DOUBLE PRECISION,
1108
+ "measurementUnit" "analytics"."ProductionMeasurementUnit",
606
1109
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
607
1110
  "updatedAt" TIMESTAMP(3) NOT NULL,
608
1111
 
@@ -658,14 +1161,55 @@ CREATE TABLE "inventory"."FinalProductRouteDependency" (
658
1161
  );
659
1162
 
660
1163
  -- CreateTable
661
- CREATE TABLE "machine"."Machine" (
662
- "id" SERIAL NOT NULL,
663
- "name" TEXT NOT NULL,
664
- "details" TEXT,
665
- "idealCycleTimeInSeconds" INTEGER,
666
- "assemblyLineId" INTEGER,
1164
+ CREATE TABLE "machine"."MachineStateLog" (
1165
+ "id" BIGSERIAL NOT NULL,
1166
+ "machineId" INTEGER NOT NULL,
1167
+ "state" "machine"."MachineState" NOT NULL,
1168
+ "startTime" TIMESTAMP(3) NOT NULL,
1169
+ "endTime" TIMESTAMP(3),
1170
+ "durationSec" INTEGER,
1171
+ "metadata" JSONB,
1172
+ "programId" INTEGER,
1173
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1174
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1175
+
1176
+ CONSTRAINT "MachineStateLog_pkey" PRIMARY KEY ("id")
1177
+ );
1178
+
1179
+ -- CreateTable
1180
+ CREATE TABLE "machine"."MachineProgram" (
1181
+ "id" SERIAL NOT NULL,
1182
+ "machineId" INTEGER NOT NULL,
1183
+ "programNumber" TEXT NOT NULL,
1184
+ "programName" TEXT,
1185
+ "description" TEXT,
1186
+ "expectedCycleTime" INTEGER,
1187
+ "expectedPowerProfile" JSONB,
1188
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
1189
+ "lastRunAt" TIMESTAMP(3),
1190
+ "totalRuns" INTEGER NOT NULL DEFAULT 0,
1191
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1192
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1193
+
1194
+ CONSTRAINT "MachineProgram_pkey" PRIMARY KEY ("id")
1195
+ );
1196
+
1197
+ -- CreateTable
1198
+ CREATE TABLE "machine"."Machine" (
1199
+ "id" SERIAL NOT NULL,
1200
+ "name" TEXT NOT NULL,
1201
+ "details" TEXT,
1202
+ "idealCycleTimeInSeconds" INTEGER,
1203
+ "assemblyLineId" INTEGER,
667
1204
  "machineOperationId" INTEGER,
668
1205
  "trackingType" "machine"."MachineTrackingType" NOT NULL DEFAULT 'MANUAL',
1206
+ "currentProgramId" INTEGER,
1207
+ "industryType" "machine"."MachineIndustryType" DEFAULT 'GENERAL',
1208
+ "machineModel" TEXT,
1209
+ "capabilities" JSONB,
1210
+ "primaryProtocol" "device"."CommunicationProtocol",
1211
+ "isConnected" BOOLEAN NOT NULL DEFAULT false,
1212
+ "lastDataReceived" TIMESTAMP(3),
669
1213
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
670
1214
  "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
671
1215
 
@@ -837,12 +1381,16 @@ CREATE TABLE "maintenance"."TechnicianSpecialization" (
837
1381
  CREATE TABLE "operator"."Operator" (
838
1382
  "id" SERIAL NOT NULL,
839
1383
  "rfid" TEXT,
1384
+ "coreUserId" INTEGER,
840
1385
  "externalId" TEXT,
841
1386
  "firstName" TEXT,
842
1387
  "lastName" TEXT,
843
1388
  "description" TEXT,
844
1389
  "organizationId" INTEGER,
845
1390
  "factoryId" INTEGER,
1391
+ "operatorLevel" "operator"."OperatorLevel" DEFAULT 'FLOOR_WORKER',
1392
+ "teamId" INTEGER,
1393
+ "teamName" TEXT,
846
1394
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
847
1395
  "updatedAt" TIMESTAMP(3) NOT NULL,
848
1396
 
@@ -926,8 +1474,7 @@ CREATE TABLE "order"."OrderComment" (
926
1474
  -- CreateTable
927
1475
  CREATE TABLE "production_tracking"."ProductionUnit" (
928
1476
  "id" TEXT NOT NULL,
929
- "tagId" TEXT NOT NULL,
930
- "serialNumber" TEXT,
1477
+ "serialNumber" TEXT NOT NULL,
931
1478
  "organizationId" INTEGER NOT NULL,
932
1479
  "orderProductId" INTEGER NOT NULL,
933
1480
  "currentStepId" INTEGER,
@@ -938,6 +1485,19 @@ CREATE TABLE "production_tracking"."ProductionUnit" (
938
1485
  CONSTRAINT "ProductionUnit_pkey" PRIMARY KEY ("id")
939
1486
  );
940
1487
 
1488
+ -- CreateTable
1489
+ CREATE TABLE "production_tracking"."ProductionUnitIdentifier" (
1490
+ "id" SERIAL NOT NULL,
1491
+ "productionUnitId" TEXT NOT NULL,
1492
+ "identifierType" "production_tracking"."IdentifierType" NOT NULL,
1493
+ "identifierValue" TEXT NOT NULL,
1494
+ "isPrimary" BOOLEAN NOT NULL DEFAULT false,
1495
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1496
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1497
+
1498
+ CONSTRAINT "ProductionUnitIdentifier_pkey" PRIMARY KEY ("id")
1499
+ );
1500
+
941
1501
  -- CreateTable
942
1502
  CREATE TABLE "production_tracking"."ProductionUnitLog" (
943
1503
  "id" TEXT NOT NULL,
@@ -946,6 +1506,7 @@ CREATE TABLE "production_tracking"."ProductionUnitLog" (
946
1506
  "details" TEXT,
947
1507
  "stepId" INTEGER,
948
1508
  "operatorId" INTEGER,
1509
+ "scannedBy" TEXT,
949
1510
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
950
1511
 
951
1512
  CONSTRAINT "ProductionUnitLog_pkey" PRIMARY KEY ("id")
@@ -1005,6 +1566,7 @@ CREATE TABLE "organization"."MaintenanceSpecialization" (
1005
1566
  CREATE TABLE "organization"."OrganizationCustomer" (
1006
1567
  "id" SERIAL NOT NULL,
1007
1568
  "organizationId" INTEGER NOT NULL,
1569
+ "externalId" TEXT,
1008
1570
  "name" TEXT NOT NULL,
1009
1571
  "description" TEXT,
1010
1572
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -1054,8 +1616,16 @@ CREATE TABLE "tasks"."Task" (
1054
1616
  "status" "tasks"."TaskStatus" NOT NULL DEFAULT 'NEW',
1055
1617
  "startTime" TIMESTAMP(3) NOT NULL,
1056
1618
  "endTime" TIMESTAMP(3) NOT NULL,
1057
- "targetCount" INTEGER,
1058
- "taskCount" INTEGER DEFAULT 0,
1619
+ "targetQuantity" DOUBLE PRECISION,
1620
+ "actualQuantity" DOUBLE PRECISION DEFAULT 0,
1621
+ "measurementUnit" "analytics"."ProductionMeasurementUnit" DEFAULT 'PIECE',
1622
+ "passedQuantity" DOUBLE PRECISION DEFAULT 0,
1623
+ "rejectedQuantity" DOUBLE PRECISION DEFAULT 0,
1624
+ "reworkQuantity" DOUBLE PRECISION DEFAULT 0,
1625
+ "wasteQuantity" DOUBLE PRECISION DEFAULT 0,
1626
+ "efficiency" DOUBLE PRECISION,
1627
+ "yieldPercentage" DOUBLE PRECISION,
1628
+ "qualityRate" DOUBLE PRECISION,
1059
1629
  "sequence" INTEGER NOT NULL DEFAULT 0,
1060
1630
  "reworkOfTaskId" INTEGER,
1061
1631
  "reworkCount" INTEGER NOT NULL DEFAULT 0,
@@ -1073,7 +1643,13 @@ CREATE TABLE "tasks"."TaskGroup" (
1073
1643
  "id" SERIAL NOT NULL,
1074
1644
  "description" TEXT,
1075
1645
  "status" "tasks"."TaskGroupStatus" NOT NULL DEFAULT 'NEW',
1076
- "targetCount" INTEGER NOT NULL,
1646
+ "targetQuantity" DOUBLE PRECISION NOT NULL,
1647
+ "actualQuantity" DOUBLE PRECISION NOT NULL DEFAULT 0,
1648
+ "measurementUnit" "analytics"."ProductionMeasurementUnit" NOT NULL DEFAULT 'PIECE',
1649
+ "totalPassedQuantity" DOUBLE PRECISION DEFAULT 0,
1650
+ "totalRejectedQuantity" DOUBLE PRECISION DEFAULT 0,
1651
+ "totalReworkQuantity" DOUBLE PRECISION DEFAULT 0,
1652
+ "overallEfficiency" DOUBLE PRECISION,
1077
1653
  "factoryId" INTEGER,
1078
1654
  "organizationId" INTEGER,
1079
1655
  "productRouteId" INTEGER,
@@ -1113,8 +1689,11 @@ CREATE TABLE "tasks"."TaskInspection" (
1113
1689
  "taskId" INTEGER NOT NULL,
1114
1690
  "inspectorId" INTEGER NOT NULL,
1115
1691
  "passed" BOOLEAN NOT NULL DEFAULT false,
1116
- "defectCount" INTEGER NOT NULL DEFAULT 0,
1117
- "wasteCount" INTEGER NOT NULL DEFAULT 0,
1692
+ "passedQuantity" DOUBLE PRECISION DEFAULT 0,
1693
+ "defectQuantity" DOUBLE PRECISION DEFAULT 0,
1694
+ "wasteQuantity" DOUBLE PRECISION DEFAULT 0,
1695
+ "reworkQuantity" DOUBLE PRECISION DEFAULT 0,
1696
+ "measurementUnit" "analytics"."ProductionMeasurementUnit" DEFAULT 'PIECE',
1118
1697
  "notes" TEXT,
1119
1698
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1120
1699
  "updatedAt" TIMESTAMP(3) NOT NULL,
@@ -1180,6 +1759,30 @@ CREATE UNIQUE INDEX "unique_infraredCompound" ON "analytics"."InfraredSensorHour
1180
1759
  -- CreateIndex
1181
1760
  CREATE UNIQUE INDEX "DevicePowerSensorHourlyAnalytics_deviceHourlyAnalyticsId_key" ON "analytics"."DevicePowerSensorHourlyAnalytics"("deviceHourlyAnalyticsId");
1182
1761
 
1762
+ -- CreateIndex
1763
+ CREATE INDEX "ProtocolDataSourceHourlyAnalytics_dataSourceId_startDateTim_idx" ON "analytics"."ProtocolDataSourceHourlyAnalytics"("dataSourceId", "startDateTime", "endDateTime");
1764
+
1765
+ -- CreateIndex
1766
+ CREATE UNIQUE INDEX "ProtocolDataSourceHourlyAnalytics_dataSourceId_startDateTim_key" ON "analytics"."ProtocolDataSourceHourlyAnalytics"("dataSourceId", "startDateTime");
1767
+
1768
+ -- CreateIndex
1769
+ CREATE UNIQUE INDEX "CurrentSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "analytics"."CurrentSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
1770
+
1771
+ -- CreateIndex
1772
+ CREATE UNIQUE INDEX "VibrationSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "analytics"."VibrationSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
1773
+
1774
+ -- CreateIndex
1775
+ CREATE UNIQUE INDEX "TemperatureSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "analytics"."TemperatureSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
1776
+
1777
+ -- CreateIndex
1778
+ CREATE UNIQUE INDEX "FlowSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "analytics"."FlowSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
1779
+
1780
+ -- CreateIndex
1781
+ CREATE UNIQUE INDEX "WeightSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "analytics"."WeightSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
1782
+
1783
+ -- CreateIndex
1784
+ CREATE UNIQUE INDEX "PressureSensorHourlyAnalytics_sensorHourlyAnalyticsId_key" ON "analytics"."PressureSensorHourlyAnalytics"("sensorHourlyAnalyticsId");
1785
+
1183
1786
  -- CreateIndex
1184
1787
  CREATE INDEX "AuditLog_entityName_entityId_idx" ON "audit"."AuditLog"("entityName", "entityId");
1185
1788
 
@@ -1189,27 +1792,132 @@ CREATE INDEX "AuditLog_userId_idx" ON "audit"."AuditLog"("userId");
1189
1792
  -- CreateIndex
1190
1793
  CREATE INDEX "AuditLog_organizationId_idx" ON "audit"."AuditLog"("organizationId");
1191
1794
 
1795
+ -- CreateIndex
1796
+ CREATE INDEX "AuditLog_timestamp_idx" ON "audit"."AuditLog"("timestamp");
1797
+
1798
+ -- CreateIndex
1799
+ CREATE INDEX "AuditLog_organizationId_timestamp_idx" ON "audit"."AuditLog"("organizationId", "timestamp");
1800
+
1801
+ -- CreateIndex
1802
+ CREATE INDEX "AuditLog_action_idx" ON "audit"."AuditLog"("action");
1803
+
1192
1804
  -- CreateIndex
1193
1805
  CREATE INDEX "ChatbotHistory_userId_idx" ON "chatbot"."ChatbotHistory"("userId");
1194
1806
 
1195
1807
  -- CreateIndex
1196
1808
  CREATE INDEX "ChatbotHistory_organizationId_idx" ON "chatbot"."ChatbotHistory"("organizationId");
1197
1809
 
1810
+ -- CreateIndex
1811
+ CREATE INDEX "ChatbotHistory_factoryId_idx" ON "chatbot"."ChatbotHistory"("factoryId");
1812
+
1813
+ -- CreateIndex
1814
+ CREATE INDEX "ChatbotHistory_machineId_idx" ON "chatbot"."ChatbotHistory"("machineId");
1815
+
1816
+ -- CreateIndex
1817
+ CREATE INDEX "ChatbotHistory_deviceId_idx" ON "chatbot"."ChatbotHistory"("deviceId");
1818
+
1819
+ -- CreateIndex
1820
+ CREATE INDEX "ChatbotHistory_sensorId_idx" ON "chatbot"."ChatbotHistory"("sensorId");
1821
+
1198
1822
  -- CreateIndex
1199
1823
  CREATE INDEX "ChatbotHistory_createdAt_idx" ON "chatbot"."ChatbotHistory"("createdAt");
1200
1824
 
1201
1825
  -- CreateIndex
1202
- CREATE INDEX "ChatbotHistory_title_idx" ON "chatbot"."ChatbotHistory"("title");
1826
+ CREATE INDEX "ChatbotHistory_userId_createdAt_idx" ON "chatbot"."ChatbotHistory"("userId", "createdAt");
1827
+
1828
+ -- CreateIndex
1829
+ CREATE INDEX "ChatbotHistory_organizationId_isArchived_idx" ON "chatbot"."ChatbotHistory"("organizationId", "isArchived");
1203
1830
 
1204
1831
  -- CreateIndex
1205
1832
  CREATE INDEX "ChatbotMessage_chatHistoryId_idx" ON "chatbot"."ChatbotMessage"("chatHistoryId");
1206
1833
 
1207
1834
  -- CreateIndex
1208
- CREATE INDEX "ChatbotMessage_tokensUsed_idx" ON "chatbot"."ChatbotMessage"("tokensUsed");
1835
+ CREATE INDEX "ChatbotMessage_createdAt_idx" ON "chatbot"."ChatbotMessage"("createdAt");
1836
+
1837
+ -- CreateIndex
1838
+ CREATE INDEX "ChatbotMessage_sender_idx" ON "chatbot"."ChatbotMessage"("sender");
1839
+
1840
+ -- CreateIndex
1841
+ CREATE INDEX "ChatbotKnowledgeBase_organizationId_idx" ON "chatbot"."ChatbotKnowledgeBase"("organizationId");
1842
+
1843
+ -- CreateIndex
1844
+ CREATE INDEX "ChatbotKnowledgeBase_factoryId_idx" ON "chatbot"."ChatbotKnowledgeBase"("factoryId");
1845
+
1846
+ -- CreateIndex
1847
+ CREATE INDEX "ChatbotKnowledgeBase_machineId_idx" ON "chatbot"."ChatbotKnowledgeBase"("machineId");
1848
+
1849
+ -- CreateIndex
1850
+ CREATE INDEX "ChatbotKnowledgeBase_deviceId_idx" ON "chatbot"."ChatbotKnowledgeBase"("deviceId");
1851
+
1852
+ -- CreateIndex
1853
+ CREATE INDEX "ChatbotKnowledgeBase_sensorId_idx" ON "chatbot"."ChatbotKnowledgeBase"("sensorId");
1854
+
1855
+ -- CreateIndex
1856
+ CREATE INDEX "ChatbotKnowledgeBase_documentType_idx" ON "chatbot"."ChatbotKnowledgeBase"("documentType");
1857
+
1858
+ -- CreateIndex
1859
+ CREATE INDEX "ChatbotKnowledgeBase_embeddingStatus_idx" ON "chatbot"."ChatbotKnowledgeBase"("embeddingStatus");
1860
+
1861
+ -- CreateIndex
1862
+ CREATE INDEX "ChatbotKnowledgeBase_isActive_idx" ON "chatbot"."ChatbotKnowledgeBase"("isActive");
1863
+
1864
+ -- CreateIndex
1865
+ CREATE INDEX "ChatbotKnowledgeBase_organizationId_documentType_isActive_idx" ON "chatbot"."ChatbotKnowledgeBase"("organizationId", "documentType", "isActive");
1866
+
1867
+ -- CreateIndex
1868
+ CREATE INDEX "ChatbotKnowledgeChunk_knowledgeBaseId_idx" ON "chatbot"."ChatbotKnowledgeChunk"("knowledgeBaseId");
1869
+
1870
+ -- CreateIndex
1871
+ CREATE INDEX "ChatbotKnowledgeChunk_knowledgeBaseId_chunkIndex_idx" ON "chatbot"."ChatbotKnowledgeChunk"("knowledgeBaseId", "chunkIndex");
1872
+
1873
+ -- CreateIndex
1874
+ CREATE INDEX "ChatbotSearchHistory_userId_idx" ON "chatbot"."ChatbotSearchHistory"("userId");
1875
+
1876
+ -- CreateIndex
1877
+ CREATE INDEX "ChatbotSearchHistory_organizationId_idx" ON "chatbot"."ChatbotSearchHistory"("organizationId");
1878
+
1879
+ -- CreateIndex
1880
+ CREATE INDEX "ChatbotSearchHistory_createdAt_idx" ON "chatbot"."ChatbotSearchHistory"("createdAt");
1881
+
1882
+ -- CreateIndex
1883
+ CREATE INDEX "ChatbotSearchHistory_userId_createdAt_idx" ON "chatbot"."ChatbotSearchHistory"("userId", "createdAt");
1884
+
1885
+ -- CreateIndex
1886
+ CREATE INDEX "DeviceConversationContext_machineId_idx" ON "chatbot"."DeviceConversationContext"("machineId");
1887
+
1888
+ -- CreateIndex
1889
+ CREATE INDEX "DeviceConversationContext_deviceId_idx" ON "chatbot"."DeviceConversationContext"("deviceId");
1890
+
1891
+ -- CreateIndex
1892
+ CREATE INDEX "DeviceConversationContext_sensorId_idx" ON "chatbot"."DeviceConversationContext"("sensorId");
1893
+
1894
+ -- CreateIndex
1895
+ CREATE INDEX "DeviceConversationContext_isActive_idx" ON "chatbot"."DeviceConversationContext"("isActive");
1896
+
1897
+ -- CreateIndex
1898
+ CREATE UNIQUE INDEX "DeviceConversationContext_organizationId_entityType_entityI_key" ON "chatbot"."DeviceConversationContext"("organizationId", "entityType", "entityId");
1899
+
1900
+ -- CreateIndex
1901
+ CREATE INDEX "ChatbotFeedback_chatHistoryId_idx" ON "chatbot"."ChatbotFeedback"("chatHistoryId");
1902
+
1903
+ -- CreateIndex
1904
+ CREATE INDEX "ChatbotFeedback_messageId_idx" ON "chatbot"."ChatbotFeedback"("messageId");
1905
+
1906
+ -- CreateIndex
1907
+ CREATE INDEX "ChatbotFeedback_userId_idx" ON "chatbot"."ChatbotFeedback"("userId");
1908
+
1909
+ -- CreateIndex
1910
+ CREATE INDEX "ChatbotFeedback_organizationId_idx" ON "chatbot"."ChatbotFeedback"("organizationId");
1911
+
1912
+ -- CreateIndex
1913
+ CREATE INDEX "ChatbotFeedback_rating_idx" ON "chatbot"."ChatbotFeedback"("rating");
1209
1914
 
1210
1915
  -- CreateIndex
1211
1916
  CREATE UNIQUE INDEX "Gateway_gatewayUid_key" ON "device"."Gateway"("gatewayUid");
1212
1917
 
1918
+ -- CreateIndex
1919
+ CREATE UNIQUE INDEX "Gateway_globalInventoryDeviceId_key" ON "device"."Gateway"("globalInventoryDeviceId");
1920
+
1213
1921
  -- CreateIndex
1214
1922
  CREATE INDEX "Gateway_floorId_idx" ON "device"."Gateway"("floorId");
1215
1923
 
@@ -1222,6 +1930,9 @@ CREATE UNIQUE INDEX "Device_globalDeviceUid_key" ON "device"."Device"("globalDev
1222
1930
  -- CreateIndex
1223
1931
  CREATE UNIQUE INDEX "Device_deviceUid_key" ON "device"."Device"("deviceUid");
1224
1932
 
1933
+ -- CreateIndex
1934
+ CREATE UNIQUE INDEX "Device_globalInventoryDeviceId_key" ON "device"."Device"("globalInventoryDeviceId");
1935
+
1225
1936
  -- CreateIndex
1226
1937
  CREATE INDEX "Device_organizationId_idx" ON "device"."Device"("organizationId");
1227
1938
 
@@ -1237,12 +1948,18 @@ CREATE INDEX "Device_machineId_idx" ON "device"."Device"("machineId");
1237
1948
  -- CreateIndex
1238
1949
  CREATE INDEX "Device_factoryId_idx" ON "device"."Device"("factoryId");
1239
1950
 
1951
+ -- CreateIndex
1952
+ CREATE INDEX "Device_ipAddress_idx" ON "device"."Device"("ipAddress");
1953
+
1240
1954
  -- CreateIndex
1241
1955
  CREATE UNIQUE INDEX "Sensor_sensorUid_key" ON "device"."Sensor"("sensorUid");
1242
1956
 
1243
1957
  -- CreateIndex
1244
1958
  CREATE INDEX "Sensor_deviceId_idx" ON "device"."Sensor"("deviceId");
1245
1959
 
1960
+ -- CreateIndex
1961
+ CREATE INDEX "Sensor_isVirtual_idx" ON "device"."Sensor"("isVirtual");
1962
+
1246
1963
  -- CreateIndex
1247
1964
  CREATE UNIQUE INDEX "ProximitySensorConfig_sensorId_key" ON "device"."ProximitySensorConfig"("sensorId");
1248
1965
 
@@ -1264,6 +1981,21 @@ CREATE INDEX "MachineDeviceAssignment_assignedAt_idx" ON "device"."MachineDevice
1264
1981
  -- CreateIndex
1265
1982
  CREATE INDEX "MachineDeviceAssignment_unassignedAt_idx" ON "device"."MachineDeviceAssignment"("unassignedAt");
1266
1983
 
1984
+ -- CreateIndex
1985
+ CREATE UNIQUE INDEX "VibrationSensorConfig_sensorId_key" ON "device"."VibrationSensorConfig"("sensorId");
1986
+
1987
+ -- CreateIndex
1988
+ CREATE UNIQUE INDEX "TemperatureSensorConfig_sensorId_key" ON "device"."TemperatureSensorConfig"("sensorId");
1989
+
1990
+ -- CreateIndex
1991
+ CREATE UNIQUE INDEX "FlowSensorConfig_sensorId_key" ON "device"."FlowSensorConfig"("sensorId");
1992
+
1993
+ -- CreateIndex
1994
+ CREATE UNIQUE INDEX "WeightSensorConfig_sensorId_key" ON "device"."WeightSensorConfig"("sensorId");
1995
+
1996
+ -- CreateIndex
1997
+ CREATE UNIQUE INDEX "PressureSensorConfig_sensorId_key" ON "device"."PressureSensorConfig"("sensorId");
1998
+
1267
1999
  -- CreateIndex
1268
2000
  CREATE INDEX "SensorLog_isProcessed_idx" ON "device"."SensorLog"("isProcessed");
1269
2001
 
@@ -1300,12 +2032,57 @@ CREATE UNIQUE INDEX "CurrentSensorLog_sensorLogId_key" ON "device"."CurrentSenso
1300
2032
  -- CreateIndex
1301
2033
  CREATE UNIQUE INDEX "DevicePowerSensorLog_sensorLogId_key" ON "device"."DevicePowerSensorLog"("sensorLogId");
1302
2034
 
2035
+ -- CreateIndex
2036
+ CREATE UNIQUE INDEX "VibrationSensorLog_sensorLogId_key" ON "device"."VibrationSensorLog"("sensorLogId");
2037
+
2038
+ -- CreateIndex
2039
+ CREATE UNIQUE INDEX "TemperatureSensorLog_sensorLogId_key" ON "device"."TemperatureSensorLog"("sensorLogId");
2040
+
2041
+ -- CreateIndex
2042
+ CREATE UNIQUE INDEX "FlowSensorLog_sensorLogId_key" ON "device"."FlowSensorLog"("sensorLogId");
2043
+
2044
+ -- CreateIndex
2045
+ CREATE UNIQUE INDEX "WeightSensorLog_sensorLogId_key" ON "device"."WeightSensorLog"("sensorLogId");
2046
+
2047
+ -- CreateIndex
2048
+ CREATE UNIQUE INDEX "PressureSensorLog_sensorLogId_key" ON "device"."PressureSensorLog"("sensorLogId");
2049
+
2050
+ -- CreateIndex
2051
+ CREATE UNIQUE INDEX "ProtocolDataSource_sensorId_key" ON "device"."ProtocolDataSource"("sensorId");
2052
+
2053
+ -- CreateIndex
2054
+ CREATE INDEX "ProtocolDataSource_deviceId_idx" ON "device"."ProtocolDataSource"("deviceId");
2055
+
2056
+ -- CreateIndex
2057
+ CREATE INDEX "ProtocolDataSource_sourceType_idx" ON "device"."ProtocolDataSource"("sourceType");
2058
+
2059
+ -- CreateIndex
2060
+ CREATE INDEX "ProtocolDataSource_machineId_idx" ON "device"."ProtocolDataSource"("machineId");
2061
+
2062
+ -- CreateIndex
2063
+ CREATE INDEX "ProtocolDataLog_dataSourceId_isProcessed_idx" ON "device"."ProtocolDataLog"("dataSourceId", "isProcessed");
2064
+
2065
+ -- CreateIndex
2066
+ CREATE INDEX "ProtocolDataLog_timestamp_idx" ON "device"."ProtocolDataLog"("timestamp");
2067
+
2068
+ -- CreateIndex
2069
+ CREATE UNIQUE INDEX "ProtocolDataLog_dataSourceId_timestamp_key" ON "device"."ProtocolDataLog"("dataSourceId", "timestamp");
2070
+
2071
+ -- CreateIndex
2072
+ CREATE INDEX "DeviceConnection_parentDeviceId_idx" ON "device"."DeviceConnection"("parentDeviceId");
2073
+
2074
+ -- CreateIndex
2075
+ CREATE UNIQUE INDEX "DeviceConnection_parentDeviceId_childDeviceId_protocol_key" ON "device"."DeviceConnection"("parentDeviceId", "childDeviceId", "protocol");
2076
+
1303
2077
  -- CreateIndex
1304
2078
  CREATE INDEX "Factory_organizationId_idx" ON "factory"."Factory"("organizationId");
1305
2079
 
1306
2080
  -- CreateIndex
1307
2081
  CREATE INDEX "Floor_factoryId_idx" ON "factory"."Floor"("factoryId");
1308
2082
 
2083
+ -- CreateIndex
2084
+ CREATE INDEX "FloorType_organizationId_idx" ON "factory"."FloorType"("organizationId");
2085
+
1309
2086
  -- CreateIndex
1310
2087
  CREATE UNIQUE INDEX "FloorType_organizationId_name_key" ON "factory"."FloorType"("organizationId", "name");
1311
2088
 
@@ -1315,18 +2092,78 @@ CREATE UNIQUE INDEX "FloorSetting_floorId_key" ON "factory"."FloorSetting"("floo
1315
2092
  -- CreateIndex
1316
2093
  CREATE INDEX "AssemblyLine_floorId_idx" ON "factory"."AssemblyLine"("floorId");
1317
2094
 
2095
+ -- CreateIndex
2096
+ CREATE INDEX "AssemblyLine_organizationId_idx" ON "factory"."AssemblyLine"("organizationId");
2097
+
1318
2098
  -- CreateIndex
1319
2099
  CREATE INDEX "FactoryShift_factoryId_idx" ON "factory"."FactoryShift"("factoryId");
1320
2100
 
2101
+ -- CreateIndex
2102
+ CREATE INDEX "FactoryShiftMachine_shiftId_idx" ON "factory"."FactoryShiftMachine"("shiftId");
2103
+
2104
+ -- CreateIndex
2105
+ CREATE INDEX "FactoryShiftMachine_machineId_idx" ON "factory"."FactoryShiftMachine"("machineId");
2106
+
1321
2107
  -- CreateIndex
1322
2108
  CREATE INDEX "FactoryLot_factoryId_idx" ON "factory"."FactoryLot"("factoryId");
1323
2109
 
2110
+ -- CreateIndex
2111
+ CREATE INDEX "FactoryLot_lotNumber_idx" ON "factory"."FactoryLot"("lotNumber");
2112
+
2113
+ -- CreateIndex
2114
+ CREATE UNIQUE INDEX "FactoryLot_factoryId_lotNumber_key" ON "factory"."FactoryLot"("factoryId", "lotNumber");
2115
+
1324
2116
  -- CreateIndex
1325
2117
  CREATE INDEX "FinalProduct_externalId_idx" ON "inventory"."FinalProduct"("externalId");
1326
2118
 
2119
+ -- CreateIndex
2120
+ CREATE INDEX "FinalProduct_factoryId_idx" ON "inventory"."FinalProduct"("factoryId");
2121
+
2122
+ -- CreateIndex
2123
+ CREATE UNIQUE INDEX "FinalProduct_factoryId_code_key" ON "inventory"."FinalProduct"("factoryId", "code");
2124
+
2125
+ -- CreateIndex
2126
+ CREATE INDEX "FinalProductRoute_finalProductId_idx" ON "inventory"."FinalProductRoute"("finalProductId");
2127
+
2128
+ -- CreateIndex
2129
+ CREATE INDEX "FinalProductRoute_finalProductId_sequence_idx" ON "inventory"."FinalProductRoute"("finalProductId", "sequence");
2130
+
2131
+ -- CreateIndex
2132
+ CREATE INDEX "FinalProductMachineOperationRoute_routeId_idx" ON "inventory"."FinalProductMachineOperationRoute"("routeId");
2133
+
2134
+ -- CreateIndex
2135
+ CREATE INDEX "FinalProductMachineOperationRoute_operationId_idx" ON "inventory"."FinalProductMachineOperationRoute"("operationId");
2136
+
2137
+ -- CreateIndex
2138
+ CREATE INDEX "FinalProductMachineOperationRoute_routeId_sequence_idx" ON "inventory"."FinalProductMachineOperationRoute"("routeId", "sequence");
2139
+
2140
+ -- CreateIndex
2141
+ CREATE INDEX "FinalProductRouteDependency_routeId_idx" ON "inventory"."FinalProductRouteDependency"("routeId");
2142
+
2143
+ -- CreateIndex
2144
+ CREATE INDEX "FinalProductRouteDependency_dependsOnRouteId_idx" ON "inventory"."FinalProductRouteDependency"("dependsOnRouteId");
2145
+
2146
+ -- CreateIndex
2147
+ CREATE INDEX "MachineStateLog_machineId_startTime_idx" ON "machine"."MachineStateLog"("machineId", "startTime");
2148
+
2149
+ -- CreateIndex
2150
+ CREATE INDEX "MachineStateLog_state_startTime_idx" ON "machine"."MachineStateLog"("state", "startTime");
2151
+
2152
+ -- CreateIndex
2153
+ CREATE INDEX "MachineProgram_machineId_idx" ON "machine"."MachineProgram"("machineId");
2154
+
2155
+ -- CreateIndex
2156
+ CREATE UNIQUE INDEX "MachineProgram_machineId_programNumber_key" ON "machine"."MachineProgram"("machineId", "programNumber");
2157
+
1327
2158
  -- CreateIndex
1328
2159
  CREATE INDEX "Machine_assemblyLineId_idx" ON "machine"."Machine"("assemblyLineId");
1329
2160
 
2161
+ -- CreateIndex
2162
+ CREATE INDEX "Machine_primaryProtocol_idx" ON "machine"."Machine"("primaryProtocol");
2163
+
2164
+ -- CreateIndex
2165
+ CREATE INDEX "Machine_isConnected_idx" ON "machine"."Machine"("isConnected");
2166
+
1330
2167
  -- CreateIndex
1331
2168
  CREATE UNIQUE INDEX "MachineOperation_organizationId_operationName_key" ON "machine"."MachineOperation"("organizationId", "operationName");
1332
2169
 
@@ -1336,21 +2173,69 @@ CREATE INDEX "MachineEvent_machineId_idx" ON "machine"."MachineEvent"("machineId
1336
2173
  -- CreateIndex
1337
2174
  CREATE UNIQUE INDEX "MachineAlertSubscription_userId_machineId_key" ON "machine"."MachineAlertSubscription"("userId", "machineId");
1338
2175
 
2176
+ -- CreateIndex
2177
+ CREATE INDEX "MaintenanceLog_machineId_idx" ON "maintenance"."MaintenanceLog"("machineId");
2178
+
2179
+ -- CreateIndex
2180
+ CREATE INDEX "MaintenanceLog_status_idx" ON "maintenance"."MaintenanceLog"("status");
2181
+
2182
+ -- CreateIndex
2183
+ CREATE INDEX "MaintenanceLog_organizationId_idx" ON "maintenance"."MaintenanceLog"("organizationId");
2184
+
1339
2185
  -- CreateIndex
1340
2186
  CREATE UNIQUE INDEX "MaintenanceManagerConfig_managerId_key_key" ON "maintenance"."MaintenanceManagerConfig"("managerId", "key");
1341
2187
 
2188
+ -- CreateIndex
2189
+ CREATE INDEX "MaintenanceRequest_machineId_idx" ON "maintenance"."MaintenanceRequest"("machineId");
2190
+
2191
+ -- CreateIndex
2192
+ CREATE INDEX "MaintenanceRequest_status_idx" ON "maintenance"."MaintenanceRequest"("status");
2193
+
2194
+ -- CreateIndex
2195
+ CREATE INDEX "MaintenanceRequest_priority_idx" ON "maintenance"."MaintenanceRequest"("priority");
2196
+
2197
+ -- CreateIndex
2198
+ CREATE INDEX "MaintenanceRequestCategory_factoryId_idx" ON "maintenance"."MaintenanceRequestCategory"("factoryId");
2199
+
1342
2200
  -- CreateIndex
1343
2201
  CREATE UNIQUE INDEX "MaintenanceRequestCategory_factoryId_name_key" ON "maintenance"."MaintenanceRequestCategory"("factoryId", "name");
1344
2202
 
2203
+ -- CreateIndex
2204
+ CREATE INDEX "MaintenanceRequestAssignment_requestId_idx" ON "maintenance"."MaintenanceRequestAssignment"("requestId");
2205
+
2206
+ -- CreateIndex
2207
+ CREATE INDEX "MaintenanceRequestAssignment_technicianId_idx" ON "maintenance"."MaintenanceRequestAssignment"("technicianId");
2208
+
2209
+ -- CreateIndex
2210
+ CREATE INDEX "MaintenanceRequestUpdate_requestId_idx" ON "maintenance"."MaintenanceRequestUpdate"("requestId");
2211
+
2212
+ -- CreateIndex
2213
+ CREATE INDEX "MaintenanceRequestAttachment_updateId_idx" ON "maintenance"."MaintenanceRequestAttachment"("updateId");
2214
+
1345
2215
  -- CreateIndex
1346
2216
  CREATE UNIQUE INDEX "MaintenanceTechnician_email_key" ON "maintenance"."MaintenanceTechnician"("email");
1347
2217
 
2218
+ -- CreateIndex
2219
+ CREATE INDEX "MaintenanceTechnician_factoryId_idx" ON "maintenance"."MaintenanceTechnician"("factoryId");
2220
+
2221
+ -- CreateIndex
2222
+ CREATE INDEX "TechnicianSpecialization_technicianId_idx" ON "maintenance"."TechnicianSpecialization"("technicianId");
2223
+
1348
2224
  -- CreateIndex
1349
2225
  CREATE UNIQUE INDEX "TechnicianSpecialization_technicianId_specializationId_key" ON "maintenance"."TechnicianSpecialization"("technicianId", "specializationId");
1350
2226
 
2227
+ -- CreateIndex
2228
+ CREATE UNIQUE INDEX "Operator_coreUserId_key" ON "operator"."Operator"("coreUserId");
2229
+
1351
2230
  -- CreateIndex
1352
2231
  CREATE INDEX "Operator_externalId_idx" ON "operator"."Operator"("externalId");
1353
2232
 
2233
+ -- CreateIndex
2234
+ CREATE INDEX "Operator_coreUserId_idx" ON "operator"."Operator"("coreUserId");
2235
+
2236
+ -- CreateIndex
2237
+ CREATE INDEX "Operator_organizationId_operatorLevel_idx" ON "operator"."Operator"("organizationId", "operatorLevel");
2238
+
1354
2239
  -- CreateIndex
1355
2240
  CREATE UNIQUE INDEX "Operator_organizationId_rfid_key" ON "operator"."Operator"("organizationId", "rfid");
1356
2241
 
@@ -1378,6 +2263,9 @@ CREATE INDEX "Order_customerId_idx" ON "order"."Order"("customerId");
1378
2263
  -- CreateIndex
1379
2264
  CREATE INDEX "Order_factoryId_idx" ON "order"."Order"("factoryId");
1380
2265
 
2266
+ -- CreateIndex
2267
+ CREATE INDEX "Order_status_idx" ON "order"."Order"("status");
2268
+
1381
2269
  -- CreateIndex
1382
2270
  CREATE INDEX "Order_erpSource_externalId_idx" ON "order"."Order"("erpSource", "externalId");
1383
2271
 
@@ -1387,6 +2275,9 @@ CREATE INDEX "OrderProduct_orderId_idx" ON "order"."OrderProduct"("orderId");
1387
2275
  -- CreateIndex
1388
2276
  CREATE INDEX "OrderProduct_productId_idx" ON "order"."OrderProduct"("productId");
1389
2277
 
2278
+ -- CreateIndex
2279
+ CREATE INDEX "OrderProduct_status_idx" ON "order"."OrderProduct"("status");
2280
+
1390
2281
  -- CreateIndex
1391
2282
  CREATE INDEX "OrderComment_orderId_idx" ON "order"."OrderComment"("orderId");
1392
2283
 
@@ -1396,21 +2287,54 @@ CREATE INDEX "OrderComment_organizationId_idx" ON "order"."OrderComment"("organi
1396
2287
  -- CreateIndex
1397
2288
  CREATE INDEX "OrderComment_authorId_idx" ON "order"."OrderComment"("authorId");
1398
2289
 
1399
- -- CreateIndex
1400
- CREATE UNIQUE INDEX "ProductionUnit_tagId_key" ON "production_tracking"."ProductionUnit"("tagId");
1401
-
1402
2290
  -- CreateIndex
1403
2291
  CREATE UNIQUE INDEX "ProductionUnit_serialNumber_key" ON "production_tracking"."ProductionUnit"("serialNumber");
1404
2292
 
1405
2293
  -- CreateIndex
1406
2294
  CREATE INDEX "ProductionUnit_orderProductId_idx" ON "production_tracking"."ProductionUnit"("orderProductId");
1407
2295
 
2296
+ -- CreateIndex
2297
+ CREATE INDEX "ProductionUnit_serialNumber_idx" ON "production_tracking"."ProductionUnit"("serialNumber");
2298
+
2299
+ -- CreateIndex
2300
+ CREATE INDEX "ProductionUnit_status_idx" ON "production_tracking"."ProductionUnit"("status");
2301
+
2302
+ -- CreateIndex
2303
+ CREATE INDEX "ProductionUnit_organizationId_status_idx" ON "production_tracking"."ProductionUnit"("organizationId", "status");
2304
+
2305
+ -- CreateIndex
2306
+ CREATE INDEX "ProductionUnitIdentifier_productionUnitId_idx" ON "production_tracking"."ProductionUnitIdentifier"("productionUnitId");
2307
+
2308
+ -- CreateIndex
2309
+ CREATE INDEX "ProductionUnitIdentifier_identifierType_identifierValue_idx" ON "production_tracking"."ProductionUnitIdentifier"("identifierType", "identifierValue");
2310
+
2311
+ -- CreateIndex
2312
+ CREATE UNIQUE INDEX "ProductionUnitIdentifier_identifierValue_key" ON "production_tracking"."ProductionUnitIdentifier"("identifierValue");
2313
+
1408
2314
  -- CreateIndex
1409
2315
  CREATE INDEX "ProductionUnitLog_productionUnitId_idx" ON "production_tracking"."ProductionUnitLog"("productionUnitId");
1410
2316
 
2317
+ -- CreateIndex
2318
+ CREATE INDEX "ProductionUnitLog_eventId_idx" ON "production_tracking"."ProductionUnitLog"("eventId");
2319
+
2320
+ -- CreateIndex
2321
+ CREATE INDEX "ProductionUnitLog_createdAt_idx" ON "production_tracking"."ProductionUnitLog"("createdAt");
2322
+
1411
2323
  -- CreateIndex
1412
2324
  CREATE UNIQUE INDEX "ProductionRouteStep_productionUnitId_key" ON "production_tracking"."ProductionRouteStep"("productionUnitId");
1413
2325
 
2326
+ -- CreateIndex
2327
+ CREATE INDEX "ProductionRouteStep_stepId_idx" ON "production_tracking"."ProductionRouteStep"("stepId");
2328
+
2329
+ -- CreateIndex
2330
+ CREATE INDEX "ProductionRouteStep_machineId_idx" ON "production_tracking"."ProductionRouteStep"("machineId");
2331
+
2332
+ -- CreateIndex
2333
+ CREATE INDEX "ProductionUnitQC_productionUnitId_idx" ON "production_tracking"."ProductionUnitQC"("productionUnitId");
2334
+
2335
+ -- CreateIndex
2336
+ CREATE INDEX "ProductionUnitQC_inspectorId_idx" ON "production_tracking"."ProductionUnitQC"("inspectorId");
2337
+
1414
2338
  -- CreateIndex
1415
2339
  CREATE INDEX "OrganizationUserFactoryEntityAccess_userId_organizationId_idx" ON "organization"."OrganizationUserFactoryEntityAccess"("userId", "organizationId");
1416
2340
 
@@ -1429,12 +2353,18 @@ CREATE INDEX "OrganizationUserFactoryEntityAccess_machineId_idx" ON "organizatio
1429
2353
  -- CreateIndex
1430
2354
  CREATE UNIQUE INDEX "OrganizationUserFactoryEntityAccess_userId_factoryId_floorI_key" ON "organization"."OrganizationUserFactoryEntityAccess"("userId", "factoryId", "floorId", "assemblyLineId", "machineId");
1431
2355
 
2356
+ -- CreateIndex
2357
+ CREATE INDEX "MaintenanceSpecialization_organizationId_idx" ON "organization"."MaintenanceSpecialization"("organizationId");
2358
+
1432
2359
  -- CreateIndex
1433
2360
  CREATE UNIQUE INDEX "MaintenanceSpecialization_organizationId_name_key" ON "organization"."MaintenanceSpecialization"("organizationId", "name");
1434
2361
 
1435
2362
  -- CreateIndex
1436
2363
  CREATE INDEX "OrganizationCustomer_organizationId_idx" ON "organization"."OrganizationCustomer"("organizationId");
1437
2364
 
2365
+ -- CreateIndex
2366
+ CREATE UNIQUE INDEX "OrganizationCustomer_organizationId_externalId_key" ON "organization"."OrganizationCustomer"("organizationId", "externalId");
2367
+
1438
2368
  -- CreateIndex
1439
2369
  CREATE INDEX "AssemblyLineType_organizationId_idx" ON "organization"."AssemblyLineType"("organizationId");
1440
2370
 
@@ -1450,12 +2380,30 @@ CREATE INDEX "Task_shiftId_idx" ON "tasks"."Task"("shiftId");
1450
2380
  -- CreateIndex
1451
2381
  CREATE INDEX "Task_taskGroupId_idx" ON "tasks"."Task"("taskGroupId");
1452
2382
 
2383
+ -- CreateIndex
2384
+ CREATE INDEX "Task_status_idx" ON "tasks"."Task"("status");
2385
+
2386
+ -- CreateIndex
2387
+ CREATE INDEX "Task_machineId_status_idx" ON "tasks"."Task"("machineId", "status");
2388
+
2389
+ -- CreateIndex
2390
+ CREATE INDEX "Task_operatorId_status_idx" ON "tasks"."Task"("operatorId", "status");
2391
+
2392
+ -- CreateIndex
2393
+ CREATE INDEX "TaskGroup_status_idx" ON "tasks"."TaskGroup"("status");
2394
+
2395
+ -- CreateIndex
2396
+ CREATE INDEX "TaskGroup_orderProductId_idx" ON "tasks"."TaskGroup"("orderProductId");
2397
+
1453
2398
  -- CreateIndex
1454
2399
  CREATE UNIQUE INDEX "TaskLot_taskId_lotId_key" ON "tasks"."TaskLot"("taskId", "lotId");
1455
2400
 
1456
2401
  -- CreateIndex
1457
2402
  CREATE UNIQUE INDEX "TaskGroupLot_taskGroupId_lotId_key" ON "tasks"."TaskGroupLot"("taskGroupId", "lotId");
1458
2403
 
2404
+ -- CreateIndex
2405
+ CREATE INDEX "TaskInspection_taskId_idx" ON "tasks"."TaskInspection"("taskId");
2406
+
1459
2407
  -- AddForeignKey
1460
2408
  ALTER TABLE "analytics"."MachineHourlyAnalytics" ADD CONSTRAINT "MachineHourlyAnalytics_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "machine"."Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1461
2409
 
@@ -1496,7 +2444,31 @@ ALTER TABLE "analytics"."InfraredSensorHourlyAnalytics" ADD CONSTRAINT "Infrared
1496
2444
  ALTER TABLE "analytics"."DevicePowerSensorHourlyAnalytics" ADD CONSTRAINT "DevicePowerSensorHourlyAnalytics_deviceHourlyAnalyticsId_fkey" FOREIGN KEY ("deviceHourlyAnalyticsId") REFERENCES "analytics"."DeviceHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1497
2445
 
1498
2446
  -- AddForeignKey
1499
- ALTER TABLE "chatbot"."ChatbotMessage" ADD CONSTRAINT "ChatbotMessage_chatHistoryId_fkey" FOREIGN KEY ("chatHistoryId") REFERENCES "chatbot"."ChatbotHistory"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2447
+ ALTER TABLE "analytics"."ProtocolDataSourceHourlyAnalytics" ADD CONSTRAINT "ProtocolDataSourceHourlyAnalytics_dataSourceId_fkey" FOREIGN KEY ("dataSourceId") REFERENCES "device"."ProtocolDataSource"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2448
+
2449
+ -- AddForeignKey
2450
+ ALTER TABLE "analytics"."CurrentSensorHourlyAnalytics" ADD CONSTRAINT "CurrentSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "analytics"."SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2451
+
2452
+ -- AddForeignKey
2453
+ ALTER TABLE "analytics"."VibrationSensorHourlyAnalytics" ADD CONSTRAINT "VibrationSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "analytics"."SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2454
+
2455
+ -- AddForeignKey
2456
+ ALTER TABLE "analytics"."TemperatureSensorHourlyAnalytics" ADD CONSTRAINT "TemperatureSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "analytics"."SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2457
+
2458
+ -- AddForeignKey
2459
+ ALTER TABLE "analytics"."FlowSensorHourlyAnalytics" ADD CONSTRAINT "FlowSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "analytics"."SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2460
+
2461
+ -- AddForeignKey
2462
+ ALTER TABLE "analytics"."WeightSensorHourlyAnalytics" ADD CONSTRAINT "WeightSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "analytics"."SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2463
+
2464
+ -- AddForeignKey
2465
+ ALTER TABLE "analytics"."PressureSensorHourlyAnalytics" ADD CONSTRAINT "PressureSensorHourlyAnalytics_sensorHourlyAnalyticsId_fkey" FOREIGN KEY ("sensorHourlyAnalyticsId") REFERENCES "analytics"."SensorHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2466
+
2467
+ -- AddForeignKey
2468
+ ALTER TABLE "chatbot"."ChatbotMessage" ADD CONSTRAINT "ChatbotMessage_chatHistoryId_fkey" FOREIGN KEY ("chatHistoryId") REFERENCES "chatbot"."ChatbotHistory"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2469
+
2470
+ -- AddForeignKey
2471
+ ALTER TABLE "chatbot"."ChatbotKnowledgeChunk" ADD CONSTRAINT "ChatbotKnowledgeChunk_knowledgeBaseId_fkey" FOREIGN KEY ("knowledgeBaseId") REFERENCES "chatbot"."ChatbotKnowledgeBase"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1500
2472
 
1501
2473
  -- AddForeignKey
1502
2474
  ALTER TABLE "device"."Gateway" ADD CONSTRAINT "Gateway_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "factory"."Floor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -1549,6 +2521,21 @@ ALTER TABLE "device"."MachineDeviceAssignment" ADD CONSTRAINT "MachineDeviceAssi
1549
2521
  -- AddForeignKey
1550
2522
  ALTER TABLE "device"."MachineDeviceAssignment" ADD CONSTRAINT "MachineDeviceAssignment_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "machine"."Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1551
2523
 
2524
+ -- AddForeignKey
2525
+ ALTER TABLE "device"."VibrationSensorConfig" ADD CONSTRAINT "VibrationSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2526
+
2527
+ -- AddForeignKey
2528
+ ALTER TABLE "device"."TemperatureSensorConfig" ADD CONSTRAINT "TemperatureSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2529
+
2530
+ -- AddForeignKey
2531
+ ALTER TABLE "device"."FlowSensorConfig" ADD CONSTRAINT "FlowSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2532
+
2533
+ -- AddForeignKey
2534
+ ALTER TABLE "device"."WeightSensorConfig" ADD CONSTRAINT "WeightSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2535
+
2536
+ -- AddForeignKey
2537
+ ALTER TABLE "device"."PressureSensorConfig" ADD CONSTRAINT "PressureSensorConfig_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2538
+
1552
2539
  -- AddForeignKey
1553
2540
  ALTER TABLE "device"."SensorLog" ADD CONSTRAINT "SensorLog_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1554
2541
 
@@ -1570,6 +2557,36 @@ ALTER TABLE "device"."CurrentSensorLog" ADD CONSTRAINT "CurrentSensorLog_sensorL
1570
2557
  -- AddForeignKey
1571
2558
  ALTER TABLE "device"."DevicePowerSensorLog" ADD CONSTRAINT "DevicePowerSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "device"."SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1572
2559
 
2560
+ -- AddForeignKey
2561
+ ALTER TABLE "device"."VibrationSensorLog" ADD CONSTRAINT "VibrationSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "device"."SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2562
+
2563
+ -- AddForeignKey
2564
+ ALTER TABLE "device"."TemperatureSensorLog" ADD CONSTRAINT "TemperatureSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "device"."SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2565
+
2566
+ -- AddForeignKey
2567
+ ALTER TABLE "device"."FlowSensorLog" ADD CONSTRAINT "FlowSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "device"."SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2568
+
2569
+ -- AddForeignKey
2570
+ ALTER TABLE "device"."WeightSensorLog" ADD CONSTRAINT "WeightSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "device"."SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2571
+
2572
+ -- AddForeignKey
2573
+ ALTER TABLE "device"."PressureSensorLog" ADD CONSTRAINT "PressureSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "device"."SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2574
+
2575
+ -- AddForeignKey
2576
+ ALTER TABLE "device"."ProtocolDataSource" ADD CONSTRAINT "ProtocolDataSource_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE SET NULL ON UPDATE CASCADE;
2577
+
2578
+ -- AddForeignKey
2579
+ ALTER TABLE "device"."ProtocolDataSource" ADD CONSTRAINT "ProtocolDataSource_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "machine"."Machine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
2580
+
2581
+ -- AddForeignKey
2582
+ ALTER TABLE "device"."ProtocolDataSource" ADD CONSTRAINT "ProtocolDataSource_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "device"."Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2583
+
2584
+ -- AddForeignKey
2585
+ ALTER TABLE "device"."ProtocolDataLog" ADD CONSTRAINT "ProtocolDataLog_dataSourceId_fkey" FOREIGN KEY ("dataSourceId") REFERENCES "device"."ProtocolDataSource"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2586
+
2587
+ -- AddForeignKey
2588
+ ALTER TABLE "device"."DeviceConnection" ADD CONSTRAINT "DeviceConnection_parentDeviceId_fkey" FOREIGN KEY ("parentDeviceId") REFERENCES "device"."Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2589
+
1573
2590
  -- AddForeignKey
1574
2591
  ALTER TABLE "factory"."Floor" ADD CONSTRAINT "Floor_floorTypeId_fkey" FOREIGN KEY ("floorTypeId") REFERENCES "factory"."FloorType"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1575
2592
 
@@ -1612,6 +2629,15 @@ ALTER TABLE "inventory"."FinalProductRouteDependency" ADD CONSTRAINT "FinalProdu
1612
2629
  -- AddForeignKey
1613
2630
  ALTER TABLE "inventory"."FinalProductRouteDependency" ADD CONSTRAINT "FinalProductRouteDependency_dependsOnRouteId_fkey" FOREIGN KEY ("dependsOnRouteId") REFERENCES "inventory"."FinalProductRoute"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1614
2631
 
2632
+ -- AddForeignKey
2633
+ ALTER TABLE "machine"."MachineStateLog" ADD CONSTRAINT "MachineStateLog_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "machine"."Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2634
+
2635
+ -- AddForeignKey
2636
+ ALTER TABLE "machine"."MachineProgram" ADD CONSTRAINT "MachineProgram_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "machine"."Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2637
+
2638
+ -- AddForeignKey
2639
+ ALTER TABLE "machine"."Machine" ADD CONSTRAINT "Machine_currentProgramId_fkey" FOREIGN KEY ("currentProgramId") REFERENCES "machine"."MachineProgram"("id") ON DELETE SET NULL ON UPDATE CASCADE;
2640
+
1615
2641
  -- AddForeignKey
1616
2642
  ALTER TABLE "machine"."Machine" ADD CONSTRAINT "Machine_assemblyLineId_fkey" FOREIGN KEY ("assemblyLineId") REFERENCES "factory"."AssemblyLine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1617
2643
 
@@ -1684,6 +2710,9 @@ ALTER TABLE "order"."OrderComment" ADD CONSTRAINT "OrderComment_orderId_fkey" FO
1684
2710
  -- AddForeignKey
1685
2711
  ALTER TABLE "production_tracking"."ProductionUnit" ADD CONSTRAINT "ProductionUnit_orderProductId_fkey" FOREIGN KEY ("orderProductId") REFERENCES "order"."OrderProduct"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1686
2712
 
2713
+ -- AddForeignKey
2714
+ ALTER TABLE "production_tracking"."ProductionUnitIdentifier" ADD CONSTRAINT "ProductionUnitIdentifier_productionUnitId_fkey" FOREIGN KEY ("productionUnitId") REFERENCES "production_tracking"."ProductionUnit"("id") ON DELETE CASCADE ON UPDATE CASCADE;
2715
+
1687
2716
  -- AddForeignKey
1688
2717
  ALTER TABLE "production_tracking"."ProductionUnitLog" ADD CONSTRAINT "ProductionUnitLog_productionUnitId_fkey" FOREIGN KEY ("productionUnitId") REFERENCES "production_tracking"."ProductionUnit"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1689
2718
 
@@ -1733,10 +2762,10 @@ ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_factoryId_fkey" FOREIGN KEY ("fa
1733
2762
  ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_operatorOpCategoryId_fkey" FOREIGN KEY ("operatorOpCategoryId") REFERENCES "tasks"."OperatorOperationCategory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1734
2763
 
1735
2764
  -- AddForeignKey
1736
- ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_reworkOfTaskId_fkey" FOREIGN KEY ("reworkOfTaskId") REFERENCES "tasks"."Task"("id") ON DELETE SET NULL ON UPDATE CASCADE;
2765
+ ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_machineOperationId_fkey" FOREIGN KEY ("machineOperationId") REFERENCES "machine"."MachineOperation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1737
2766
 
1738
2767
  -- AddForeignKey
1739
- ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_machineOperationId_fkey" FOREIGN KEY ("machineOperationId") REFERENCES "machine"."MachineOperation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
2768
+ ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_reworkOfTaskId_fkey" FOREIGN KEY ("reworkOfTaskId") REFERENCES "tasks"."Task"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1740
2769
 
1741
2770
  -- AddForeignKey
1742
2771
  ALTER TABLE "tasks"."TaskGroup" ADD CONSTRAINT "TaskGroup_reworkOfTaskGroupId_fkey" FOREIGN KEY ("reworkOfTaskGroupId") REFERENCES "tasks"."TaskGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -1767,3 +2796,24 @@ ALTER TABLE "tasks"."TaskInspection" ADD CONSTRAINT "TaskInspection_taskId_fkey"
1767
2796
 
1768
2797
  -- AddForeignKey
1769
2798
  ALTER TABLE "tasks"."TaskComment" ADD CONSTRAINT "TaskComment_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "tasks"."Task"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
2799
+
2800
+
2801
+ -- ChatbotMessage embedding index
2802
+ CREATE INDEX IF NOT EXISTS "chatbot_message_embedding_idx"
2803
+ ON "chatbot"."ChatbotMessage"
2804
+ USING hnsw (embedding vector_cosine_ops);
2805
+
2806
+ -- ChatbotKnowledgeBase embedding index
2807
+ CREATE INDEX IF NOT EXISTS "chatbot_knowledge_base_embedding_idx"
2808
+ ON "chatbot"."ChatbotKnowledgeBase"
2809
+ USING hnsw (embedding vector_cosine_ops);
2810
+
2811
+ -- ChatbotKnowledgeChunk embedding index
2812
+ CREATE INDEX IF NOT EXISTS "chatbot_knowledge_chunk_embedding_idx"
2813
+ ON "chatbot"."ChatbotKnowledgeChunk"
2814
+ USING hnsw (embedding vector_cosine_ops);
2815
+
2816
+ -- ChatbotSearchHistory queryEmbedding index
2817
+ CREATE INDEX IF NOT EXISTS "chatbot_search_history_embedding_idx"
2818
+ ON "chatbot"."ChatbotSearchHistory"
2819
+ USING hnsw ("queryEmbedding" vector_cosine_ops);