@machinemetrics/mm-erp-sdk 0.1.9 → 0.2.0-beta.0

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.
Files changed (86) hide show
  1. package/dist/services/data-sync-service/configuration-manager.d.ts.map +1 -1
  2. package/dist/services/data-sync-service/configuration-manager.js +30 -30
  3. package/dist/services/data-sync-service/configuration-manager.js.map +1 -1
  4. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.d.ts.map +1 -1
  5. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +2 -1
  6. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js.map +1 -1
  7. package/dist/services/data-sync-service/jobs/from-erp.d.ts.map +1 -1
  8. package/dist/services/data-sync-service/jobs/from-erp.js +2 -1
  9. package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
  10. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.d.ts.map +1 -1
  11. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +2 -1
  12. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js.map +1 -1
  13. package/dist/services/data-sync-service/jobs/run-migrations.d.ts.map +1 -1
  14. package/dist/services/data-sync-service/jobs/run-migrations.js +2 -1
  15. package/dist/services/data-sync-service/jobs/run-migrations.js.map +1 -1
  16. package/dist/services/data-sync-service/jobs/to-erp.d.ts.map +1 -1
  17. package/dist/services/data-sync-service/jobs/to-erp.js +2 -1
  18. package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
  19. package/dist/services/mm-api-service/mm-api-service.js +1 -1
  20. package/dist/services/mm-api-service/mm-api-service.js.map +1 -1
  21. package/dist/services/reporting-service/logger.d.ts.map +1 -1
  22. package/dist/services/reporting-service/logger.js +5 -1
  23. package/dist/services/reporting-service/logger.js.map +1 -1
  24. package/dist/types/erp-connector.d.ts +8 -1
  25. package/dist/types/erp-connector.d.ts.map +1 -1
  26. package/dist/types/flattened-work-order.d.ts +99 -0
  27. package/dist/types/flattened-work-order.d.ts.map +1 -0
  28. package/dist/types/flattened-work-order.js +2 -0
  29. package/dist/types/flattened-work-order.js.map +1 -0
  30. package/dist/types/index.d.ts +1 -0
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/utils/env.d.ts +8 -0
  33. package/dist/utils/env.d.ts.map +1 -0
  34. package/dist/utils/env.js +58 -0
  35. package/dist/utils/env.js.map +1 -0
  36. package/dist/utils/erp-timezone-utils.d.ts +20 -0
  37. package/dist/utils/erp-timezone-utils.d.ts.map +1 -0
  38. package/dist/utils/erp-timezone-utils.js +75 -0
  39. package/dist/utils/erp-timezone-utils.js.map +1 -0
  40. package/dist/utils/index.d.ts +1 -0
  41. package/dist/utils/index.d.ts.map +1 -1
  42. package/dist/utils/index.js +1 -0
  43. package/dist/utils/index.js.map +1 -1
  44. package/dist/utils/local-data-store/jobs-shared-data.d.ts +2 -0
  45. package/dist/utils/local-data-store/jobs-shared-data.d.ts.map +1 -1
  46. package/dist/utils/local-data-store/jobs-shared-data.js +2 -0
  47. package/dist/utils/local-data-store/jobs-shared-data.js.map +1 -1
  48. package/dist/utils/mm-labor-ticket-helpers.d.ts +3 -4
  49. package/dist/utils/mm-labor-ticket-helpers.d.ts.map +1 -1
  50. package/dist/utils/mm-labor-ticket-helpers.js +12 -7
  51. package/dist/utils/mm-labor-ticket-helpers.js.map +1 -1
  52. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
  53. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +13 -4
  54. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +1 -1
  55. package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts +7 -1
  56. package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts.map +1 -1
  57. package/dist/utils/standard-process-drivers/mm-entity-processor.js +7 -1
  58. package/dist/utils/standard-process-drivers/mm-entity-processor.js.map +1 -1
  59. package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +8 -2
  60. package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
  61. package/dist/utils/standard-process-drivers/standard-process-drivers.js +27 -18
  62. package/dist/utils/standard-process-drivers/standard-process-drivers.js.map +1 -1
  63. package/dist/utils/time-utils.d.ts.map +1 -1
  64. package/dist/utils/time-utils.js +7 -0
  65. package/dist/utils/time-utils.js.map +1 -1
  66. package/package.json +3 -1
  67. package/src/services/data-sync-service/configuration-manager.ts +50 -37
  68. package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +2 -1
  69. package/src/services/data-sync-service/jobs/from-erp.ts +2 -1
  70. package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +2 -1
  71. package/src/services/data-sync-service/jobs/run-migrations.ts +2 -1
  72. package/src/services/data-sync-service/jobs/to-erp.ts +2 -1
  73. package/src/services/mm-api-service/mm-api-service.ts +1 -1
  74. package/src/services/reporting-service/logger.ts +6 -1
  75. package/src/types/erp-connector.ts +8 -1
  76. package/src/types/flattened-work-order.ts +108 -0
  77. package/src/types/index.ts +8 -0
  78. package/src/utils/env.ts +75 -0
  79. package/src/utils/erp-timezone-utils.ts +99 -0
  80. package/src/utils/index.ts +5 -0
  81. package/src/utils/local-data-store/jobs-shared-data.ts +2 -0
  82. package/src/utils/mm-labor-ticket-helpers.ts +11 -8
  83. package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +11 -6
  84. package/src/utils/standard-process-drivers/mm-entity-processor.ts +7 -1
  85. package/src/utils/standard-process-drivers/standard-process-drivers.ts +33 -19
  86. package/src/utils/time-utils.ts +11 -0
@@ -165,7 +165,12 @@ 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
- * @param flattenedData Array of flattened rows containing both work order and operation data (camelCase fields)
168
+ * Timezone expectation: all datetime fields provided in `flattenedData` MUST already be expressed
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`)
169
174
  * @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
170
175
  *
171
176
  * @returns Combined results from all entity processing with detailed logging information
@@ -176,6 +181,7 @@ export class StandardProcessDrivers {
176
181
  if (!flattenedData || flattenedData.length === 0) {
177
182
  throw new Error("No flattened work order data provided");
178
183
  }
184
+ const toStringOrFallback = (value, fallback = "") => (value === undefined || value === null ? fallback : String(value));
179
185
  // Process the flattened data - each row contains both work order and operation info
180
186
  const uniqueParts = new Map();
181
187
  const uniquePartOperations = new Map();
@@ -203,8 +209,8 @@ export class StandardProcessDrivers {
203
209
  resourceId: row.resourceId, // → resourceId
204
210
  cycleTimeMs: row.cycleTimeMs, // → cycleTimeMs
205
211
  setupTimeMs: row.setupTimeMs, // → setupTimeMs
206
- description: row.operationDescription || "", // → description
207
- quantityPerPart: row.quantityPerPart || 1, // → quantityPerPart
212
+ operationDescription: row.operationDescription, // → description
213
+ quantityPerPart: row.quantityPerPart ?? 1, // → quantityPerPart
208
214
  });
209
215
  }
210
216
  // Extract unique work orders
@@ -251,25 +257,27 @@ export class StandardProcessDrivers {
251
257
  });
252
258
  }
253
259
  // Transform all the data directly to MM entities
254
- const parts = Array.from(uniqueParts.values()).map((item) => new MMSendPart(item.partNumber || "", // partNumber
255
- item.partRevision || "", // partRevision
260
+ const parts = Array.from(uniqueParts.values()).map((item) => new MMSendPart(toStringOrFallback(item.partNumber), // partNumber
261
+ toStringOrFallback(item.partRevision), // partRevision
256
262
  item.method || "Standard" // method
257
263
  ));
258
- const partOperations = Array.from(uniquePartOperations.values()).map((item) => new MMSendPartOperation(item.partNumber || "", // partNumber
259
- item.partRevision || "", // partRevision
264
+ const partOperations = Array.from(uniquePartOperations.values()).map((item) => new MMSendPartOperation(toStringOrFallback(item.partNumber), // partNumber
265
+ toStringOrFallback(item.partRevision), // partRevision
260
266
  item.method || "Standard", // method
261
267
  item.sequenceNumber?.toString() || "", // sequenceNumber
262
268
  item.resourceId?.toString() || "", // resourceId
263
269
  item.cycleTimeMs || 0, // cycleTimeMs
264
270
  item.setupTimeMs || 0, // setupTimeMs
265
- item.description || "", // description
271
+ item.operationDescription || "", // description
266
272
  item.quantityPerPart || 1 // quantityPerPart
267
273
  ));
268
274
  const transformedWorkOrders = Array.from(uniqueWorkOrders.values()).map((item) => new MMSendWorkOrder(item.workOrderId?.toString() || "", // workOrderId
269
- item.lot || "", // lot
270
- item.split || "", // split
271
- item.sub || "", // sub
275
+ toStringOrFallback(item.lot), // lot
276
+ toStringOrFallback(item.split), // split
277
+ toStringOrFallback(item.sub), // sub
272
278
  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.
273
281
  item.dueDate ? new Date(item.dueDate).toISOString() : null, // dueDate
274
282
  item.description || "", // description
275
283
  item.scheduledStartDate
@@ -280,19 +288,20 @@ export class StandardProcessDrivers {
280
288
  : null, // scheduledEndDate
281
289
  item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
282
290
  item.quantityRequired || 0, // quantityRequired
283
- item.partNumber || "", // partNumber
284
- item.partRevision || "", // partRevision
291
+ toStringOrFallback(item.partNumber), // partNumber
292
+ toStringOrFallback(item.partRevision), // partRevision
285
293
  item.method || "Standard" // method
286
294
  ));
287
295
  const transformedWorkOrderOperations = workOrderOperations.map((item) => new MMSendWorkOrderOperation(item.workOrderId?.toString() || "", // workOrderId
288
- item.lot || "", // lot
289
- item.split || "", // split
290
- item.sub || "", // sub
296
+ toStringOrFallback(item.lot), // lot
297
+ toStringOrFallback(item.split), // split
298
+ toStringOrFallback(item.sub), // sub
291
299
  item.sequenceNumber?.toString() || "", // sequenceNumber
292
300
  item.resourceId?.toString() || "", // resourceId
293
301
  item.startQuantity || 0, // startQuantity
294
302
  item.finishQuantity || 0, // finishQuantity
295
303
  item.expectedRejectRate || 0, // expectedRejectRate
304
+ // Same UTC expectation as above; reserialize to ensure valid ISO.
296
305
  item.scheduledStartDate
297
306
  ? new Date(item.scheduledStartDate).toISOString()
298
307
  : null, // scheduledStartDate
@@ -302,8 +311,8 @@ export class StandardProcessDrivers {
302
311
  item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
303
312
  item.cycleTimeMs || 0, // cycleTimeMs
304
313
  item.setupTimeMs || 0, // setupTimeMs
305
- parseFloat(item.productionburdenRateHourly || "0"), // productionburdenRateHourly
306
- parseFloat(item.setupburdenRatehourly || "0"), // setupburdenRatehourly
314
+ parseFloat(toStringOrFallback(item.productionburdenRateHourly, "0")), // productionburdenRateHourly
315
+ parseFloat(toStringOrFallback(item.setupburdenRatehourly, "0")), // setupburdenRatehourly
307
316
  item.operationType || "Production", // operationType
308
317
  item.quantityPerPart || 1, // quantityPerPart
309
318
  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":"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"}
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":"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"}
1
+ {"version":3,"file":"time-utils.d.ts","sourceRoot":"","sources":["../../src/utils/time-utils.ts"],"names":[],"mappings":"AAYA;;;;;;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,CAqCd,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { DateTime } from 'luxon';
1
2
  import logger from "../services/reporting-service/logger.js";
2
3
  import { setTimezoneOffsetInCache, setTimezoneNameInCache, } from "./local-data-store/jobs-shared-data.js";
3
4
  import { convertToLocalTime, formatDateWithTZOffset, getTimezoneOffset, } from "./timezone.js";
@@ -79,6 +80,12 @@ export const getTimezoneOffsetAndPersist = async (params = {
79
80
  const { offset, timezone } = await getTimezoneOffset();
80
81
  logger.info(`Timezone offset: ${offset} hours, timezone: ${timezone}`);
81
82
  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
+ }
82
89
  setTimezoneNameInCache(timezone);
83
90
  success = true;
84
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"time-utils.js","sourceRoot":"","sources":["../../src/utils/time-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time-utils.js","sourceRoot":"","sources":["../../src/utils/time-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@machinemetrics/mm-erp-sdk",
3
3
  "description": "A library for syncing data between MachineMetrics and ERP systems",
4
- "version": "0.1.9",
4
+ "version": "0.2.0-beta.0",
5
5
  "license": "MIT",
6
6
  "author": "machinemetrics",
7
7
  "main": "dist/index.js",
@@ -27,6 +27,7 @@
27
27
  "json-stable-stringify": "^1.3.0",
28
28
  "knex": "^3.1.0",
29
29
  "lodash": "^4.17.21",
30
+ "luxon": "^3.7.2",
30
31
  "mssql": "^11.0.1",
31
32
  "winston": "^3.14.0",
32
33
  "winston-daily-rotate-file": "^5.0.0",
@@ -39,6 +40,7 @@
39
40
  "devDependencies": {
40
41
  "@types/json-stable-stringify": "^1.1.0",
41
42
  "@types/lodash": "^4.17.10",
43
+ "@types/luxon": "^3.7.1",
42
44
  "@types/mssql": "^9.1.6",
43
45
  "@types/node": "^20.0.0",
44
46
  "@types/xxhashjs": "^0.2.4",
@@ -1,6 +1,7 @@
1
1
  import "dotenv/config";
2
2
  import { configureLogger } from "../reporting-service/logger.js";
3
3
  import { SQLServerConfiguration } from "../sql-server-erp-service/configuration.js";
4
+ import { getEnvBoolean, getEnvNumber, getEnvString } from "../../utils/env.js";
4
5
 
5
6
  export class CoreConfiguration {
6
7
  private static instance: CoreConfiguration;
@@ -29,58 +30,66 @@ export class CoreConfiguration {
29
30
  public readonly cacheExpirationCheckInterval: string;
30
31
 
31
32
  private constructor() {
32
- this.logLevel = process.env.LOG_LEVEL || "info";
33
- this.erpSystem = process.env.ERP_SYSTEM || "template";
34
- this.nodeEnv = process.env.NODE_ENV || "development";
33
+ this.logLevel = getEnvString("LOG_LEVEL", "info");
34
+ this.erpSystem = getEnvString("ERP_SYSTEM", "template");
35
+ this.nodeEnv = getEnvString("NODE_ENV", "development");
35
36
 
36
37
  //#region MM API (aka "Mapping") Service
37
38
  /**
38
39
  * MM ERP Service REST API URL (typically https://erp-api.svc.machinemetrics.com)
39
40
  */
40
- this.mmERPSvcApiBaseUrl = process.env.MM_MAPPING_SERVICE_URL || "";
41
+ this.mmERPSvcApiBaseUrl = getEnvString("MM_MAPPING_SERVICE_URL", "");
41
42
 
42
43
  /**
43
44
  * MM REST API URL (typically https://api.machinemetrics.com)
44
45
  */
45
46
  console.log("=== CONFIG DEBUG ===");
46
- console.log("MM_MAPPING_AUTH_SERVICE_URL env var:", process.env.MM_MAPPING_AUTH_SERVICE_URL);
47
- this.mmApiBaseUrl = process.env.MM_MAPPING_AUTH_SERVICE_URL || "";
47
+ const mmAuthSvcUrl = getEnvString("MM_MAPPING_AUTH_SERVICE_URL", "");
48
+ console.log("MM_MAPPING_AUTH_SERVICE_URL env var:", mmAuthSvcUrl);
49
+ this.mmApiBaseUrl = mmAuthSvcUrl;
48
50
  console.log("mmApiBaseUrl set to:", this.mmApiBaseUrl);
49
51
  console.log("=== END CONFIG DEBUG ===");
50
52
 
51
53
  /**
52
54
  * Company Auth Token
53
55
  */
54
- this.mmApiAuthToken = process.env.MM_MAPPING_SERVICE_TOKEN || "";
56
+ this.mmApiAuthToken = getEnvString("MM_MAPPING_SERVICE_TOKEN", "");
55
57
 
56
58
  /**
57
59
  * Number of retry attempts for MM API calls
58
60
  */
59
- this.mmApiRetryAttempts = parseInt(process.env.RETRY_ATTEMPTS || "0");
61
+ this.mmApiRetryAttempts = getEnvNumber("RETRY_ATTEMPTS", 0);
60
62
  //#endregion MM API (aka "Mapping") Service
61
63
 
62
64
  /**
63
65
  * Default pagination limit for ERP API
64
66
  */
65
- this.erpApiPagingLimit = parseInt(process.env.ERP_PAGINATION_LIMIT || "0");
67
+ this.erpApiPagingLimit = getEnvNumber("ERP_PAGINATION_LIMIT", 0);
66
68
  //#endregion ERP API Service
67
69
 
68
70
  /**
69
71
  * For how to define the intervals, see Bree's documentation: https://github.com/breejs/bree
70
72
  */
71
- this.fromErpInterval =
72
- process.env.FROM_ERP_INTERVAL || process.env.POLL_INTERVAL || "5 min";
73
- this.toErpInterval = process.env.TO_ERP_INTERVAL || "5 min";
74
- this.retryLaborTicketsInterval =
75
- process.env.RETRY_LABOR_TICKETS_INTERVAL || "30 min";
76
- this.cacheExpirationCheckInterval =
77
- process.env.CACHE_EXPIRATION_CHECK_INTERVAL || "5 min";
73
+ const pollInterval = getEnvString("POLL_INTERVAL", "");
74
+ this.fromErpInterval = getEnvString(
75
+ "FROM_ERP_INTERVAL",
76
+ pollInterval || "5 min"
77
+ );
78
+ this.toErpInterval = getEnvString("TO_ERP_INTERVAL", "5 min");
79
+ this.retryLaborTicketsInterval = getEnvString(
80
+ "RETRY_LABOR_TICKETS_INTERVAL",
81
+ "30 min"
82
+ );
83
+ this.cacheExpirationCheckInterval = getEnvString(
84
+ "CACHE_EXPIRATION_CHECK_INTERVAL",
85
+ "5 min"
86
+ );
78
87
 
79
88
  /**
80
89
  * Cache TTL (in seconds)
81
90
  */
82
91
  const cacheTTLDef = 7 * 24 * 60 * 60; // 7 days
83
- this.cacheTTL = parseInt(process.env.CACHE_TTL || cacheTTLDef.toString());
92
+ this.cacheTTL = getEnvNumber("CACHE_TTL", cacheTTLDef);
84
93
 
85
94
  // Configure the logger with our settings
86
95
  configureLogger(this.logLevel, this.nodeEnv);
@@ -132,20 +141,24 @@ export class CoreConfiguration {
132
141
  */
133
142
  export const getSQLServerConfiguration = (): SQLServerConfiguration => {
134
143
  return {
135
- username: process.env.ERP_SQLSERVER_USERNAME || "",
136
- password: process.env.ERP_SQLSERVER_PASSWORD || "",
137
- database: process.env.ERP_SQLSERVER_DATABASE || "",
138
- host:
139
- process.env.ERP_SQLSERVER_HOST || process.env.ERP_SQLSERVER_SERVER || "",
140
- port: process.env.ERP_SQLSERVER_PORT || "1433",
141
- connectionTimeout: process.env.ERP_SQLSERVER_CONNECTION_TIMEOUT || "30000",
142
- requestTimeout: process.env.ERP_SQLSERVER_REQUEST_TIMEOUT || "60000",
143
- poolMax: process.env.ERP_SQLSERVER_MAX || "10",
144
- poolMin: process.env.ERP_SQLSERVER_MIN || "0",
145
- idleTimeoutMillis:
146
- process.env.ERP_SQLSERVER_IDLE_TIMEOUT_MMILLIS || "30000",
147
- encrypt: process.env.ERP_SQLSERVER_ENCRYPT === "true",
148
- trustServer: process.env.ERP_SQLSERVER_TRUST_SERVER === "true",
144
+ username: getEnvString("ERP_SQLSERVER_USERNAME", ""),
145
+ password: getEnvString("ERP_SQLSERVER_PASSWORD", ""),
146
+ database: getEnvString("ERP_SQLSERVER_DATABASE", ""),
147
+ host: getEnvString(
148
+ "ERP_SQLSERVER_HOST",
149
+ getEnvString("ERP_SQLSERVER_SERVER", "")
150
+ ),
151
+ port: getEnvString("ERP_SQLSERVER_PORT", "1433"),
152
+ connectionTimeout: getEnvString("ERP_SQLSERVER_CONNECTION_TIMEOUT", "30000"),
153
+ requestTimeout: getEnvString("ERP_SQLSERVER_REQUEST_TIMEOUT", "60000"),
154
+ poolMax: getEnvString("ERP_SQLSERVER_MAX", "10"),
155
+ poolMin: getEnvString("ERP_SQLSERVER_MIN", "0"),
156
+ idleTimeoutMillis: getEnvString(
157
+ "ERP_SQLSERVER_IDLE_TIMEOUT_MMILLIS",
158
+ "30000"
159
+ ),
160
+ encrypt: getEnvBoolean("ERP_SQLSERVER_ENCRYPT", false),
161
+ trustServer: getEnvBoolean("ERP_SQLSERVER_TRUST_SERVER", false),
149
162
  };
150
163
  };
151
164
 
@@ -171,11 +184,11 @@ export class ErpApiConnectionParams {
171
184
  */
172
185
  export const getErpApiConnectionParams = (): ErpApiConnectionParams => {
173
186
  return new ErpApiConnectionParams(
174
- process.env.ERP_API_URL || "",
175
- process.env.ERP_API_CLIENT_ID || "",
176
- process.env.ERP_API_CLIENT_SECRET || "",
177
- process.env.ERP_API_ORGANIZATION_ID || "",
178
- process.env.ERP_AUTH_BASE_URL || "",
179
- parseInt(process.env.ERP_API_RETRY_ATTEMPTS || "3")
187
+ getEnvString("ERP_API_URL", ""),
188
+ getEnvString("ERP_API_CLIENT_ID", ""),
189
+ getEnvString("ERP_API_CLIENT_SECRET", ""),
190
+ getEnvString("ERP_API_ORGANIZATION_ID", ""),
191
+ getEnvString("ERP_AUTH_BASE_URL", ""),
192
+ getEnvNumber("ERP_API_RETRY_ATTEMPTS", 3)
180
193
  );
181
194
  };
@@ -2,9 +2,10 @@ import "dotenv/config";
2
2
  import { HashedCacheManager } from "../../caching-service/hashed-cache-manager.js";
3
3
  import { SQLiteCoordinator } from "../../sqlite-service/index.js";
4
4
  import logger from "../../../services/reporting-service/logger.js";
5
+ import { getEnvString } from "../../../utils/env.js";
5
6
 
6
7
  // Configure the logger with the correct log level
7
- logger.level = process.env.LOG_LEVEL || "info";
8
+ logger.level = getEnvString("LOG_LEVEL", "info");
8
9
 
9
10
  const main = async () => {
10
11
  const cacheManager = new HashedCacheManager();
@@ -3,9 +3,10 @@ import "dotenv/config";
3
3
  import logger from "../../../services/reporting-service/logger.js";
4
4
  import { SQLiteCoordinator } from "../../sqlite-service/index.js";
5
5
  import { createConnectorFromPath } from "../../../utils/connector-factory.js";
6
+ import { getEnvString } from "../../../utils/env.js";
6
7
 
7
8
  // Configure the logger with the correct log level
8
- logger.level = process.env.LOG_LEVEL || "info";
9
+ logger.level = getEnvString("LOG_LEVEL", "info");
9
10
 
10
11
  const main = async () => {
11
12
  try {
@@ -1,10 +1,11 @@
1
1
  import "dotenv/config";
2
2
 
3
3
  import logger from "../../../services/reporting-service/logger.js";
4
+ import { getEnvString } from "../../../utils/env.js";
4
5
  import { createConnectorFromPath } from "../../../utils/connector-factory.js";
5
6
 
6
7
  // Configure the logger with the correct log level
7
- logger.level = process.env.LOG_LEVEL || "info";
8
+ logger.level = getEnvString("LOG_LEVEL", "info");
8
9
 
9
10
  const main = async () => {
10
11
  try {
@@ -1,9 +1,10 @@
1
1
  import knex, { Knex } from "knex";
2
2
  import logger from "../../reporting-service/logger.js";
3
3
  import config from "../../../knexfile.js";
4
+ import { getEnvString } from "../../../utils/env.js";
4
5
 
5
6
  // Configure the logger with the correct log level
6
- logger.level = process.env.LOG_LEVEL || "info";
7
+ logger.level = getEnvString("LOG_LEVEL", "info");
7
8
 
8
9
  // MLW TODO Consider the location of knexfile
9
10
  const db: Knex = knex(config.local);
@@ -2,9 +2,10 @@ import "dotenv/config";
2
2
 
3
3
  import logger from "../../reporting-service/logger.js";
4
4
  import { createConnectorFromPath } from "../../../utils/connector-factory.js";
5
+ import { getEnvString } from "../../../utils/env.js";
5
6
 
6
7
  // Configure the logger with the correct log level
7
- logger.level = process.env.LOG_LEVEL || "info";
8
+ logger.level = getEnvString("LOG_LEVEL", "info");
8
9
 
9
10
  const main = async () => {
10
11
  try {
@@ -551,7 +551,7 @@ export class MMApiClient {
551
551
  logger.info("saveCheckpoint:", { saveCheckpoint });
552
552
  } else {
553
553
  logger.info("Existing checkpoint found:", {
554
- timestamp: checkpointResponse.timestamp,
554
+ checkpointTimestamp: checkpointResponse.timestamp,
555
555
  });
556
556
  }
557
557
  }
@@ -1,9 +1,11 @@
1
1
  import { createLogger, format, transports } from "winston";
2
2
  import DailyRotateFile from "winston-daily-rotate-file";
3
3
  import path from "path";
4
+ import { getEnvString } from "../../utils/env.js"; // Utility function to get environment variables with default values and validation
4
5
 
5
6
  const logDirectory = "logs";
6
- const initialLogLevel = process.env.LOG_LEVEL || "info";
7
+ const initialLogLevel = getEnvString("LOG_LEVEL", "info");
8
+ const initialNodeEnv = getEnvString("NODE_ENV", "development");
7
9
 
8
10
  const LOGGER_ERROR_PREFIX = "[mm-erp-sdk logger]";
9
11
 
@@ -240,6 +242,9 @@ export const configureLogger = (logLevel: string, nodeEnv: string) => {
240
242
  logger.level = logLevel;
241
243
  };
242
244
 
245
+ // Ensure file logging is configured as soon as the module loads
246
+ configureLogger(initialLogLevel, initialNodeEnv);
247
+
243
248
  // Add fatal method for Graceful compatibility
244
249
  (logger as any).fatal = (err: any, meta?: any) => logger.error(err, meta);
245
250
 
@@ -14,6 +14,10 @@ export interface IERPConnector {
14
14
 
15
15
  /**
16
16
  * Sync data from the ERP system to MM.
17
+ * Timezone expectations:
18
+ * - When sending ERP data to MachineMetrics (e.g., via StandardProcessDrivers or MMEntityProcessor),
19
+ * connectors MUST convert all datetime fields to ISO-8601 UTC strings (trailing `Z` or explicit offset)
20
+ * before invoking SDK helpers. The SDK validates/forwards these values but does not apply timezone shifts.
17
21
  */
18
22
  syncFromERP(): Promise<void>;
19
23
  syncFromERPCompleted(): Promise<void>;
@@ -31,13 +35,16 @@ export interface IERPConnector {
31
35
  retryFailedLaborTicketsCompleted(): Promise<void>;
32
36
 
33
37
  /**
34
- * Start the connector. Typically a connector should delegate control to the data-sync-service.
38
+ * Start the connector. Typically a connector should delegate control to the data-sync-service via runDataSyncService().
35
39
  */
36
40
  startUp(): Promise<void>;
37
41
  }
38
42
 
39
43
  /**
40
44
  * Interface for standard process methods that call ERP connectors back to create or update labor tickets.
45
+ *
46
+ * Timestamp fields on `MMReceiveLaborTicket` objects have already been converted by the SDKfrom MM's
47
+ * UTC API responses into the ERP's local timezone, based on the company's timezone setting.
41
48
  */
42
49
  export interface IERPLaborTicketHandler {
43
50
  createLaborTicketInERP(
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Canonical representation of a flattened work order row that contains the
3
+ * information needed to build MM work order entities plus their operations.
4
+ *
5
+ * All properties are optional to maintain backwards compatibility with
6
+ * existing connectors.
7
+ */
8
+ export interface FlattenedWorkOrderPartFields {
9
+ /** ERP part number (required for Parts when present). */
10
+ partNumber?: string | number;
11
+ /** ERP part revision or version string. */
12
+ partRevision?: string | number;
13
+ /** Routing/method identifier (defaults to "Standard" when omitted). */
14
+ method?: string;
15
+ }
16
+
17
+ export interface FlattenedWorkOrderPartOperationFields {
18
+ /** Sequence number of the operation on the routing. */
19
+ sequenceNumber?: string | number;
20
+ /** Resource or machine identifier responsible for the operation. */
21
+ resourceId?: string | number;
22
+ /** Operation cycle time expressed in milliseconds. */
23
+ cycleTimeMs?: number;
24
+ /** Operation setup time expressed in milliseconds. */
25
+ setupTimeMs?: number;
26
+ /** Human-readable description of the operation. */
27
+ operationDescription?: string;
28
+ /** Quantity of parts operated on per cycle. */
29
+ quantityPerPart?: number;
30
+ }
31
+
32
+ export interface FlattenedWorkOrderFields
33
+ extends FlattenedWorkOrderPartFields {
34
+ /** Unique identifier for the work order in the ERP. */
35
+ workOrderId?: string | number;
36
+ /** Lot number (if the ERP distinguishes lots). */
37
+ lot?: string | number;
38
+ /** Split identifier (if the ERP splits orders). */
39
+ split?: string | number;
40
+ /** Sub identifier (for multi-level orders). */
41
+ sub?: string | number;
42
+ /** Work order status (e.g., Open, Closed, Released). */
43
+ status?: string;
44
+ /**
45
+ * Due date expressed as an ISO-8601 UTC string (trailing `Z` or explicit offset).
46
+ * The SDK validates but does not shift timezones.
47
+ */
48
+ dueDate?: string;
49
+ /** Free-form description of the work order. */
50
+ description?: string;
51
+ /** Scheduled start datetime in ISO-8601 UTC form. */
52
+ scheduledStartDate?: string;
53
+ /** Scheduled end datetime in ISO-8601 UTC form. */
54
+ scheduledEndDate?: string;
55
+ /** Closed datetime in ISO-8601 UTC form. */
56
+ closedDate?: string;
57
+ /** Quantity required by the work order. */
58
+ quantityRequired?: number;
59
+ }
60
+
61
+ export interface FlattenedWorkOrderOperationFields {
62
+ /** Work order identifier (repeated for each operation). */
63
+ workOrderId?: string | number;
64
+ /** Lot identifier for the operation row. */
65
+ lot?: string | number;
66
+ /** Split identifier for the operation row. */
67
+ split?: string | number;
68
+ /** Sub identifier for the operation row. */
69
+ sub?: string | number;
70
+ /** Sequence number for the specific operation. */
71
+ sequenceNumber?: string | number;
72
+ /** Resource or machine identifier for the operation. */
73
+ resourceId?: string | number;
74
+ /** Quantity started on the operation. */
75
+ startQuantity?: number;
76
+ /** Quantity finished on the operation. */
77
+ finishQuantity?: number;
78
+ /** Expected reject percentage (0-1). */
79
+ expectedRejectRate?: number;
80
+ /** Scheduled start datetime (ISO-8601 UTC). */
81
+ opScheduledStartDate?: string;
82
+ /** Scheduled finish datetime (ISO-8601 UTC). */
83
+ opScheduledFinishDate?: string;
84
+ /** Closed datetime for the operation (ISO-8601 UTC). */
85
+ opClosedDate?: string;
86
+ /** Production burden rate per hour. */
87
+ productionburdenRateHourly?: number | string;
88
+ /** Setup burden rate per hour. */
89
+ setupburdenRatehourly?: number | string;
90
+ /** Operation type (Production, Setup, etc.). */
91
+ operationType?: string;
92
+ /** Quantity per part for the operation. */
93
+ quantityPerPart?: number;
94
+ /** Operation status (defaults to work-order status when omitted). */
95
+ opStatus?: string;
96
+ }
97
+
98
+ export type FlattenedWorkOrderRowBase =
99
+ FlattenedWorkOrderPartFields &
100
+ FlattenedWorkOrderPartOperationFields &
101
+ FlattenedWorkOrderFields &
102
+ FlattenedWorkOrderOperationFields;
103
+
104
+ /**
105
+ * Canonical flattened row that callers pass into
106
+ * `StandardProcessDrivers.syncWorkOrderBatchFromFlattened`.
107
+ */
108
+ export type FlattenedWorkOrderRow = FlattenedWorkOrderRowBase;
@@ -10,3 +10,11 @@ export type {
10
10
  ERPResponse,
11
11
  ERPObject,
12
12
  } from "./erp-types.js";
13
+ export type {
14
+ FlattenedWorkOrderRow,
15
+ FlattenedWorkOrderRowBase,
16
+ FlattenedWorkOrderPartFields,
17
+ FlattenedWorkOrderPartOperationFields,
18
+ FlattenedWorkOrderFields,
19
+ FlattenedWorkOrderOperationFields,
20
+ } from "./flattened-work-order.js";