@machynx/data-db 1.0.4 → 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,11 +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
- "name" TEXT,
1386
+ "firstName" TEXT,
1387
+ "lastName" TEXT,
842
1388
  "description" TEXT,
843
1389
  "organizationId" INTEGER,
844
1390
  "factoryId" INTEGER,
1391
+ "operatorLevel" "operator"."OperatorLevel" DEFAULT 'FLOOR_WORKER',
1392
+ "teamId" INTEGER,
1393
+ "teamName" TEXT,
845
1394
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
846
1395
  "updatedAt" TIMESTAMP(3) NOT NULL,
847
1396
 
@@ -925,8 +1474,7 @@ CREATE TABLE "order"."OrderComment" (
925
1474
  -- CreateTable
926
1475
  CREATE TABLE "production_tracking"."ProductionUnit" (
927
1476
  "id" TEXT NOT NULL,
928
- "tagId" TEXT NOT NULL,
929
- "serialNumber" TEXT,
1477
+ "serialNumber" TEXT NOT NULL,
930
1478
  "organizationId" INTEGER NOT NULL,
931
1479
  "orderProductId" INTEGER NOT NULL,
932
1480
  "currentStepId" INTEGER,
@@ -937,6 +1485,19 @@ CREATE TABLE "production_tracking"."ProductionUnit" (
937
1485
  CONSTRAINT "ProductionUnit_pkey" PRIMARY KEY ("id")
938
1486
  );
939
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
+
940
1501
  -- CreateTable
941
1502
  CREATE TABLE "production_tracking"."ProductionUnitLog" (
942
1503
  "id" TEXT NOT NULL,
@@ -945,6 +1506,7 @@ CREATE TABLE "production_tracking"."ProductionUnitLog" (
945
1506
  "details" TEXT,
946
1507
  "stepId" INTEGER,
947
1508
  "operatorId" INTEGER,
1509
+ "scannedBy" TEXT,
948
1510
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
949
1511
 
950
1512
  CONSTRAINT "ProductionUnitLog_pkey" PRIMARY KEY ("id")
@@ -1004,6 +1566,7 @@ CREATE TABLE "organization"."MaintenanceSpecialization" (
1004
1566
  CREATE TABLE "organization"."OrganizationCustomer" (
1005
1567
  "id" SERIAL NOT NULL,
1006
1568
  "organizationId" INTEGER NOT NULL,
1569
+ "externalId" TEXT,
1007
1570
  "name" TEXT NOT NULL,
1008
1571
  "description" TEXT,
1009
1572
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -1053,8 +1616,16 @@ CREATE TABLE "tasks"."Task" (
1053
1616
  "status" "tasks"."TaskStatus" NOT NULL DEFAULT 'NEW',
1054
1617
  "startTime" TIMESTAMP(3) NOT NULL,
1055
1618
  "endTime" TIMESTAMP(3) NOT NULL,
1056
- "targetCount" INTEGER,
1057
- "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,
1058
1629
  "sequence" INTEGER NOT NULL DEFAULT 0,
1059
1630
  "reworkOfTaskId" INTEGER,
1060
1631
  "reworkCount" INTEGER NOT NULL DEFAULT 0,
@@ -1072,7 +1643,13 @@ CREATE TABLE "tasks"."TaskGroup" (
1072
1643
  "id" SERIAL NOT NULL,
1073
1644
  "description" TEXT,
1074
1645
  "status" "tasks"."TaskGroupStatus" NOT NULL DEFAULT 'NEW',
1075
- "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,
1076
1653
  "factoryId" INTEGER,
1077
1654
  "organizationId" INTEGER,
1078
1655
  "productRouteId" INTEGER,
@@ -1112,8 +1689,11 @@ CREATE TABLE "tasks"."TaskInspection" (
1112
1689
  "taskId" INTEGER NOT NULL,
1113
1690
  "inspectorId" INTEGER NOT NULL,
1114
1691
  "passed" BOOLEAN NOT NULL DEFAULT false,
1115
- "defectCount" INTEGER NOT NULL DEFAULT 0,
1116
- "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',
1117
1697
  "notes" TEXT,
1118
1698
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1119
1699
  "updatedAt" TIMESTAMP(3) NOT NULL,
@@ -1179,6 +1759,30 @@ CREATE UNIQUE INDEX "unique_infraredCompound" ON "analytics"."InfraredSensorHour
1179
1759
  -- CreateIndex
1180
1760
  CREATE UNIQUE INDEX "DevicePowerSensorHourlyAnalytics_deviceHourlyAnalyticsId_key" ON "analytics"."DevicePowerSensorHourlyAnalytics"("deviceHourlyAnalyticsId");
1181
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
+
1182
1786
  -- CreateIndex
1183
1787
  CREATE INDEX "AuditLog_entityName_entityId_idx" ON "audit"."AuditLog"("entityName", "entityId");
1184
1788
 
@@ -1188,27 +1792,132 @@ CREATE INDEX "AuditLog_userId_idx" ON "audit"."AuditLog"("userId");
1188
1792
  -- CreateIndex
1189
1793
  CREATE INDEX "AuditLog_organizationId_idx" ON "audit"."AuditLog"("organizationId");
1190
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
+
1191
1804
  -- CreateIndex
1192
1805
  CREATE INDEX "ChatbotHistory_userId_idx" ON "chatbot"."ChatbotHistory"("userId");
1193
1806
 
1194
1807
  -- CreateIndex
1195
1808
  CREATE INDEX "ChatbotHistory_organizationId_idx" ON "chatbot"."ChatbotHistory"("organizationId");
1196
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
+
1197
1822
  -- CreateIndex
1198
1823
  CREATE INDEX "ChatbotHistory_createdAt_idx" ON "chatbot"."ChatbotHistory"("createdAt");
1199
1824
 
1200
1825
  -- CreateIndex
1201
- 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");
1202
1830
 
1203
1831
  -- CreateIndex
1204
1832
  CREATE INDEX "ChatbotMessage_chatHistoryId_idx" ON "chatbot"."ChatbotMessage"("chatHistoryId");
1205
1833
 
1206
1834
  -- CreateIndex
1207
- 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");
1208
1914
 
1209
1915
  -- CreateIndex
1210
1916
  CREATE UNIQUE INDEX "Gateway_gatewayUid_key" ON "device"."Gateway"("gatewayUid");
1211
1917
 
1918
+ -- CreateIndex
1919
+ CREATE UNIQUE INDEX "Gateway_globalInventoryDeviceId_key" ON "device"."Gateway"("globalInventoryDeviceId");
1920
+
1212
1921
  -- CreateIndex
1213
1922
  CREATE INDEX "Gateway_floorId_idx" ON "device"."Gateway"("floorId");
1214
1923
 
@@ -1221,6 +1930,9 @@ CREATE UNIQUE INDEX "Device_globalDeviceUid_key" ON "device"."Device"("globalDev
1221
1930
  -- CreateIndex
1222
1931
  CREATE UNIQUE INDEX "Device_deviceUid_key" ON "device"."Device"("deviceUid");
1223
1932
 
1933
+ -- CreateIndex
1934
+ CREATE UNIQUE INDEX "Device_globalInventoryDeviceId_key" ON "device"."Device"("globalInventoryDeviceId");
1935
+
1224
1936
  -- CreateIndex
1225
1937
  CREATE INDEX "Device_organizationId_idx" ON "device"."Device"("organizationId");
1226
1938
 
@@ -1236,12 +1948,18 @@ CREATE INDEX "Device_machineId_idx" ON "device"."Device"("machineId");
1236
1948
  -- CreateIndex
1237
1949
  CREATE INDEX "Device_factoryId_idx" ON "device"."Device"("factoryId");
1238
1950
 
1951
+ -- CreateIndex
1952
+ CREATE INDEX "Device_ipAddress_idx" ON "device"."Device"("ipAddress");
1953
+
1239
1954
  -- CreateIndex
1240
1955
  CREATE UNIQUE INDEX "Sensor_sensorUid_key" ON "device"."Sensor"("sensorUid");
1241
1956
 
1242
1957
  -- CreateIndex
1243
1958
  CREATE INDEX "Sensor_deviceId_idx" ON "device"."Sensor"("deviceId");
1244
1959
 
1960
+ -- CreateIndex
1961
+ CREATE INDEX "Sensor_isVirtual_idx" ON "device"."Sensor"("isVirtual");
1962
+
1245
1963
  -- CreateIndex
1246
1964
  CREATE UNIQUE INDEX "ProximitySensorConfig_sensorId_key" ON "device"."ProximitySensorConfig"("sensorId");
1247
1965
 
@@ -1263,6 +1981,21 @@ CREATE INDEX "MachineDeviceAssignment_assignedAt_idx" ON "device"."MachineDevice
1263
1981
  -- CreateIndex
1264
1982
  CREATE INDEX "MachineDeviceAssignment_unassignedAt_idx" ON "device"."MachineDeviceAssignment"("unassignedAt");
1265
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
+
1266
1999
  -- CreateIndex
1267
2000
  CREATE INDEX "SensorLog_isProcessed_idx" ON "device"."SensorLog"("isProcessed");
1268
2001
 
@@ -1299,12 +2032,57 @@ CREATE UNIQUE INDEX "CurrentSensorLog_sensorLogId_key" ON "device"."CurrentSenso
1299
2032
  -- CreateIndex
1300
2033
  CREATE UNIQUE INDEX "DevicePowerSensorLog_sensorLogId_key" ON "device"."DevicePowerSensorLog"("sensorLogId");
1301
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
+
1302
2077
  -- CreateIndex
1303
2078
  CREATE INDEX "Factory_organizationId_idx" ON "factory"."Factory"("organizationId");
1304
2079
 
1305
2080
  -- CreateIndex
1306
2081
  CREATE INDEX "Floor_factoryId_idx" ON "factory"."Floor"("factoryId");
1307
2082
 
2083
+ -- CreateIndex
2084
+ CREATE INDEX "FloorType_organizationId_idx" ON "factory"."FloorType"("organizationId");
2085
+
1308
2086
  -- CreateIndex
1309
2087
  CREATE UNIQUE INDEX "FloorType_organizationId_name_key" ON "factory"."FloorType"("organizationId", "name");
1310
2088
 
@@ -1314,18 +2092,78 @@ CREATE UNIQUE INDEX "FloorSetting_floorId_key" ON "factory"."FloorSetting"("floo
1314
2092
  -- CreateIndex
1315
2093
  CREATE INDEX "AssemblyLine_floorId_idx" ON "factory"."AssemblyLine"("floorId");
1316
2094
 
2095
+ -- CreateIndex
2096
+ CREATE INDEX "AssemblyLine_organizationId_idx" ON "factory"."AssemblyLine"("organizationId");
2097
+
1317
2098
  -- CreateIndex
1318
2099
  CREATE INDEX "FactoryShift_factoryId_idx" ON "factory"."FactoryShift"("factoryId");
1319
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
+
1320
2107
  -- CreateIndex
1321
2108
  CREATE INDEX "FactoryLot_factoryId_idx" ON "factory"."FactoryLot"("factoryId");
1322
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
+
1323
2116
  -- CreateIndex
1324
2117
  CREATE INDEX "FinalProduct_externalId_idx" ON "inventory"."FinalProduct"("externalId");
1325
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
+
1326
2158
  -- CreateIndex
1327
2159
  CREATE INDEX "Machine_assemblyLineId_idx" ON "machine"."Machine"("assemblyLineId");
1328
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
+
1329
2167
  -- CreateIndex
1330
2168
  CREATE UNIQUE INDEX "MachineOperation_organizationId_operationName_key" ON "machine"."MachineOperation"("organizationId", "operationName");
1331
2169
 
@@ -1335,21 +2173,69 @@ CREATE INDEX "MachineEvent_machineId_idx" ON "machine"."MachineEvent"("machineId
1335
2173
  -- CreateIndex
1336
2174
  CREATE UNIQUE INDEX "MachineAlertSubscription_userId_machineId_key" ON "machine"."MachineAlertSubscription"("userId", "machineId");
1337
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
+
1338
2185
  -- CreateIndex
1339
2186
  CREATE UNIQUE INDEX "MaintenanceManagerConfig_managerId_key_key" ON "maintenance"."MaintenanceManagerConfig"("managerId", "key");
1340
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
+
1341
2200
  -- CreateIndex
1342
2201
  CREATE UNIQUE INDEX "MaintenanceRequestCategory_factoryId_name_key" ON "maintenance"."MaintenanceRequestCategory"("factoryId", "name");
1343
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
+
1344
2215
  -- CreateIndex
1345
2216
  CREATE UNIQUE INDEX "MaintenanceTechnician_email_key" ON "maintenance"."MaintenanceTechnician"("email");
1346
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
+
1347
2224
  -- CreateIndex
1348
2225
  CREATE UNIQUE INDEX "TechnicianSpecialization_technicianId_specializationId_key" ON "maintenance"."TechnicianSpecialization"("technicianId", "specializationId");
1349
2226
 
2227
+ -- CreateIndex
2228
+ CREATE UNIQUE INDEX "Operator_coreUserId_key" ON "operator"."Operator"("coreUserId");
2229
+
1350
2230
  -- CreateIndex
1351
2231
  CREATE INDEX "Operator_externalId_idx" ON "operator"."Operator"("externalId");
1352
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
+
1353
2239
  -- CreateIndex
1354
2240
  CREATE UNIQUE INDEX "Operator_organizationId_rfid_key" ON "operator"."Operator"("organizationId", "rfid");
1355
2241
 
@@ -1377,6 +2263,9 @@ CREATE INDEX "Order_customerId_idx" ON "order"."Order"("customerId");
1377
2263
  -- CreateIndex
1378
2264
  CREATE INDEX "Order_factoryId_idx" ON "order"."Order"("factoryId");
1379
2265
 
2266
+ -- CreateIndex
2267
+ CREATE INDEX "Order_status_idx" ON "order"."Order"("status");
2268
+
1380
2269
  -- CreateIndex
1381
2270
  CREATE INDEX "Order_erpSource_externalId_idx" ON "order"."Order"("erpSource", "externalId");
1382
2271
 
@@ -1386,6 +2275,9 @@ CREATE INDEX "OrderProduct_orderId_idx" ON "order"."OrderProduct"("orderId");
1386
2275
  -- CreateIndex
1387
2276
  CREATE INDEX "OrderProduct_productId_idx" ON "order"."OrderProduct"("productId");
1388
2277
 
2278
+ -- CreateIndex
2279
+ CREATE INDEX "OrderProduct_status_idx" ON "order"."OrderProduct"("status");
2280
+
1389
2281
  -- CreateIndex
1390
2282
  CREATE INDEX "OrderComment_orderId_idx" ON "order"."OrderComment"("orderId");
1391
2283
 
@@ -1395,21 +2287,54 @@ CREATE INDEX "OrderComment_organizationId_idx" ON "order"."OrderComment"("organi
1395
2287
  -- CreateIndex
1396
2288
  CREATE INDEX "OrderComment_authorId_idx" ON "order"."OrderComment"("authorId");
1397
2289
 
1398
- -- CreateIndex
1399
- CREATE UNIQUE INDEX "ProductionUnit_tagId_key" ON "production_tracking"."ProductionUnit"("tagId");
1400
-
1401
2290
  -- CreateIndex
1402
2291
  CREATE UNIQUE INDEX "ProductionUnit_serialNumber_key" ON "production_tracking"."ProductionUnit"("serialNumber");
1403
2292
 
1404
2293
  -- CreateIndex
1405
2294
  CREATE INDEX "ProductionUnit_orderProductId_idx" ON "production_tracking"."ProductionUnit"("orderProductId");
1406
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
+
1407
2314
  -- CreateIndex
1408
2315
  CREATE INDEX "ProductionUnitLog_productionUnitId_idx" ON "production_tracking"."ProductionUnitLog"("productionUnitId");
1409
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
+
1410
2323
  -- CreateIndex
1411
2324
  CREATE UNIQUE INDEX "ProductionRouteStep_productionUnitId_key" ON "production_tracking"."ProductionRouteStep"("productionUnitId");
1412
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
+
1413
2338
  -- CreateIndex
1414
2339
  CREATE INDEX "OrganizationUserFactoryEntityAccess_userId_organizationId_idx" ON "organization"."OrganizationUserFactoryEntityAccess"("userId", "organizationId");
1415
2340
 
@@ -1428,12 +2353,18 @@ CREATE INDEX "OrganizationUserFactoryEntityAccess_machineId_idx" ON "organizatio
1428
2353
  -- CreateIndex
1429
2354
  CREATE UNIQUE INDEX "OrganizationUserFactoryEntityAccess_userId_factoryId_floorI_key" ON "organization"."OrganizationUserFactoryEntityAccess"("userId", "factoryId", "floorId", "assemblyLineId", "machineId");
1430
2355
 
2356
+ -- CreateIndex
2357
+ CREATE INDEX "MaintenanceSpecialization_organizationId_idx" ON "organization"."MaintenanceSpecialization"("organizationId");
2358
+
1431
2359
  -- CreateIndex
1432
2360
  CREATE UNIQUE INDEX "MaintenanceSpecialization_organizationId_name_key" ON "organization"."MaintenanceSpecialization"("organizationId", "name");
1433
2361
 
1434
2362
  -- CreateIndex
1435
2363
  CREATE INDEX "OrganizationCustomer_organizationId_idx" ON "organization"."OrganizationCustomer"("organizationId");
1436
2364
 
2365
+ -- CreateIndex
2366
+ CREATE UNIQUE INDEX "OrganizationCustomer_organizationId_externalId_key" ON "organization"."OrganizationCustomer"("organizationId", "externalId");
2367
+
1437
2368
  -- CreateIndex
1438
2369
  CREATE INDEX "AssemblyLineType_organizationId_idx" ON "organization"."AssemblyLineType"("organizationId");
1439
2370
 
@@ -1449,12 +2380,30 @@ CREATE INDEX "Task_shiftId_idx" ON "tasks"."Task"("shiftId");
1449
2380
  -- CreateIndex
1450
2381
  CREATE INDEX "Task_taskGroupId_idx" ON "tasks"."Task"("taskGroupId");
1451
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
+
1452
2398
  -- CreateIndex
1453
2399
  CREATE UNIQUE INDEX "TaskLot_taskId_lotId_key" ON "tasks"."TaskLot"("taskId", "lotId");
1454
2400
 
1455
2401
  -- CreateIndex
1456
2402
  CREATE UNIQUE INDEX "TaskGroupLot_taskGroupId_lotId_key" ON "tasks"."TaskGroupLot"("taskGroupId", "lotId");
1457
2403
 
2404
+ -- CreateIndex
2405
+ CREATE INDEX "TaskInspection_taskId_idx" ON "tasks"."TaskInspection"("taskId");
2406
+
1458
2407
  -- AddForeignKey
1459
2408
  ALTER TABLE "analytics"."MachineHourlyAnalytics" ADD CONSTRAINT "MachineHourlyAnalytics_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "machine"."Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1460
2409
 
@@ -1495,7 +2444,31 @@ ALTER TABLE "analytics"."InfraredSensorHourlyAnalytics" ADD CONSTRAINT "Infrared
1495
2444
  ALTER TABLE "analytics"."DevicePowerSensorHourlyAnalytics" ADD CONSTRAINT "DevicePowerSensorHourlyAnalytics_deviceHourlyAnalyticsId_fkey" FOREIGN KEY ("deviceHourlyAnalyticsId") REFERENCES "analytics"."DeviceHourlyAnalytics"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1496
2445
 
1497
2446
  -- AddForeignKey
1498
- 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;
1499
2472
 
1500
2473
  -- AddForeignKey
1501
2474
  ALTER TABLE "device"."Gateway" ADD CONSTRAINT "Gateway_floorId_fkey" FOREIGN KEY ("floorId") REFERENCES "factory"."Floor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -1548,6 +2521,21 @@ ALTER TABLE "device"."MachineDeviceAssignment" ADD CONSTRAINT "MachineDeviceAssi
1548
2521
  -- AddForeignKey
1549
2522
  ALTER TABLE "device"."MachineDeviceAssignment" ADD CONSTRAINT "MachineDeviceAssignment_machineId_fkey" FOREIGN KEY ("machineId") REFERENCES "machine"."Machine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1550
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
+
1551
2539
  -- AddForeignKey
1552
2540
  ALTER TABLE "device"."SensorLog" ADD CONSTRAINT "SensorLog_sensorId_fkey" FOREIGN KEY ("sensorId") REFERENCES "device"."Sensor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1553
2541
 
@@ -1569,6 +2557,36 @@ ALTER TABLE "device"."CurrentSensorLog" ADD CONSTRAINT "CurrentSensorLog_sensorL
1569
2557
  -- AddForeignKey
1570
2558
  ALTER TABLE "device"."DevicePowerSensorLog" ADD CONSTRAINT "DevicePowerSensorLog_sensorLogId_fkey" FOREIGN KEY ("sensorLogId") REFERENCES "device"."SensorLog"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1571
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
+
1572
2590
  -- AddForeignKey
1573
2591
  ALTER TABLE "factory"."Floor" ADD CONSTRAINT "Floor_floorTypeId_fkey" FOREIGN KEY ("floorTypeId") REFERENCES "factory"."FloorType"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1574
2592
 
@@ -1611,6 +2629,15 @@ ALTER TABLE "inventory"."FinalProductRouteDependency" ADD CONSTRAINT "FinalProdu
1611
2629
  -- AddForeignKey
1612
2630
  ALTER TABLE "inventory"."FinalProductRouteDependency" ADD CONSTRAINT "FinalProductRouteDependency_dependsOnRouteId_fkey" FOREIGN KEY ("dependsOnRouteId") REFERENCES "inventory"."FinalProductRoute"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1613
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
+
1614
2641
  -- AddForeignKey
1615
2642
  ALTER TABLE "machine"."Machine" ADD CONSTRAINT "Machine_assemblyLineId_fkey" FOREIGN KEY ("assemblyLineId") REFERENCES "factory"."AssemblyLine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1616
2643
 
@@ -1683,6 +2710,9 @@ ALTER TABLE "order"."OrderComment" ADD CONSTRAINT "OrderComment_orderId_fkey" FO
1683
2710
  -- AddForeignKey
1684
2711
  ALTER TABLE "production_tracking"."ProductionUnit" ADD CONSTRAINT "ProductionUnit_orderProductId_fkey" FOREIGN KEY ("orderProductId") REFERENCES "order"."OrderProduct"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1685
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
+
1686
2716
  -- AddForeignKey
1687
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;
1688
2718
 
@@ -1732,10 +2762,10 @@ ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_factoryId_fkey" FOREIGN KEY ("fa
1732
2762
  ALTER TABLE "tasks"."Task" ADD CONSTRAINT "Task_operatorOpCategoryId_fkey" FOREIGN KEY ("operatorOpCategoryId") REFERENCES "tasks"."OperatorOperationCategory"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1733
2763
 
1734
2764
  -- AddForeignKey
1735
- 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;
1736
2766
 
1737
2767
  -- AddForeignKey
1738
- 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;
1739
2769
 
1740
2770
  -- AddForeignKey
1741
2771
  ALTER TABLE "tasks"."TaskGroup" ADD CONSTRAINT "TaskGroup_reworkOfTaskGroupId_fkey" FOREIGN KEY ("reworkOfTaskGroupId") REFERENCES "tasks"."TaskGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -1766,3 +2796,24 @@ ALTER TABLE "tasks"."TaskInspection" ADD CONSTRAINT "TaskInspection_taskId_fkey"
1766
2796
 
1767
2797
  -- AddForeignKey
1768
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);