@parkflow/shared-types 1.5.0 → 1.9.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.
- package/.npmrc.publish +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/lot-health/index.d.ts +14 -0
- package/dist/types/lot-health/index.js +31 -0
- package/dist/types/lot-health/index.js.map +1 -0
- package/dist/types/lot-health/lot-backlog-severity.enum.d.ts +5 -0
- package/dist/types/lot-health/lot-backlog-severity.enum.js +10 -0
- package/dist/types/lot-health/lot-backlog-severity.enum.js.map +1 -0
- package/dist/types/lot-health/lot-backlog-status.interface.d.ts +8 -0
- package/dist/types/lot-health/lot-backlog-status.interface.js +3 -0
- package/dist/types/lot-health/lot-backlog-status.interface.js.map +1 -0
- package/dist/types/lot-health/lot-daily-metrics.interface.d.ts +8 -0
- package/dist/types/lot-health/lot-daily-metrics.interface.js +3 -0
- package/dist/types/lot-health/lot-daily-metrics.interface.js.map +1 -0
- package/dist/types/lot-health/lot-day-funnel.interface.d.ts +12 -0
- package/dist/types/lot-health/lot-day-funnel.interface.js +3 -0
- package/dist/types/lot-health/lot-day-funnel.interface.js.map +1 -0
- package/dist/types/lot-health/lot-enforcement-config.interface.d.ts +8 -0
- package/dist/types/lot-health/lot-enforcement-config.interface.js +3 -0
- package/dist/types/lot-health/lot-enforcement-config.interface.js.map +1 -0
- package/dist/types/lot-health/lot-enforcement-run-info.interface.d.ts +7 -0
- package/dist/types/lot-health/lot-enforcement-run-info.interface.js +3 -0
- package/dist/types/lot-health/lot-enforcement-run-info.interface.js.map +1 -0
- package/dist/types/lot-health/lot-enforcement-trigger-source.enum.d.ts +6 -0
- package/dist/types/lot-health/lot-enforcement-trigger-source.enum.js +11 -0
- package/dist/types/lot-health/lot-enforcement-trigger-source.enum.js.map +1 -0
- package/dist/types/lot-health/lot-health-response.interface.d.ts +20 -0
- package/dist/types/lot-health/lot-health-response.interface.js +3 -0
- package/dist/types/lot-health/lot-health-response.interface.js.map +1 -0
- package/dist/types/lot-health/lot-recent-validation.interface.d.ts +10 -0
- package/dist/types/lot-health/lot-recent-validation.interface.js +3 -0
- package/dist/types/lot-health/lot-recent-validation.interface.js.map +1 -0
- package/dist/types/lot-health/lot-validation-activity-section.interface.d.ts +6 -0
- package/dist/types/lot-health/lot-validation-activity-section.interface.js +3 -0
- package/dist/types/lot-health/lot-validation-activity-section.interface.js.map +1 -0
- package/dist/types/lot-health/lot-validation-provider-state.enum.d.ts +5 -0
- package/dist/types/lot-health/lot-validation-provider-state.enum.js +10 -0
- package/dist/types/lot-health/lot-validation-provider-state.enum.js.map +1 -0
- package/dist/types/lot-health/lot-validation-provider-status.interface.d.ts +8 -0
- package/dist/types/lot-health/lot-validation-provider-status.interface.js +3 -0
- package/dist/types/lot-health/lot-validation-provider-status.interface.js.map +1 -0
- package/dist/types/lot-health/lot-webhook-activity.interface.d.ts +12 -0
- package/dist/types/lot-health/lot-webhook-activity.interface.js +3 -0
- package/dist/types/lot-health/lot-webhook-activity.interface.js.map +1 -0
- package/dist/types/lot-health/validation-reason-bucket.interface.d.ts +4 -0
- package/dist/types/lot-health/validation-reason-bucket.interface.js +3 -0
- package/dist/types/lot-health/validation-reason-bucket.interface.js.map +1 -0
- package/dist/types/lpr/generic-lpr-job.interface.d.ts +1 -1
- package/package.json +1 -1
- package/src/types/index.ts +2 -1
- package/src/types/lot-health/index.ts +14 -0
- package/src/types/lot-health/lot-backlog-severity.enum.ts +5 -0
- package/src/types/lot-health/lot-backlog-status.interface.ts +10 -0
- package/src/types/lot-health/lot-daily-metrics.interface.ts +8 -0
- package/src/types/lot-health/lot-day-funnel.interface.ts +14 -0
- package/src/types/lot-health/lot-enforcement-config.interface.ts +8 -0
- package/src/types/lot-health/lot-enforcement-run-info.interface.ts +8 -0
- package/src/types/lot-health/lot-enforcement-trigger-source.enum.ts +6 -0
- package/src/types/lot-health/lot-health-response.interface.ts +24 -0
- package/src/types/lot-health/lot-recent-validation.interface.ts +14 -0
- package/src/types/lot-health/lot-validation-activity-section.interface.ts +9 -0
- package/src/types/lot-health/lot-validation-provider-state.enum.ts +8 -0
- package/src/types/lot-health/lot-validation-provider-status.interface.ts +9 -0
- package/src/types/lot-health/lot-webhook-activity.interface.ts +16 -0
- package/src/types/lot-health/validation-reason-bucket.interface.ts +4 -0
- package/src/types/lpr/generic-lpr-job.interface.ts +1 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./lot-backlog-severity.enum"), exports);
|
|
18
|
+
__exportStar(require("./lot-backlog-status.interface"), exports);
|
|
19
|
+
__exportStar(require("./lot-daily-metrics.interface"), exports);
|
|
20
|
+
__exportStar(require("./lot-day-funnel.interface"), exports);
|
|
21
|
+
__exportStar(require("./lot-enforcement-config.interface"), exports);
|
|
22
|
+
__exportStar(require("./lot-enforcement-run-info.interface"), exports);
|
|
23
|
+
__exportStar(require("./lot-enforcement-trigger-source.enum"), exports);
|
|
24
|
+
__exportStar(require("./lot-health-response.interface"), exports);
|
|
25
|
+
__exportStar(require("./lot-recent-validation.interface"), exports);
|
|
26
|
+
__exportStar(require("./lot-validation-activity-section.interface"), exports);
|
|
27
|
+
__exportStar(require("./lot-validation-provider-state.enum"), exports);
|
|
28
|
+
__exportStar(require("./lot-validation-provider-status.interface"), exports);
|
|
29
|
+
__exportStar(require("./lot-webhook-activity.interface"), exports);
|
|
30
|
+
__exportStar(require("./validation-reason-bucket.interface"), exports);
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/lot-health/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,iEAA+C;AAC/C,gEAA8C;AAC9C,6DAA2C;AAC3C,qEAAmD;AACnD,uEAAqD;AACrD,wEAAsD;AACtD,kEAAgD;AAChD,oEAAkD;AAClD,8EAA4D;AAC5D,uEAAqD;AACrD,6EAA2D;AAC3D,mEAAiD;AACjD,uEAAqD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LotBacklogSeverity = void 0;
|
|
4
|
+
var LotBacklogSeverity;
|
|
5
|
+
(function (LotBacklogSeverity) {
|
|
6
|
+
LotBacklogSeverity["Ok"] = "ok";
|
|
7
|
+
LotBacklogSeverity["Warn"] = "warn";
|
|
8
|
+
LotBacklogSeverity["Alert"] = "alert";
|
|
9
|
+
})(LotBacklogSeverity || (exports.LotBacklogSeverity = LotBacklogSeverity = {}));
|
|
10
|
+
//# sourceMappingURL=lot-backlog-severity.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-backlog-severity.enum.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-backlog-severity.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,+BAAS,CAAA;IACT,mCAAa,CAAA;IACb,qCAAe,CAAA;AACnB,CAAC,EAJW,kBAAkB,kCAAlB,kBAAkB,QAI7B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LotBacklogSeverity } from './lot-backlog-severity.enum';
|
|
2
|
+
export interface LotBacklogStatus {
|
|
3
|
+
unprocessedCount: number;
|
|
4
|
+
oldestUnprocessedAtUtc: string | null;
|
|
5
|
+
oldestUnprocessedAgeSeconds: number | null;
|
|
6
|
+
severity: LotBacklogSeverity;
|
|
7
|
+
advisory: string | null;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-backlog-status.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-backlog-status.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-daily-metrics.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-daily-metrics.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ValidationReasonBucket } from './validation-reason-bucket.interface';
|
|
2
|
+
export interface LotDayFunnel {
|
|
3
|
+
dayLabel: string;
|
|
4
|
+
rangeStartUtc: string;
|
|
5
|
+
rangeEndUtc: string;
|
|
6
|
+
totalSessions: number;
|
|
7
|
+
validatedCount: number;
|
|
8
|
+
ticketedCount: number;
|
|
9
|
+
unprocessedCount: number;
|
|
10
|
+
violationRatePct: number | null;
|
|
11
|
+
validationReasons: ValidationReasonBucket[];
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-day-funnel.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-day-funnel.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-enforcement-config.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-enforcement-config.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LotEnforcementTriggerSource } from './lot-enforcement-trigger-source.enum';
|
|
2
|
+
export interface LotEnforcementRunInfo {
|
|
3
|
+
lastRunAtUtc: string;
|
|
4
|
+
lastSuccessAtUtc: string | null;
|
|
5
|
+
lastTriggerSource: LotEnforcementTriggerSource;
|
|
6
|
+
lastError: string | null;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-enforcement-run-info.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-enforcement-run-info.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LotEnforcementTriggerSource = void 0;
|
|
4
|
+
var LotEnforcementTriggerSource;
|
|
5
|
+
(function (LotEnforcementTriggerSource) {
|
|
6
|
+
LotEnforcementTriggerSource["Cron"] = "cron";
|
|
7
|
+
LotEnforcementTriggerSource["Manual"] = "manual";
|
|
8
|
+
LotEnforcementTriggerSource["CaptureEvent"] = "capture-event";
|
|
9
|
+
LotEnforcementTriggerSource["Unknown"] = "unknown";
|
|
10
|
+
})(LotEnforcementTriggerSource || (exports.LotEnforcementTriggerSource = LotEnforcementTriggerSource = {}));
|
|
11
|
+
//# sourceMappingURL=lot-enforcement-trigger-source.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-enforcement-trigger-source.enum.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-enforcement-trigger-source.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,2BAKX;AALD,WAAY,2BAA2B;IACnC,4CAAa,CAAA;IACb,gDAAiB,CAAA;IACjB,6DAA8B,CAAA;IAC9B,kDAAmB,CAAA;AACvB,CAAC,EALW,2BAA2B,2CAA3B,2BAA2B,QAKtC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LotEnforcementConfig } from './lot-enforcement-config.interface';
|
|
2
|
+
import { LotBacklogStatus } from './lot-backlog-status.interface';
|
|
3
|
+
import { LotDayFunnel } from './lot-day-funnel.interface';
|
|
4
|
+
import { LotDailyMetrics } from './lot-daily-metrics.interface';
|
|
5
|
+
import { LotEnforcementRunInfo } from './lot-enforcement-run-info.interface';
|
|
6
|
+
import { LotWebhookActivity } from './lot-webhook-activity.interface';
|
|
7
|
+
import { LotValidationActivitySection } from './lot-validation-activity-section.interface';
|
|
8
|
+
export interface LotHealthResponse {
|
|
9
|
+
lotId: number;
|
|
10
|
+
lotCode: string;
|
|
11
|
+
timeZone: string;
|
|
12
|
+
generatedAtUtc: string;
|
|
13
|
+
config: LotEnforcementConfig;
|
|
14
|
+
backlog: LotBacklogStatus;
|
|
15
|
+
today: LotDayFunnel;
|
|
16
|
+
trend: LotDailyMetrics[];
|
|
17
|
+
lastEnforcementRun: LotEnforcementRunInfo | null;
|
|
18
|
+
webhooks: LotWebhookActivity[];
|
|
19
|
+
validations: LotValidationActivitySection;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-health-response.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-health-response.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-recent-validation.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-recent-validation.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LotRecentValidation } from './lot-recent-validation.interface';
|
|
2
|
+
import { LotValidationProviderStatus } from './lot-validation-provider-status.interface';
|
|
3
|
+
export interface LotValidationActivitySection {
|
|
4
|
+
providers: LotValidationProviderStatus[];
|
|
5
|
+
recent: LotRecentValidation[];
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-validation-activity-section.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-validation-activity-section.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LotValidationProviderState = void 0;
|
|
4
|
+
var LotValidationProviderState;
|
|
5
|
+
(function (LotValidationProviderState) {
|
|
6
|
+
LotValidationProviderState["Active"] = "active";
|
|
7
|
+
LotValidationProviderState["Stale"] = "stale";
|
|
8
|
+
LotValidationProviderState["Silent"] = "silent";
|
|
9
|
+
})(LotValidationProviderState || (exports.LotValidationProviderState = LotValidationProviderState = {}));
|
|
10
|
+
//# sourceMappingURL=lot-validation-provider-state.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-validation-provider-state.enum.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-validation-provider-state.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,0BAOX;AAPD,WAAY,0BAA0B;IAElC,+CAAiB,CAAA;IAEjB,6CAAe,CAAA;IAEf,+CAAiB,CAAA;AACrB,CAAC,EAPW,0BAA0B,0CAA1B,0BAA0B,QAOrC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LotValidationProviderState } from './lot-validation-provider-state.enum';
|
|
2
|
+
export interface LotValidationProviderStatus {
|
|
3
|
+
paymentIntegrationId: number;
|
|
4
|
+
providerName: string;
|
|
5
|
+
state: LotValidationProviderState;
|
|
6
|
+
countLast24h: number;
|
|
7
|
+
lastReceivedAtUtc: string | null;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-validation-provider-status.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-validation-provider-status.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface LotWebhookActivity {
|
|
2
|
+
id: string;
|
|
3
|
+
eventType: string;
|
|
4
|
+
status: string;
|
|
5
|
+
statusCode: number | null;
|
|
6
|
+
subscriberName: string | null;
|
|
7
|
+
destinationUrl: string | null;
|
|
8
|
+
createdAtUtc: string;
|
|
9
|
+
retryCount: number;
|
|
10
|
+
errorMessage: string | null;
|
|
11
|
+
payload: unknown;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lot-webhook-activity.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/lot-webhook-activity.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-reason-bucket.interface.js","sourceRoot":"","sources":["../../../src/types/lot-health/validation-reason-bucket.interface.ts"],"names":[],"mappings":""}
|
|
@@ -10,7 +10,7 @@ export interface GenericLprJob {
|
|
|
10
10
|
cameraId: string;
|
|
11
11
|
twoLetterState: string;
|
|
12
12
|
eventTimestamp: number | Date | string;
|
|
13
|
-
eventTimestampFormatType?: 'sql' | '
|
|
13
|
+
eventTimestampFormatType?: 'sql' | 'custom';
|
|
14
14
|
eventTimestampCustomFormat?: string;
|
|
15
15
|
payloadTimestamp: number | Date;
|
|
16
16
|
plateRegion: string;
|
package/package.json
CHANGED
package/src/types/index.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './lot-backlog-severity.enum';
|
|
2
|
+
export * from './lot-backlog-status.interface';
|
|
3
|
+
export * from './lot-daily-metrics.interface';
|
|
4
|
+
export * from './lot-day-funnel.interface';
|
|
5
|
+
export * from './lot-enforcement-config.interface';
|
|
6
|
+
export * from './lot-enforcement-run-info.interface';
|
|
7
|
+
export * from './lot-enforcement-trigger-source.enum';
|
|
8
|
+
export * from './lot-health-response.interface';
|
|
9
|
+
export * from './lot-recent-validation.interface';
|
|
10
|
+
export * from './lot-validation-activity-section.interface';
|
|
11
|
+
export * from './lot-validation-provider-state.enum';
|
|
12
|
+
export * from './lot-validation-provider-status.interface';
|
|
13
|
+
export * from './lot-webhook-activity.interface';
|
|
14
|
+
export * from './validation-reason-bucket.interface';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LotBacklogSeverity } from './lot-backlog-severity.enum';
|
|
2
|
+
|
|
3
|
+
export interface LotBacklogStatus {
|
|
4
|
+
unprocessedCount: number;
|
|
5
|
+
oldestUnprocessedAtUtc: string | null;
|
|
6
|
+
oldestUnprocessedAgeSeconds: number | null;
|
|
7
|
+
severity: LotBacklogSeverity;
|
|
8
|
+
/** Phrased for end-user display so the UI does not derive its own copy. */
|
|
9
|
+
advisory: string | null;
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidationReasonBucket } from './validation-reason-bucket.interface';
|
|
2
|
+
|
|
3
|
+
export interface LotDayFunnel {
|
|
4
|
+
dayLabel: string;
|
|
5
|
+
rangeStartUtc: string;
|
|
6
|
+
rangeEndUtc: string;
|
|
7
|
+
totalSessions: number;
|
|
8
|
+
validatedCount: number;
|
|
9
|
+
ticketedCount: number;
|
|
10
|
+
unprocessedCount: number;
|
|
11
|
+
/** Null while unprocessedCount > 0 — the rate is not final until enforcement has run. */
|
|
12
|
+
violationRatePct: number | null;
|
|
13
|
+
validationReasons: ValidationReasonBucket[];
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LotEnforcementTriggerSource } from './lot-enforcement-trigger-source.enum';
|
|
2
|
+
|
|
3
|
+
export interface LotEnforcementRunInfo {
|
|
4
|
+
lastRunAtUtc: string;
|
|
5
|
+
lastSuccessAtUtc: string | null;
|
|
6
|
+
lastTriggerSource: LotEnforcementTriggerSource;
|
|
7
|
+
lastError: string | null;
|
|
8
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { LotEnforcementConfig } from './lot-enforcement-config.interface';
|
|
2
|
+
import { LotBacklogStatus } from './lot-backlog-status.interface';
|
|
3
|
+
import { LotDayFunnel } from './lot-day-funnel.interface';
|
|
4
|
+
import { LotDailyMetrics } from './lot-daily-metrics.interface';
|
|
5
|
+
import { LotEnforcementRunInfo } from './lot-enforcement-run-info.interface';
|
|
6
|
+
import { LotWebhookActivity } from './lot-webhook-activity.interface';
|
|
7
|
+
import { LotValidationActivitySection } from './lot-validation-activity-section.interface';
|
|
8
|
+
|
|
9
|
+
export interface LotHealthResponse {
|
|
10
|
+
lotId: number;
|
|
11
|
+
lotCode: string;
|
|
12
|
+
timeZone: string;
|
|
13
|
+
generatedAtUtc: string;
|
|
14
|
+
config: LotEnforcementConfig;
|
|
15
|
+
backlog: LotBacklogStatus;
|
|
16
|
+
today: LotDayFunnel;
|
|
17
|
+
/** Days with zero sessions are still returned so chart density is preserved. */
|
|
18
|
+
trend: LotDailyMetrics[];
|
|
19
|
+
lastEnforcementRun: LotEnforcementRunInfo | null;
|
|
20
|
+
/** Most recent outbound webhook deliveries tagged with this lot, capped to a small window. */
|
|
21
|
+
webhooks: LotWebhookActivity[];
|
|
22
|
+
/** Inbound payment validations and the configured-provider health summary for the last 24h. */
|
|
23
|
+
validations: LotValidationActivitySection;
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One inbound parking validation as displayed in the Health tab.
|
|
3
|
+
* IDs are synthesised from receiptId + lpn + start so React keys are stable across polls.
|
|
4
|
+
*/
|
|
5
|
+
export interface LotRecentValidation {
|
|
6
|
+
id: string;
|
|
7
|
+
lpn: string;
|
|
8
|
+
state: string | null;
|
|
9
|
+
providerName: string | null;
|
|
10
|
+
receiptId: string | null;
|
|
11
|
+
startUtc: string;
|
|
12
|
+
endUtc: string;
|
|
13
|
+
receivedAtUtc: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LotRecentValidation } from './lot-recent-validation.interface';
|
|
2
|
+
import { LotValidationProviderStatus } from './lot-validation-provider-status.interface';
|
|
3
|
+
|
|
4
|
+
export interface LotValidationActivitySection {
|
|
5
|
+
/** One entry per payment integration configured on the lot, ordered by provider name. */
|
|
6
|
+
providers: LotValidationProviderStatus[];
|
|
7
|
+
/** Most recent inbound validations for the lot, capped to a small window. */
|
|
8
|
+
recent: LotRecentValidation[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export enum LotValidationProviderState {
|
|
2
|
+
/** Validations in the last 24h with most recent within ~2 hours. */
|
|
3
|
+
Active = 'active',
|
|
4
|
+
/** Validations exist in 24h but most recent is older than ~2 hours. */
|
|
5
|
+
Stale = 'stale',
|
|
6
|
+
/** Provider is configured on the lot but produced no validations in 24h. */
|
|
7
|
+
Silent = 'silent',
|
|
8
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LotValidationProviderState } from './lot-validation-provider-state.enum';
|
|
2
|
+
|
|
3
|
+
export interface LotValidationProviderStatus {
|
|
4
|
+
paymentIntegrationId: number;
|
|
5
|
+
providerName: string;
|
|
6
|
+
state: LotValidationProviderState;
|
|
7
|
+
countLast24h: number;
|
|
8
|
+
lastReceivedAtUtc: string | null;
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One row from the outbound webhook log for a lot — one delivery attempt to one subscriber.
|
|
3
|
+
* Includes the full rendered payload so the UI can show it on demand without a second round-trip.
|
|
4
|
+
*/
|
|
5
|
+
export interface LotWebhookActivity {
|
|
6
|
+
id: string;
|
|
7
|
+
eventType: string;
|
|
8
|
+
status: string;
|
|
9
|
+
statusCode: number | null;
|
|
10
|
+
subscriberName: string | null;
|
|
11
|
+
destinationUrl: string | null;
|
|
12
|
+
createdAtUtc: string;
|
|
13
|
+
retryCount: number;
|
|
14
|
+
errorMessage: string | null;
|
|
15
|
+
payload: unknown;
|
|
16
|
+
}
|
|
@@ -41,7 +41,7 @@ export interface GenericLprJob {
|
|
|
41
41
|
* @see https://moment.github.io/luxon/#/parsing?id=parsing-technical-formats
|
|
42
42
|
*
|
|
43
43
|
*/
|
|
44
|
-
eventTimestampFormatType?: 'sql' | '
|
|
44
|
+
eventTimestampFormatType?: 'sql' | 'custom';
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* If the event timestamp format type is "custom", it's required to pass the custom format
|