@machinemetrics/mm-erp-sdk 0.3.0-beta.0 → 0.3.0-beta.2
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.
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/data-sync-service/configuration-manager.d.ts.map +1 -1
- package/dist/services/data-sync-service/configuration-manager.js +30 -30
- package/dist/services/data-sync-service/configuration-manager.js.map +1 -1
- package/dist/services/data-sync-service/data-sync-service.d.ts.map +1 -1
- package/dist/services/data-sync-service/data-sync-service.js +9 -0
- package/dist/services/data-sync-service/data-sync-service.js.map +1 -1
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +1 -2
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js.map +1 -1
- package/dist/services/data-sync-service/jobs/from-erp.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/from-erp.js +7 -13
- package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +1 -2
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js.map +1 -1
- package/dist/services/data-sync-service/jobs/run-migrations.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/run-migrations.js +1 -2
- package/dist/services/data-sync-service/jobs/run-migrations.js.map +1 -1
- package/dist/services/data-sync-service/jobs/to-erp.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/to-erp.js +12 -3
- package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
- package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts +30 -0
- package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts.map +1 -0
- package/dist/services/data-sync-service/nats-labor-ticket-listener.js +290 -0
- package/dist/services/data-sync-service/nats-labor-ticket-listener.js.map +1 -0
- package/dist/services/mm-api-service/company-info.d.ts +13 -0
- package/dist/services/mm-api-service/company-info.d.ts.map +1 -0
- package/dist/services/mm-api-service/company-info.js +60 -0
- package/dist/services/mm-api-service/company-info.js.map +1 -0
- package/dist/services/mm-api-service/index.d.ts +7 -0
- package/dist/services/mm-api-service/index.d.ts.map +1 -1
- package/dist/services/mm-api-service/index.js +5 -0
- package/dist/services/mm-api-service/index.js.map +1 -1
- package/dist/services/mm-api-service/mm-api-service.d.ts +6 -0
- package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
- package/dist/services/mm-api-service/mm-api-service.js +15 -3
- package/dist/services/mm-api-service/mm-api-service.js.map +1 -1
- package/dist/services/mm-api-service/types/receive-types.d.ts +3 -0
- package/dist/services/mm-api-service/types/receive-types.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/receive-types.js +1 -0
- package/dist/services/mm-api-service/types/receive-types.js.map +1 -1
- package/dist/services/mm-api-service/types/send-types.d.ts +17 -8
- package/dist/services/mm-api-service/types/send-types.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/send-types.js +41 -17
- package/dist/services/mm-api-service/types/send-types.js.map +1 -1
- package/dist/services/nats-service/nats-service.d.ts +114 -0
- package/dist/services/nats-service/nats-service.d.ts.map +1 -0
- package/dist/services/nats-service/nats-service.js +244 -0
- package/dist/services/nats-service/nats-service.js.map +1 -0
- package/dist/services/nats-service/test-nats-subscriber.d.ts +6 -0
- package/dist/services/nats-service/test-nats-subscriber.d.ts.map +1 -0
- package/dist/services/nats-service/test-nats-subscriber.js +79 -0
- package/dist/services/nats-service/test-nats-subscriber.js.map +1 -0
- package/dist/services/reporting-service/logger.d.ts.map +1 -1
- package/dist/services/reporting-service/logger.js +31 -6
- package/dist/services/reporting-service/logger.js.map +1 -1
- package/dist/types/erp-connector.d.ts +1 -8
- package/dist/types/erp-connector.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/error-formatter.d.ts +19 -0
- package/dist/utils/error-formatter.d.ts.map +1 -0
- package/dist/utils/error-formatter.js +184 -0
- package/dist/utils/error-formatter.js.map +1 -0
- package/dist/utils/http-client.js +2 -4
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index.d.ts +5 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/local-data-store/jobs-shared-data.d.ts +0 -2
- package/dist/utils/local-data-store/jobs-shared-data.d.ts.map +1 -1
- package/dist/utils/local-data-store/jobs-shared-data.js +0 -2
- package/dist/utils/local-data-store/jobs-shared-data.js.map +1 -1
- package/dist/utils/mm-labor-ticket-helpers.d.ts +4 -3
- package/dist/utils/mm-labor-ticket-helpers.d.ts.map +1 -1
- package/dist/utils/mm-labor-ticket-helpers.js +7 -12
- package/dist/utils/mm-labor-ticket-helpers.js.map +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts +0 -15
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +46 -180
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +1 -1
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts +1 -7
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/mm-entity-processor.js +1 -7
- package/dist/utils/standard-process-drivers/mm-entity-processor.js.map +1 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +2 -8
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.js +18 -27
- package/dist/utils/standard-process-drivers/standard-process-drivers.js.map +1 -1
- package/dist/utils/time-utils.d.ts.map +1 -1
- package/dist/utils/time-utils.js +0 -7
- package/dist/utils/time-utils.js.map +1 -1
- package/package.json +5 -4
- package/src/index.ts +3 -0
- package/src/services/data-sync-service/configuration-manager.ts +37 -50
- package/src/services/data-sync-service/data-sync-service.ts +10 -0
- package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +1 -2
- package/src/services/data-sync-service/jobs/from-erp.ts +7 -13
- package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +1 -2
- package/src/services/data-sync-service/jobs/run-migrations.ts +1 -2
- package/src/services/data-sync-service/jobs/to-erp.ts +12 -3
- package/src/services/data-sync-service/nats-labor-ticket-listener.ts +342 -0
- package/src/services/mm-api-service/company-info.ts +87 -0
- package/src/services/mm-api-service/index.ts +8 -0
- package/src/services/mm-api-service/mm-api-service.ts +20 -3
- package/src/services/mm-api-service/types/receive-types.ts +1 -0
- package/src/services/mm-api-service/types/send-types.ts +40 -16
- package/src/services/nats-service/nats-service.ts +351 -0
- package/src/services/nats-service/test-nats-subscriber.ts +96 -0
- package/src/services/reporting-service/logger.ts +39 -7
- package/src/types/erp-connector.ts +1 -8
- package/src/types/index.ts +0 -8
- package/src/utils/error-formatter.ts +205 -0
- package/src/utils/http-client.ts +3 -4
- package/src/utils/index.ts +6 -5
- package/src/utils/local-data-store/jobs-shared-data.ts +0 -2
- package/src/utils/mm-labor-ticket-helpers.ts +8 -11
- package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +64 -220
- package/src/utils/standard-process-drivers/mm-entity-processor.ts +1 -7
- package/src/utils/standard-process-drivers/standard-process-drivers.ts +19 -33
- package/src/utils/time-utils.ts +0 -11
- package/dist/types/flattened-work-order.d.ts +0 -99
- package/dist/types/flattened-work-order.d.ts.map +0 -1
- package/dist/types/flattened-work-order.js +0 -2
- package/dist/types/flattened-work-order.js.map +0 -1
- package/dist/utils/env.d.ts +0 -8
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -58
- package/dist/utils/env.js.map +0 -1
- package/dist/utils/erp-timezone-utils.d.ts +0 -20
- package/dist/utils/erp-timezone-utils.d.ts.map +0 -1
- package/dist/utils/erp-timezone-utils.js +0 -75
- package/dist/utils/erp-timezone-utils.js.map +0 -1
- package/src/types/flattened-work-order.ts +0 -108
- package/src/utils/env.ts +0 -75
- package/src/utils/erp-timezone-utils.ts +0 -99
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { MMApiClient } from "../../services/mm-api-service/mm-api-service.js";
|
|
2
2
|
import { convertLaborTicketToLocalTimezone } from "../mm-labor-ticket-helpers.js";
|
|
3
|
+
import { getCachedTimezoneOffset } from "../local-data-store/jobs-shared-data.js";
|
|
3
4
|
import logger from "../../services/reporting-service/logger.js";
|
|
4
5
|
/**
|
|
5
6
|
* Handles synchronization of labor tickets between MachineMetrics and ERP systems
|
|
6
7
|
*/
|
|
7
8
|
export class LaborTicketERPSynchronizer {
|
|
8
|
-
// Small allowance to mitigate tiny clock offsets / timestamp granularity differences
|
|
9
|
-
// between the connector host and MM's timestamps.
|
|
10
|
-
static CHECKPOINT_SKEW_MS = 2_000;
|
|
11
9
|
/**
|
|
12
10
|
* Synchronizes updated labor tickets from MachineMetrics to an ERP system
|
|
13
11
|
*/
|
|
14
12
|
static async syncToERP(connectorType, connector) {
|
|
15
13
|
try {
|
|
16
14
|
const mmApiClient = new MMApiClient();
|
|
17
|
-
const failedLaborTicketRefs =
|
|
18
|
-
|
|
15
|
+
const failedLaborTicketRefs = [];
|
|
16
|
+
// Initialize and fetch checkpoint (quick operations, don't need prolonged lock)
|
|
19
17
|
await mmApiClient.initializeCheckpoint({
|
|
20
18
|
system: connectorType,
|
|
21
19
|
table: "labor_tickets",
|
|
@@ -24,128 +22,62 @@ export class LaborTicketERPSynchronizer {
|
|
|
24
22
|
timestamp: new Date().toISOString(),
|
|
25
23
|
},
|
|
26
24
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (laborTicketsUpdates.length === 0) {
|
|
56
|
-
if (pass === 1) {
|
|
57
|
-
logger.info("syncLaborTicketsToERP:No updated labor tickets found");
|
|
58
|
-
}
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
// Track the latest MM timestamp we see that is <= the current barrier.
|
|
62
|
-
for (const ticket of laborTicketsUpdates) {
|
|
63
|
-
const ts = this.getComparableTicketTimestamp(ticket);
|
|
64
|
-
if (!ts)
|
|
65
|
-
continue;
|
|
66
|
-
if (new Date(ts) > new Date(barrierTime))
|
|
67
|
-
continue;
|
|
68
|
-
if (!maxMmTimestampWithinBarrier ||
|
|
69
|
-
new Date(ts) > new Date(maxMmTimestampWithinBarrier)) {
|
|
70
|
-
maxMmTimestampWithinBarrier = ts;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (pass === 1) {
|
|
74
|
-
logger.info(`ToERP: Found ${laborTicketsUpdates.length} Labor Ticket Ids and Refs to process`, {
|
|
75
|
-
laborTickets: laborTicketsUpdates.map((ticket) => ({
|
|
76
|
-
ref: ticket.laborTicketRef,
|
|
77
|
-
id: ticket.laborTicketId,
|
|
78
|
-
})),
|
|
79
|
-
});
|
|
25
|
+
const fallbackTimestamp = new Date().toISOString();
|
|
26
|
+
const laborTicketsUpdates = await mmApiClient.fetchLaborTicketUpdates({
|
|
27
|
+
system: connectorType,
|
|
28
|
+
checkpointType: "export",
|
|
29
|
+
});
|
|
30
|
+
if (laborTicketsUpdates.length === 0) {
|
|
31
|
+
logger.info("syncLaborTicketsToERP:No updated labor tickets found");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
logger.info(`ToERP: Found ${laborTicketsUpdates.length} Labor Ticket Ids and Refs to process`, {
|
|
35
|
+
laborTickets: laborTicketsUpdates.map((ticket) => ({
|
|
36
|
+
ref: ticket.laborTicketRef,
|
|
37
|
+
id: ticket.laborTicketId,
|
|
38
|
+
})),
|
|
39
|
+
});
|
|
40
|
+
// Find the most recent updatedAt timestamp from labor tickets. This will be used to update
|
|
41
|
+
// the checkpoint to ensure there is no gap of time for the next sync.
|
|
42
|
+
const mostRecentUpdate = laborTicketsUpdates.reduce((latest, ticket) => {
|
|
43
|
+
if (!latest || !ticket.updatedAt)
|
|
44
|
+
return latest;
|
|
45
|
+
return new Date(ticket.updatedAt) > new Date(latest)
|
|
46
|
+
? ticket.updatedAt
|
|
47
|
+
: latest;
|
|
48
|
+
}, null);
|
|
49
|
+
await Promise.all(laborTicketsUpdates.map(async (laborTicket) => {
|
|
50
|
+
if (!laborTicket.laborTicketRef) {
|
|
51
|
+
logger.error("syncLaborTicketsToERP: laborTicketRef is not set for laborTicket pulled from MM:", { laborTicket });
|
|
52
|
+
return undefined;
|
|
80
53
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const pending = [];
|
|
84
|
-
const dedupeWithinFetch = new Set();
|
|
85
|
-
for (const ticket of laborTicketsUpdates) {
|
|
86
|
-
if (!ticket.laborTicketRef) {
|
|
87
|
-
logger.error("syncLaborTicketsToERP: laborTicketRef is not set for laborTicket pulled from MM:", { laborTicket: ticket });
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
const ts = this.getComparableTicketTimestamp(ticket);
|
|
91
|
-
if (ts && new Date(ts) > new Date(barrierTime)) {
|
|
92
|
-
// Defer "future" tickets (relative to local wall clock) to a later run/pass.
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
const sig = this.laborTicketBusinessSignature(ticket);
|
|
96
|
-
if (attemptedSignatures.has(sig) || dedupeWithinFetch.has(sig))
|
|
97
|
-
continue;
|
|
98
|
-
dedupeWithinFetch.add(sig);
|
|
99
|
-
pending.push({ sig, ticket });
|
|
54
|
+
try {
|
|
55
|
+
return await this.processLaborTicket(connector, mmApiClient, laborTicket);
|
|
100
56
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
57
|
+
catch (error) {
|
|
58
|
+
failedLaborTicketRefs.push(laborTicket.laborTicketRef);
|
|
59
|
+
logger.error(`syncLaborTicketsToERP: Error processing laborTicketRef ${laborTicket.laborTicketRef}:`, { error });
|
|
60
|
+
return undefined;
|
|
104
61
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return await this.processLaborTicket(connector, mmApiClient, ticket);
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
failedLaborTicketRefs.add(ticket.laborTicketRef);
|
|
114
|
-
logger.error(`syncLaborTicketsToERP: Error processing laborTicketRef ${ticket.laborTicketRef}:`, { error });
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
|
-
if (pass >= maxPasses) {
|
|
120
|
-
logger.warn(`syncLaborTicketsToERP: Reached max passes (${maxPasses}). Checkpointing anyway to avoid infinite loops.`);
|
|
121
|
-
}
|
|
122
|
-
logger.info(`syncLaborTicketsToERP: ${failedLaborTicketRefs.size} failed labor ticket ids`);
|
|
123
|
-
if (failedLaborTicketRefs.size > 0) {
|
|
124
|
-
const failedTicketRefs = Array.from(failedLaborTicketRefs);
|
|
125
|
-
logger.info(`syncLaborTicketsToERP: Reporting ${failedTicketRefs.length} labor ticket failures:`, {
|
|
126
|
-
failedLaborTicketRefs: failedTicketRefs,
|
|
62
|
+
}));
|
|
63
|
+
logger.info(`syncLaborTicketsToERP: ${failedLaborTicketRefs.length} failed labor ticket ids`);
|
|
64
|
+
if (failedLaborTicketRefs.length > 0) {
|
|
65
|
+
logger.info(`syncLaborTicketsToERP: Reporting ${failedLaborTicketRefs.length} labor ticket failures:`, {
|
|
66
|
+
failedLaborTicketRefs,
|
|
127
67
|
});
|
|
128
|
-
const addFailedResult = await mmApiClient.addFailedLaborTicketRefs(connectorType,
|
|
68
|
+
const addFailedResult = await mmApiClient.addFailedLaborTicketRefs(connectorType, failedLaborTicketRefs);
|
|
129
69
|
logger.info("syncLaborTicketsToERP: addFailedResult:", {
|
|
130
70
|
addFailedResult,
|
|
131
71
|
});
|
|
132
72
|
}
|
|
133
|
-
|
|
134
|
-
barrierTime,
|
|
135
|
-
maxMmTimestampWithinBarrier,
|
|
136
|
-
skewMs: this.CHECKPOINT_SKEW_MS,
|
|
137
|
-
});
|
|
138
|
-
await mmApiClient.saveCheckpoint({
|
|
73
|
+
mmApiClient.saveCheckpoint({
|
|
139
74
|
system: connectorType,
|
|
140
75
|
table: "labor_tickets",
|
|
141
76
|
checkpointType: "export",
|
|
142
77
|
checkpointValue: {
|
|
143
|
-
timestamp:
|
|
78
|
+
timestamp: mostRecentUpdate || fallbackTimestamp,
|
|
144
79
|
},
|
|
145
80
|
});
|
|
146
|
-
logger.info("syncLaborTicketsToERP: Checkpoint saved:", {
|
|
147
|
-
checkpointTimestamp,
|
|
148
|
-
});
|
|
149
81
|
}
|
|
150
82
|
catch (error) {
|
|
151
83
|
logger.error("syncLaborTicketsToERP: Error:", error);
|
|
@@ -201,10 +133,7 @@ export class LaborTicketERPSynchronizer {
|
|
|
201
133
|
}
|
|
202
134
|
static async processLaborTicket(connector, mmApiClient, laborTicket) {
|
|
203
135
|
let laborTicketResult;
|
|
204
|
-
|
|
205
|
-
// Connector implementations should treat the incoming values as localized wall time and avoid
|
|
206
|
-
// applying any further timezone shifts.
|
|
207
|
-
laborTicketResult = convertLaborTicketToLocalTimezone(laborTicket);
|
|
136
|
+
laborTicketResult = convertLaborTicketToLocalTimezone(laborTicket, getCachedTimezoneOffset());
|
|
208
137
|
logger.info(`processing laborTicket, id=${laborTicket.laborTicketId}, ref=${laborTicket.laborTicketRef}`);
|
|
209
138
|
logger.debug({ laborTicket });
|
|
210
139
|
// MLW TODO: Should we always swap out the resource ID for the machine group ID if it is found?
|
|
@@ -232,68 +161,5 @@ export class LaborTicketERPSynchronizer {
|
|
|
232
161
|
});
|
|
233
162
|
return laborTicketResult;
|
|
234
163
|
}
|
|
235
|
-
/**
|
|
236
|
-
* A stable identity for "did the business-relevant contents of this labor ticket change?"
|
|
237
|
-
*
|
|
238
|
-
* IMPORTANT: Excludes fields that the SDK itself mutates (e.g. laborTicketId, updatedAt),
|
|
239
|
-
* otherwise we'd reprocess the write-back bump on the next cycle.
|
|
240
|
-
*/
|
|
241
|
-
static laborTicketBusinessSignature(ticket) {
|
|
242
|
-
const reasons = (ticket.reasons ?? [])
|
|
243
|
-
.map((r) => {
|
|
244
|
-
const reason = r?.reason ?? {};
|
|
245
|
-
return (reason.reasonId ??
|
|
246
|
-
reason.code ??
|
|
247
|
-
reason.reasonRef ??
|
|
248
|
-
reason.rejectReasonRef ??
|
|
249
|
-
"");
|
|
250
|
-
})
|
|
251
|
-
.filter((v) => v !== "" && v !== null && v !== undefined)
|
|
252
|
-
.map(String)
|
|
253
|
-
.sort();
|
|
254
|
-
const signatureObject = {
|
|
255
|
-
laborTicketRef: ticket.laborTicketRef ?? null,
|
|
256
|
-
clockIn: ticket.clockIn ?? null,
|
|
257
|
-
clockOut: ticket.clockOut ?? null,
|
|
258
|
-
goodParts: ticket.goodParts ?? null,
|
|
259
|
-
badParts: ticket.badParts ?? null,
|
|
260
|
-
state: ticket.state ?? null,
|
|
261
|
-
type: ticket.type ?? null,
|
|
262
|
-
transactionDate: ticket.transactionDate ?? null,
|
|
263
|
-
workOrderId: ticket.workOrderId ?? null,
|
|
264
|
-
sequenceNumber: ticket.sequenceNumber ?? null,
|
|
265
|
-
personId: ticket.personId ?? null,
|
|
266
|
-
resourceId: ticket.resourceId ?? null,
|
|
267
|
-
lot: ticket.lot ?? null,
|
|
268
|
-
split: ticket.split ?? null,
|
|
269
|
-
sub: ticket.sub ?? null,
|
|
270
|
-
comment: ticket.comment ?? null,
|
|
271
|
-
workOrderOperationClosedDate: ticket.workOrderOperationClosedDate ?? null,
|
|
272
|
-
reasons,
|
|
273
|
-
};
|
|
274
|
-
return JSON.stringify(signatureObject);
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Selects a comparable timestamp for windowing decisions.
|
|
278
|
-
* Prefer updatedAt; fall back to other stable timestamps if needed.
|
|
279
|
-
*/
|
|
280
|
-
static getComparableTicketTimestamp(ticket) {
|
|
281
|
-
return (ticket.updatedAt ??
|
|
282
|
-
ticket.createdAt ??
|
|
283
|
-
ticket.transactionDate ??
|
|
284
|
-
ticket.clockOut ??
|
|
285
|
-
ticket.clockIn ??
|
|
286
|
-
null);
|
|
287
|
-
}
|
|
288
|
-
static addMsToIso(iso, ms) {
|
|
289
|
-
return new Date(new Date(iso).getTime() + ms).toISOString();
|
|
290
|
-
}
|
|
291
|
-
static computeCheckpointTimestamp(options) {
|
|
292
|
-
const { barrierTime, maxMmTimestampWithinBarrier, skewMs } = options;
|
|
293
|
-
if (!maxMmTimestampWithinBarrier)
|
|
294
|
-
return barrierTime;
|
|
295
|
-
const mmPlusSkew = this.addMsToIso(maxMmTimestampWithinBarrier, skewMs);
|
|
296
|
-
return new Date(mmPlusSkew) < new Date(barrierTime) ? mmPlusSkew : barrierTime;
|
|
297
|
-
}
|
|
298
164
|
}
|
|
299
165
|
//# sourceMappingURL=labor-ticket-erp-synchronizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labor-ticket-erp-synchronizer.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,OAAO,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,0BAA0B;IACrC
|
|
1
|
+
{"version":3,"file":"labor-ticket-erp-synchronizer.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,7 @@ import { WriteEntitiesToMMResult } from "./standard-process-drivers.js";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare class MMEntityProcessor {
|
|
9
9
|
/**
|
|
10
|
-
* Writes entities to MM API with deduplication and caching
|
|
11
|
-
*
|
|
12
|
-
* IMPORTANT: All datetime fields on `mmRecords` MUST already be expressed as
|
|
13
|
-
* ISO-8601 UTC strings (either trailing `Z` or an explicit offset). The SDK
|
|
14
|
-
* does not apply timezone conversion on this path. It forwards values directly
|
|
15
|
-
* to MachineMetrics and only reserializes them for validation. Connector code
|
|
16
|
-
* is responsible for converting local ERP times to UTC before invoking this API.
|
|
10
|
+
* Writes entities to MM API with deduplication and caching
|
|
17
11
|
*/
|
|
18
12
|
static writeEntities(entityType: ERPObjType, mmRecords: IToRESTApiObject[], batchCacheManager: BatchCacheManager | null): Promise<WriteEntitiesToMMResult>;
|
|
19
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mm-entity-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAcjB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EACL,uBAAuB,EAExB,MAAM,+BAA+B,CAAC;AAGvC;;GAEG;AACH,qBAAa,iBAAiB;IAC5B
|
|
1
|
+
{"version":3,"file":"mm-entity-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAcjB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EACL,uBAAuB,EAExB,MAAM,+BAA+B,CAAC;AAGvC;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;WACU,aAAa,CACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAiCnC;;;;;OAKG;mBACkB,iBAAiB;IA+BtC;;OAEG;mBACkB,UAAU;IAsC/B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAgC/B;;;;;;;OAOG;mBACkB,eAAe;CAuErC"}
|
|
@@ -7,13 +7,7 @@ import { ErrorProcessor } from "./error-processor.js";
|
|
|
7
7
|
*/
|
|
8
8
|
export class MMEntityProcessor {
|
|
9
9
|
/**
|
|
10
|
-
* Writes entities to MM API with deduplication and caching
|
|
11
|
-
*
|
|
12
|
-
* IMPORTANT: All datetime fields on `mmRecords` MUST already be expressed as
|
|
13
|
-
* ISO-8601 UTC strings (either trailing `Z` or an explicit offset). The SDK
|
|
14
|
-
* does not apply timezone conversion on this path. It forwards values directly
|
|
15
|
-
* to MachineMetrics and only reserializes them for validation. Connector code
|
|
16
|
-
* is responsible for converting local ERP times to UTC before invoking this API.
|
|
10
|
+
* Writes entities to MM API with deduplication and caching
|
|
17
11
|
*/
|
|
18
12
|
static async writeEntities(entityType, mmRecords, batchCacheManager) {
|
|
19
13
|
const { toProcess, result } = await this._prepareAndDedupe(entityType, mmRecords, batchCacheManager);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mm-entity-processor.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAkBtD,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,OAAO,EAEL,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC5B
|
|
1
|
+
{"version":3,"file":"mm-entity-processor.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ERPObjType } from "../../types/erp-types.js";
|
|
2
2
|
import { IERPLaborTicketHandler } from "../../types/erp-connector.js";
|
|
3
|
-
import type { FlattenedWorkOrderRow } from "../../types/flattened-work-order.js";
|
|
4
3
|
import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager.js";
|
|
5
4
|
import { IToRESTApiObject, MMSendWorkOrderBatch } from "../../services/mm-api-service/index.js";
|
|
6
5
|
/**
|
|
@@ -163,19 +162,14 @@ export declare class StandardProcessDrivers {
|
|
|
163
162
|
* parts, part operations, work orders, and work order operations, then process them in the correct order
|
|
164
163
|
* to maintain referential integrity.
|
|
165
164
|
*
|
|
166
|
-
*
|
|
167
|
-
* as ISO-8601 UTC strings (trailing `Z` or explicit offset). The SDK does not attempt to infer or
|
|
168
|
-
* convert local ERP timestamps on this path; it simply validates and forwards the values to MM.
|
|
169
|
-
* Connector implementations should convert ERP-local times to UTC before invoking this method.
|
|
170
|
-
*
|
|
171
|
-
* @param flattenedData Array of flattened rows containing both work order and operation data (see `FlattenedWorkOrderRow`)
|
|
165
|
+
* @param flattenedData Array of flattened rows containing both work order and operation data (camelCase fields)
|
|
172
166
|
* @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
|
|
173
167
|
*
|
|
174
168
|
* @returns Combined results from all entity processing with detailed logging information
|
|
175
169
|
* @throws MMBatchValidationError on partial success or complete failure with structured error details
|
|
176
170
|
* @throws Error on other underlying issues (network, authentication, etc.)
|
|
177
171
|
*/
|
|
178
|
-
static syncWorkOrderBatchFromFlattened(flattenedData:
|
|
172
|
+
static syncWorkOrderBatchFromFlattened(flattenedData: any[], batchCacheManager: BatchCacheManager | null): Promise<{
|
|
179
173
|
parts: WriteEntitiesToMMResult;
|
|
180
174
|
partOperations: WriteEntitiesToMMResult;
|
|
181
175
|
workOrders: WriteEntitiesToMMResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-process-drivers.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"standard-process-drivers.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EAKrB,MAAM,wCAAwC,CAAC;AAIhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,KAAK,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;KACtC,CAAC,CAAC;gBAES,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;SACtC,CAAC,CAAC;KACJ;CAUF;AAED;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC;;;;;;;;OAQG;WACU,qBAAqB,CAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;OAMG;WACU,uBAAuB,CAClC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwEG;WACU,iBAAiB,CAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAQnC;;;;;;;;;;;;;;;OAeG;WACU,uBAAuB,CAClC,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;IAuCF;;;;;;;;;;;;;;OAcG;WACU,+BAA+B,CAC1C,aAAa,EAAE,GAAG,EAAE,EACpB,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;CAkMH"}
|
|
@@ -165,12 +165,7 @@ export class StandardProcessDrivers {
|
|
|
165
165
|
* parts, part operations, work orders, and work order operations, then process them in the correct order
|
|
166
166
|
* to maintain referential integrity.
|
|
167
167
|
*
|
|
168
|
-
*
|
|
169
|
-
* as ISO-8601 UTC strings (trailing `Z` or explicit offset). The SDK does not attempt to infer or
|
|
170
|
-
* convert local ERP timestamps on this path; it simply validates and forwards the values to MM.
|
|
171
|
-
* Connector implementations should convert ERP-local times to UTC before invoking this method.
|
|
172
|
-
*
|
|
173
|
-
* @param flattenedData Array of flattened rows containing both work order and operation data (see `FlattenedWorkOrderRow`)
|
|
168
|
+
* @param flattenedData Array of flattened rows containing both work order and operation data (camelCase fields)
|
|
174
169
|
* @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
|
|
175
170
|
*
|
|
176
171
|
* @returns Combined results from all entity processing with detailed logging information
|
|
@@ -181,7 +176,6 @@ export class StandardProcessDrivers {
|
|
|
181
176
|
if (!flattenedData || flattenedData.length === 0) {
|
|
182
177
|
throw new Error("No flattened work order data provided");
|
|
183
178
|
}
|
|
184
|
-
const toStringOrFallback = (value, fallback = "") => (value === undefined || value === null ? fallback : String(value));
|
|
185
179
|
// Process the flattened data - each row contains both work order and operation info
|
|
186
180
|
const uniqueParts = new Map();
|
|
187
181
|
const uniquePartOperations = new Map();
|
|
@@ -209,8 +203,8 @@ export class StandardProcessDrivers {
|
|
|
209
203
|
resourceId: row.resourceId, // → resourceId
|
|
210
204
|
cycleTimeMs: row.cycleTimeMs, // → cycleTimeMs
|
|
211
205
|
setupTimeMs: row.setupTimeMs, // → setupTimeMs
|
|
212
|
-
|
|
213
|
-
quantityPerPart: row.quantityPerPart
|
|
206
|
+
description: row.operationDescription || "", // → description
|
|
207
|
+
quantityPerPart: row.quantityPerPart || 1, // → quantityPerPart
|
|
214
208
|
});
|
|
215
209
|
}
|
|
216
210
|
// Extract unique work orders
|
|
@@ -257,27 +251,25 @@ export class StandardProcessDrivers {
|
|
|
257
251
|
});
|
|
258
252
|
}
|
|
259
253
|
// Transform all the data directly to MM entities
|
|
260
|
-
const parts = Array.from(uniqueParts.values()).map((item) => new MMSendPart(
|
|
261
|
-
|
|
254
|
+
const parts = Array.from(uniqueParts.values()).map((item) => new MMSendPart(item.partNumber || "", // partNumber
|
|
255
|
+
item.partRevision || "", // partRevision
|
|
262
256
|
item.method || "Standard" // method
|
|
263
257
|
));
|
|
264
|
-
const partOperations = Array.from(uniquePartOperations.values()).map((item) => new MMSendPartOperation(
|
|
265
|
-
|
|
258
|
+
const partOperations = Array.from(uniquePartOperations.values()).map((item) => new MMSendPartOperation(item.partNumber || "", // partNumber
|
|
259
|
+
item.partRevision || "", // partRevision
|
|
266
260
|
item.method || "Standard", // method
|
|
267
261
|
item.sequenceNumber?.toString() || "", // sequenceNumber
|
|
268
262
|
item.resourceId?.toString() || "", // resourceId
|
|
269
263
|
item.cycleTimeMs || 0, // cycleTimeMs
|
|
270
264
|
item.setupTimeMs || 0, // setupTimeMs
|
|
271
|
-
item.
|
|
265
|
+
item.description || "", // description
|
|
272
266
|
item.quantityPerPart || 1 // quantityPerPart
|
|
273
267
|
));
|
|
274
268
|
const transformedWorkOrders = Array.from(uniqueWorkOrders.values()).map((item) => new MMSendWorkOrder(item.workOrderId?.toString() || "", // workOrderId
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
269
|
+
item.lot || "", // lot
|
|
270
|
+
item.split || "", // split
|
|
271
|
+
item.sub || "", // sub
|
|
278
272
|
item.status || "Open", // status
|
|
279
|
-
// Datetimes are assumed to already be UTC (or include an explicit offset).
|
|
280
|
-
// We reserialize via Date solely to validate the ISO format before sending to MM.
|
|
281
273
|
item.dueDate ? new Date(item.dueDate).toISOString() : null, // dueDate
|
|
282
274
|
item.description || "", // description
|
|
283
275
|
item.scheduledStartDate
|
|
@@ -288,20 +280,19 @@ export class StandardProcessDrivers {
|
|
|
288
280
|
: null, // scheduledEndDate
|
|
289
281
|
item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
|
|
290
282
|
item.quantityRequired || 0, // quantityRequired
|
|
291
|
-
|
|
292
|
-
|
|
283
|
+
item.partNumber || "", // partNumber
|
|
284
|
+
item.partRevision || "", // partRevision
|
|
293
285
|
item.method || "Standard" // method
|
|
294
286
|
));
|
|
295
287
|
const transformedWorkOrderOperations = workOrderOperations.map((item) => new MMSendWorkOrderOperation(item.workOrderId?.toString() || "", // workOrderId
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
288
|
+
item.lot || "", // lot
|
|
289
|
+
item.split || "", // split
|
|
290
|
+
item.sub || "", // sub
|
|
299
291
|
item.sequenceNumber?.toString() || "", // sequenceNumber
|
|
300
292
|
item.resourceId?.toString() || "", // resourceId
|
|
301
293
|
item.startQuantity || 0, // startQuantity
|
|
302
294
|
item.finishQuantity || 0, // finishQuantity
|
|
303
295
|
item.expectedRejectRate || 0, // expectedRejectRate
|
|
304
|
-
// Same UTC expectation as above; reserialize to ensure valid ISO.
|
|
305
296
|
item.scheduledStartDate
|
|
306
297
|
? new Date(item.scheduledStartDate).toISOString()
|
|
307
298
|
: null, // scheduledStartDate
|
|
@@ -311,8 +302,8 @@ export class StandardProcessDrivers {
|
|
|
311
302
|
item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
|
|
312
303
|
item.cycleTimeMs || 0, // cycleTimeMs
|
|
313
304
|
item.setupTimeMs || 0, // setupTimeMs
|
|
314
|
-
parseFloat(
|
|
315
|
-
parseFloat(
|
|
305
|
+
parseFloat(item.productionburdenRateHourly || "0"), // productionburdenRateHourly
|
|
306
|
+
parseFloat(item.setupburdenRatehourly || "0"), // setupburdenRatehourly
|
|
316
307
|
item.operationType || "Production", // operationType
|
|
317
308
|
item.quantityPerPart || 1, // quantityPerPart
|
|
318
309
|
item.status || "Open" // status
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-process-drivers.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"standard-process-drivers.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-utils.d.ts","sourceRoot":"","sources":["../../src/utils/time-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"time-utils.d.ts","sourceRoot":"","sources":["../../src/utils/time-utils.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GACrB,MAAM,CA2BR;AAED,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,GAAG,IAAI,kBASvD,CAAC;AAEF;;;;;;GAMG;AAEH,eAAO,MAAM,4BAA4B,GACvC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,QAAQ,MAAM,EAAE,EAChB,gBAAgB,MAAM,KACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAcvB,CAAC;AAEF,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAQ,oBAGP,KACA,OAAO,CAAC,IAAI,CA2Bd,CAAC"}
|
package/dist/utils/time-utils.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { DateTime } from 'luxon';
|
|
2
1
|
import logger from "../services/reporting-service/logger.js";
|
|
3
2
|
import { setTimezoneOffsetInCache, setTimezoneNameInCache, } from "./local-data-store/jobs-shared-data.js";
|
|
4
3
|
import { convertToLocalTime, formatDateWithTZOffset, getTimezoneOffset, } from "./timezone.js";
|
|
@@ -80,12 +79,6 @@ export const getTimezoneOffsetAndPersist = async (params = {
|
|
|
80
79
|
const { offset, timezone } = await getTimezoneOffset();
|
|
81
80
|
logger.info(`Timezone offset: ${offset} hours, timezone: ${timezone}`);
|
|
82
81
|
setTimezoneOffsetInCache(offset);
|
|
83
|
-
const now = DateTime.now().setZone(timezone);
|
|
84
|
-
if (!now.isValid) {
|
|
85
|
-
throw new Error(`Invalid timezone name from Company properties: "${timezone}". ` +
|
|
86
|
-
`Must be a valid IANA timezone name (e.g., "America/Chicago"). ` +
|
|
87
|
-
`See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones`);
|
|
88
|
-
}
|
|
89
82
|
setTimezoneNameInCache(timezone);
|
|
90
83
|
success = true;
|
|
91
84
|
}
|