grm-shared-library 1.1.197 → 1.1.198

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 (48) hide show
  1. package/dist/cjs/modules/partner/constants/partner-defaults.const.js +25 -1
  2. package/dist/cjs/modules/partner/constants/partner-defaults.const.js.map +1 -1
  3. package/dist/cjs/modules/partner/dtos/amend-partner-dispatch.dto.js +95 -0
  4. package/dist/cjs/modules/partner/dtos/amend-partner-dispatch.dto.js.map +1 -0
  5. package/dist/cjs/modules/partner/dtos/update-incident-partner-routing.dto.js +72 -1
  6. package/dist/cjs/modules/partner/dtos/update-incident-partner-routing.dto.js.map +1 -1
  7. package/dist/cjs/modules/partner/enums/partner-adapter-operation.enum.js +13 -0
  8. package/dist/cjs/modules/partner/enums/partner-adapter-operation.enum.js.map +1 -1
  9. package/dist/cjs/modules/partner/enums/partner-dispatch-status.enum.js +40 -11
  10. package/dist/cjs/modules/partner/enums/partner-dispatch-status.enum.js.map +1 -1
  11. package/dist/cjs/modules/partner/enums/partner-engagement-state.enum.js +24 -0
  12. package/dist/cjs/modules/partner/enums/partner-engagement-state.enum.js.map +1 -0
  13. package/dist/cjs/modules/partner/index.js +3 -0
  14. package/dist/cjs/modules/partner/index.js.map +1 -1
  15. package/dist/cjs/modules/partner/interfaces/partner-dispatch-progress.js +3 -0
  16. package/dist/cjs/modules/partner/interfaces/partner-dispatch-progress.js.map +1 -0
  17. package/dist/cjs/modules/partner/utils/partner-routing.util.js +10 -0
  18. package/dist/cjs/modules/partner/utils/partner-routing.util.js.map +1 -1
  19. package/dist/esm/modules/partner/constants/partner-defaults.const.js +24 -0
  20. package/dist/esm/modules/partner/constants/partner-defaults.const.js.map +1 -1
  21. package/dist/esm/modules/partner/dtos/amend-partner-dispatch.dto.js +90 -0
  22. package/dist/esm/modules/partner/dtos/amend-partner-dispatch.dto.js.map +1 -0
  23. package/dist/esm/modules/partner/dtos/update-incident-partner-routing.dto.js +69 -0
  24. package/dist/esm/modules/partner/dtos/update-incident-partner-routing.dto.js.map +1 -1
  25. package/dist/esm/modules/partner/enums/partner-adapter-operation.enum.js +13 -0
  26. package/dist/esm/modules/partner/enums/partner-adapter-operation.enum.js.map +1 -1
  27. package/dist/esm/modules/partner/enums/partner-dispatch-status.enum.js +39 -10
  28. package/dist/esm/modules/partner/enums/partner-dispatch-status.enum.js.map +1 -1
  29. package/dist/esm/modules/partner/enums/partner-engagement-state.enum.js +21 -0
  30. package/dist/esm/modules/partner/enums/partner-engagement-state.enum.js.map +1 -0
  31. package/dist/esm/modules/partner/index.js +3 -0
  32. package/dist/esm/modules/partner/index.js.map +1 -1
  33. package/dist/esm/modules/partner/interfaces/partner-dispatch-progress.js +2 -0
  34. package/dist/esm/modules/partner/interfaces/partner-dispatch-progress.js.map +1 -0
  35. package/dist/esm/modules/partner/utils/partner-routing.util.js +10 -0
  36. package/dist/esm/modules/partner/utils/partner-routing.util.js.map +1 -1
  37. package/dist/types/modules/partner/constants/partner-defaults.const.d.ts +24 -0
  38. package/dist/types/modules/partner/dtos/amend-partner-dispatch.dto.d.ts +27 -0
  39. package/dist/types/modules/partner/dtos/update-incident-partner-routing.dto.d.ts +16 -0
  40. package/dist/types/modules/partner/enums/partner-adapter-operation.enum.d.ts +14 -1
  41. package/dist/types/modules/partner/enums/partner-dispatch-status.enum.d.ts +33 -8
  42. package/dist/types/modules/partner/enums/partner-engagement-state.enum.d.ts +19 -0
  43. package/dist/types/modules/partner/index.d.ts +3 -0
  44. package/dist/types/modules/partner/interfaces/incident-partner-routing.d.ts +13 -0
  45. package/dist/types/modules/partner/interfaces/partner-dispatch-progress.d.ts +48 -0
  46. package/dist/types/modules/partner/interfaces/partner-dispatch.d.ts +22 -0
  47. package/dist/types/modules/partner/interfaces/partner-provider-descriptor.d.ts +29 -0
  48. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PARTNER_ROUTING_IDEMPOTENCY_HEADER = exports.PARTNER_FIELD_LIMITS = exports.PARTNER_CHANNEL_LOCATION_PROVIDER = exports.PARTNER_DISPATCH_DEFAULTS = void 0;
3
+ exports.PARTNER_ROUTING_IDEMPOTENCY_HEADER = exports.PARTNER_FIELD_LIMITS = exports.PARTNER_CHANNEL_LOCATION_PROVIDER = exports.PARTNER_POLL_DEFAULTS = exports.PARTNER_DISPATCH_DEFAULTS = void 0;
4
4
  const incident_channel_enum_1 = require("../../incident/enums/incident-channel.enum");
5
5
  const partner_location_provider_enum_1 = require("../enums/partner-location-provider.enum");
6
6
  /**
@@ -36,6 +36,30 @@ exports.PARTNER_DISPATCH_DEFAULTS = {
36
36
  /** Longest a partner access token is cached, whatever lifetime the partner advertises. */
37
37
  TOKEN_MAX_CACHE_SECONDS: 24 * 60 * 60,
38
38
  };
39
+ /**
40
+ * How often a partner is asked what has happened to an emergency it already
41
+ * has, for the partners that publish that at all.
42
+ *
43
+ * The cadence starts tight and loosens. The first minutes after a dispatch are
44
+ * when a control room most needs to know whether anyone is coming; six hours
45
+ * later the answer has almost certainly stopped changing, and a partner should
46
+ * not be asked every minute forever on the off-chance.
47
+ */
48
+ exports.PARTNER_POLL_DEFAULTS = {
49
+ /** Delay before the first progress check, and the base of the backoff. */
50
+ INITIAL_SECONDS: 60,
51
+ /** Ceiling for the exponential backoff between checks. */
52
+ MAX_SECONDS: 600,
53
+ /**
54
+ * How long to keep asking about a request the partner has never closed.
55
+ *
56
+ * Not a judgement that the emergency is over - only that the partner has
57
+ * stopped saying anything new, and an unanswered question repeated for a day
58
+ * is just load. The dispatch keeps its last known state and an operator can
59
+ * still ask the partner directly.
60
+ */
61
+ GIVE_UP_HOURS: 12,
62
+ };
39
63
  /**
40
64
  * How an incident's reporting channel is described to a partner.
41
65
  *
@@ -1 +1 @@
1
- {"version":3,"file":"partner-defaults.const.js","sourceRoot":"","sources":["../../../../../src/modules/partner/constants/partner-defaults.const.ts"],"names":[],"mappings":";;;AAAA,sFAA6E;AAC7E,4FAAkF;AAElF;;;;;GAKG;AACU,QAAA,yBAAyB,GAAG;IACrC,uFAAuF;IACvF,YAAY,EAAE,CAAC;IACf,8EAA8E;IAC9E,kBAAkB,EAAE,EAAE;IACtB,uDAAuD;IACvD,iBAAiB,EAAE,GAAG;IACtB,yEAAyE;IACzE,kBAAkB,EAAE,KAAK;IACzB,wEAAwE;IACxE,eAAe,EAAE,IAAI;IACrB;;;;OAIG;IACH,uBAAuB,EAAE,EAAE;IAC3B,0DAA0D;IAC1D,QAAQ,EAAE,GAAG;IACb;;;OAGG;IACH,yBAAyB,EAAE,EAAE;IAC7B,0FAA0F;IAC1F,uBAAuB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CAC/B,CAAC;AAEX;;;;;;;;;GASG;AACU,QAAA,iCAAiC,GAA+D;IACzG,CAAC,uCAAe,CAAC,GAAG,CAAC,EAAE,wDAAuB,CAAC,KAAK;IACpD,CAAC,uCAAe,CAAC,GAAG,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACtD,CAAC,uCAAe,CAAC,KAAK,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACxD,CAAC,uCAAe,CAAC,GAAG,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACtD,CAAC,uCAAe,CAAC,KAAK,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACxD,CAAC,uCAAe,CAAC,IAAI,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACvD,CAAC,uCAAe,CAAC,YAAY,CAAC,EAAE,wDAAuB,CAAC,OAAO;IAC/D,CAAC,uCAAe,CAAC,SAAS,CAAC,EAAE,wDAAuB,CAAC,OAAO;IAC5D,CAAC,uCAAe,CAAC,KAAK,CAAC,EAAE,wDAAuB,CAAC,OAAO;CAC3D,CAAC;AAEF,2EAA2E;AAC9D,QAAA,oBAAoB,GAAG;IAChC,kBAAkB,EAAE,GAAG;IACvB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,GAAG;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,8EAA8E;IAC9E,mCAAmC,EAAE,CAAC;CAChC,CAAC;AAEX;;;GAGG;AACU,QAAA,kCAAkC,GAAG,mCAAmC,CAAC"}
1
+ {"version":3,"file":"partner-defaults.const.js","sourceRoot":"","sources":["../../../../../src/modules/partner/constants/partner-defaults.const.ts"],"names":[],"mappings":";;;AAAA,sFAA6E;AAC7E,4FAAkF;AAElF;;;;;GAKG;AACU,QAAA,yBAAyB,GAAG;IACrC,uFAAuF;IACvF,YAAY,EAAE,CAAC;IACf,8EAA8E;IAC9E,kBAAkB,EAAE,EAAE;IACtB,uDAAuD;IACvD,iBAAiB,EAAE,GAAG;IACtB,yEAAyE;IACzE,kBAAkB,EAAE,KAAK;IACzB,wEAAwE;IACxE,eAAe,EAAE,IAAI;IACrB;;;;OAIG;IACH,uBAAuB,EAAE,EAAE;IAC3B,0DAA0D;IAC1D,QAAQ,EAAE,GAAG;IACb;;;OAGG;IACH,yBAAyB,EAAE,EAAE;IAC7B,0FAA0F;IAC1F,uBAAuB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CAC/B,CAAC;AAEX;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG;IACjC,0EAA0E;IAC1E,eAAe,EAAE,EAAE;IACnB,0DAA0D;IAC1D,WAAW,EAAE,GAAG;IAChB;;;;;;;OAOG;IACH,aAAa,EAAE,EAAE;CACX,CAAC;AAEX;;;;;;;;;GASG;AACU,QAAA,iCAAiC,GAA+D;IACzG,CAAC,uCAAe,CAAC,GAAG,CAAC,EAAE,wDAAuB,CAAC,KAAK;IACpD,CAAC,uCAAe,CAAC,GAAG,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACtD,CAAC,uCAAe,CAAC,KAAK,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACxD,CAAC,uCAAe,CAAC,GAAG,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACtD,CAAC,uCAAe,CAAC,KAAK,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACxD,CAAC,uCAAe,CAAC,IAAI,CAAC,EAAE,wDAAuB,CAAC,OAAO;IACvD,CAAC,uCAAe,CAAC,YAAY,CAAC,EAAE,wDAAuB,CAAC,OAAO;IAC/D,CAAC,uCAAe,CAAC,SAAS,CAAC,EAAE,wDAAuB,CAAC,OAAO;IAC5D,CAAC,uCAAe,CAAC,KAAK,CAAC,EAAE,wDAAuB,CAAC,OAAO;CAC3D,CAAC;AAEF,2EAA2E;AAC9D,QAAA,oBAAoB,GAAG;IAChC,kBAAkB,EAAE,GAAG;IACvB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,GAAG;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,8EAA8E;IAC9E,mCAAmC,EAAE,CAAC;CAChC,CAAC;AAEX;;;GAGG;AACU,QAAA,kCAAkC,GAAG,mCAAmC,CAAC"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AmendPartnerDispatchDto = exports.AmendPartnerDispatchLocationDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
16
+ /** A corrected location for an emergency a partner is already working. */
17
+ class AmendPartnerDispatchLocationDto {
18
+ }
19
+ exports.AmendPartnerDispatchLocationDto = AmendPartnerDispatchLocationDto;
20
+ __decorate([
21
+ (0, swagger_1.ApiPropertyOptional)({ example: -1.2921 }),
22
+ (0, class_transformer_1.Type)(() => Number),
23
+ (0, class_validator_1.IsNumber)(),
24
+ (0, class_validator_1.IsLatitude)(),
25
+ __metadata("design:type", Number)
26
+ ], AmendPartnerDispatchLocationDto.prototype, "latitude", void 0);
27
+ __decorate([
28
+ (0, swagger_1.ApiPropertyOptional)({ example: 36.8219 }),
29
+ (0, class_transformer_1.Type)(() => Number),
30
+ (0, class_validator_1.IsNumber)(),
31
+ (0, class_validator_1.IsLongitude)(),
32
+ __metadata("design:type", Number)
33
+ ], AmendPartnerDispatchLocationDto.prototype, "longitude", void 0);
34
+ __decorate([
35
+ (0, swagger_1.ApiPropertyOptional)({ description: 'When the corrected fix was taken. Defaults to now.' }),
36
+ (0, class_validator_1.IsDateString)(),
37
+ (0, class_validator_1.IsOptional)(),
38
+ __metadata("design:type", String)
39
+ ], AmendPartnerDispatchLocationDto.prototype, "measuredAt", void 0);
40
+ /**
41
+ * Correct the details of an emergency a partner already has.
42
+ *
43
+ * The case this exists for is the ordinary one: a caller rings back with a
44
+ * better address while a responder is already moving. Sending the correction
45
+ * beats hoping the crew works it out.
46
+ *
47
+ * Only the fields a partner will actually accept mid-flight are here - who the
48
+ * emergency is FOR never changes, so the reporter and their phone number are
49
+ * deliberately absent. Every field is optional; sending none is a no-op rather
50
+ * than an error.
51
+ *
52
+ * Only meaningful for a partner whose descriptor sets `supportsAmendment`. For
53
+ * anyone else clarion-partner-services refuses plainly rather than pretending.
54
+ */
55
+ class AmendPartnerDispatchDto {
56
+ }
57
+ exports.AmendPartnerDispatchDto = AmendPartnerDispatchDto;
58
+ __decorate([
59
+ (0, swagger_1.ApiPropertyOptional)({
60
+ description: 'Corrected street address.',
61
+ example: 'Ngong Road, service lane behind Prestige Plaza',
62
+ }),
63
+ (0, class_validator_1.IsString)(),
64
+ (0, class_validator_1.MaxLength)(500),
65
+ (0, class_validator_1.IsOptional)(),
66
+ __metadata("design:type", String)
67
+ ], AmendPartnerDispatchDto.prototype, "address", void 0);
68
+ __decorate([
69
+ (0, swagger_1.ApiPropertyOptional)({
70
+ description: 'Corrected description of what is wrong.',
71
+ example: 'Two casualties, one trapped',
72
+ }),
73
+ (0, class_validator_1.IsString)(),
74
+ (0, class_validator_1.MaxLength)(1000),
75
+ (0, class_validator_1.IsOptional)(),
76
+ __metadata("design:type", String)
77
+ ], AmendPartnerDispatchDto.prototype, "issue", void 0);
78
+ __decorate([
79
+ (0, swagger_1.ApiPropertyOptional)({ type: AmendPartnerDispatchLocationDto }),
80
+ (0, class_validator_1.ValidateNested)(),
81
+ (0, class_transformer_1.Type)(() => AmendPartnerDispatchLocationDto),
82
+ (0, class_validator_1.IsOptional)(),
83
+ __metadata("design:type", AmendPartnerDispatchLocationDto)
84
+ ], AmendPartnerDispatchDto.prototype, "location", void 0);
85
+ __decorate([
86
+ (0, swagger_1.ApiPropertyOptional)({
87
+ description: 'Why the details were corrected. Recorded in the audit trail.',
88
+ example: 'Caller rang back with the service entrance',
89
+ }),
90
+ (0, class_validator_1.IsString)(),
91
+ (0, class_validator_1.MaxLength)(500),
92
+ (0, class_validator_1.IsOptional)(),
93
+ __metadata("design:type", String)
94
+ ], AmendPartnerDispatchDto.prototype, "reason", void 0);
95
+ //# sourceMappingURL=amend-partner-dispatch.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amend-partner-dispatch.dto.js","sourceRoot":"","sources":["../../../../../src/modules/partner/dtos/amend-partner-dispatch.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAsD;AACtD,yDAAyC;AACzC,qDASyB;AAEzB,0EAA0E;AAC1E,MAAa,+BAA+B;CAiB3C;AAjBD,0EAiBC;AAZG;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;IACzC,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;iEACK;AAMlB;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACzC,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,0BAAQ,GAAE;IACV,IAAA,6BAAW,GAAE;;kEACK;AAKnB;IAHC,IAAA,6BAAmB,EAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;IAC1F,IAAA,8BAAY,GAAE;IACd,IAAA,4BAAU,GAAE;;mEACO;AAGxB;;;;;;;;;;;;;;GAcG;AACH,MAAa,uBAAuB;CAiCnC;AAjCD,0DAiCC;AAzBG;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,gDAAgD;KAC5D,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;IACd,IAAA,4BAAU,GAAE;;wDACI;AASjB;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,6BAA6B;KACzC,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,IAAI,CAAC;IACf,IAAA,4BAAU,GAAE;;sDACE;AAMf;IAJC,IAAA,6BAAmB,EAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC;IAC9D,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,+BAA+B,CAAC;IAC3C,IAAA,4BAAU,GAAE;8BACF,+BAA+B;yDAAC;AAS3C;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,8DAA8D;QAC3E,OAAO,EAAE,4CAA4C;KACxD,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;IACd,IAAA,4BAAU,GAAE;;uDACG"}
@@ -9,15 +9,66 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UpdateIncidentPartnerRoutingDto = exports.IncidentPartnerRoutingEntryDto = void 0;
12
+ exports.UpdateIncidentPartnerRoutingDto = exports.IncidentPartnerRoutingEntryDto = exports.IncidentPartnerVehicleDto = exports.IncidentPartnerResponderDto = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
14
  const class_transformer_1 = require("class-transformer");
15
15
  const class_validator_1 = require("class-validator");
16
16
  const incident_partner_routing_status_enum_1 = require("../enums/incident-partner-routing-status.enum");
17
+ const partner_engagement_state_enum_1 = require("../enums/partner-engagement-state.enum");
17
18
  const partner_dispatch_status_enum_1 = require("../enums/partner-dispatch-status.enum");
18
19
  const partner_provider_code_enum_1 = require("../enums/partner-provider-code.enum");
19
20
  const partner_routing_mode_enum_1 = require("../enums/partner-routing-mode.enum");
20
21
  const partner_service_capability_enum_1 = require("../enums/partner-service-capability.enum");
22
+ /** Whoever the partner has put on the job, as carried on the incident. */
23
+ class IncidentPartnerResponderDto {
24
+ }
25
+ exports.IncidentPartnerResponderDto = IncidentPartnerResponderDto;
26
+ __decorate([
27
+ (0, swagger_1.ApiPropertyOptional)({ example: 'John Mwangi' }),
28
+ (0, class_validator_1.IsString)(),
29
+ (0, class_validator_1.MaxLength)(250),
30
+ (0, class_validator_1.IsOptional)(),
31
+ __metadata("design:type", String)
32
+ ], IncidentPartnerResponderDto.prototype, "name", void 0);
33
+ __decorate([
34
+ (0, swagger_1.ApiPropertyOptional)({ example: '+254712345678' }),
35
+ (0, class_validator_1.IsString)(),
36
+ (0, class_validator_1.MaxLength)(30),
37
+ (0, class_validator_1.IsOptional)(),
38
+ __metadata("design:type", String)
39
+ ], IncidentPartnerResponderDto.prototype, "phoneNumber", void 0);
40
+ __decorate([
41
+ (0, swagger_1.ApiPropertyOptional)({ description: "The partner's own identifier for the responder." }),
42
+ (0, class_validator_1.IsString)(),
43
+ (0, class_validator_1.MaxLength)(200),
44
+ (0, class_validator_1.IsOptional)(),
45
+ __metadata("design:type", String)
46
+ ], IncidentPartnerResponderDto.prototype, "reference", void 0);
47
+ /** The unit the partner has assigned, as carried on the incident. */
48
+ class IncidentPartnerVehicleDto {
49
+ }
50
+ exports.IncidentPartnerVehicleDto = IncidentPartnerVehicleDto;
51
+ __decorate([
52
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Registration or call sign.', example: 'KAA 123B' }),
53
+ (0, class_validator_1.IsString)(),
54
+ (0, class_validator_1.MaxLength)(100),
55
+ (0, class_validator_1.IsOptional)(),
56
+ __metadata("design:type", String)
57
+ ], IncidentPartnerVehicleDto.prototype, "identifier", void 0);
58
+ __decorate([
59
+ (0, swagger_1.ApiPropertyOptional)({ example: 'White Toyota HiAce' }),
60
+ (0, class_validator_1.IsString)(),
61
+ (0, class_validator_1.MaxLength)(200),
62
+ (0, class_validator_1.IsOptional)(),
63
+ __metadata("design:type", String)
64
+ ], IncidentPartnerVehicleDto.prototype, "description", void 0);
65
+ __decorate([
66
+ (0, swagger_1.ApiPropertyOptional)({ description: "The partner's own classification of the unit." }),
67
+ (0, class_validator_1.IsString)(),
68
+ (0, class_validator_1.MaxLength)(100),
69
+ (0, class_validator_1.IsOptional)(),
70
+ __metadata("design:type", String)
71
+ ], IncidentPartnerVehicleDto.prototype, "serviceType", void 0);
21
72
  /** One partner's leg of an incident's routing, as pushed back to clarion-incident. */
22
73
  class IncidentPartnerRoutingEntryDto {
23
74
  }
@@ -76,6 +127,26 @@ __decorate([
76
127
  (0, class_validator_1.IsOptional)(),
77
128
  __metadata("design:type", String)
78
129
  ], IncidentPartnerRoutingEntryDto.prototype, "partnerReference", void 0);
130
+ __decorate([
131
+ (0, swagger_1.ApiPropertyOptional)({ enum: partner_engagement_state_enum_1.PartnerEngagementState }),
132
+ (0, class_validator_1.IsEnum)(partner_engagement_state_enum_1.PartnerEngagementState),
133
+ (0, class_validator_1.IsOptional)(),
134
+ __metadata("design:type", String)
135
+ ], IncidentPartnerRoutingEntryDto.prototype, "engagementState", void 0);
136
+ __decorate([
137
+ (0, swagger_1.ApiPropertyOptional)({ type: IncidentPartnerResponderDto }),
138
+ (0, class_validator_1.ValidateNested)(),
139
+ (0, class_transformer_1.Type)(() => IncidentPartnerResponderDto),
140
+ (0, class_validator_1.IsOptional)(),
141
+ __metadata("design:type", IncidentPartnerResponderDto)
142
+ ], IncidentPartnerRoutingEntryDto.prototype, "responder", void 0);
143
+ __decorate([
144
+ (0, swagger_1.ApiPropertyOptional)({ type: IncidentPartnerVehicleDto }),
145
+ (0, class_validator_1.ValidateNested)(),
146
+ (0, class_transformer_1.Type)(() => IncidentPartnerVehicleDto),
147
+ (0, class_validator_1.IsOptional)(),
148
+ __metadata("design:type", IncidentPartnerVehicleDto)
149
+ ], IncidentPartnerRoutingEntryDto.prototype, "vehicle", void 0);
79
150
  __decorate([
80
151
  (0, swagger_1.ApiProperty)({ example: '2026-08-26T05:25:41.400Z' }),
81
152
  (0, class_validator_1.IsDateString)(),
@@ -1 +1 @@
1
- {"version":3,"file":"update-incident-partner-routing.dto.js","sourceRoot":"","sources":["../../../../../src/modules/partner/dtos/update-incident-partner-routing.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-incident-partner-routing.dto.js","sourceRoot":"","sources":["../../../../../src/modules/partner/dtos/update-incident-partner-routing.dto.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,18 @@ var PartnerAdapterOperation;
14
14
  PartnerAdapterOperation["HEALTH_CHECK"] = "HEALTH_CHECK";
15
15
  /** Submitting the emergency itself. */
16
16
  PartnerAdapterOperation["DISPATCH"] = "DISPATCH";
17
+ /** Asking the partner what has happened since. */
18
+ PartnerAdapterOperation["FETCH_STATUS"] = "FETCH_STATUS";
19
+ /** Standing the partner down after they had already accepted it. */
20
+ PartnerAdapterOperation["WITHDRAW"] = "WITHDRAW";
21
+ /** Correcting details of an emergency the partner is already working. */
22
+ PartnerAdapterOperation["AMEND"] = "AMEND";
23
+ /**
24
+ * Asking the partner whether a request we may have already sent exists.
25
+ *
26
+ * Used after a timeout, where the request might have landed but the reply
27
+ * never arrived - the one case where re-sending could produce a duplicate.
28
+ */
29
+ PartnerAdapterOperation["LOOKUP"] = "LOOKUP";
17
30
  })(PartnerAdapterOperation || (exports.PartnerAdapterOperation = PartnerAdapterOperation = {}));
18
31
  //# sourceMappingURL=partner-adapter-operation.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"partner-adapter-operation.enum.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-adapter-operation.enum.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,uBAOX;AAPD,WAAY,uBAAuB;IAC/B,uEAAuE;IACvE,wDAA6B,CAAA;IAC7B,yCAAyC;IACzC,wDAA6B,CAAA;IAC7B,uCAAuC;IACvC,gDAAqB,CAAA;AACzB,CAAC,EAPW,uBAAuB,uCAAvB,uBAAuB,QAOlC"}
1
+ {"version":3,"file":"partner-adapter-operation.enum.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-adapter-operation.enum.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,uBAoBX;AApBD,WAAY,uBAAuB;IAC/B,uEAAuE;IACvE,wDAA6B,CAAA;IAC7B,yCAAyC;IACzC,wDAA6B,CAAA;IAC7B,uCAAuC;IACvC,gDAAqB,CAAA;IACrB,kDAAkD;IAClD,wDAA6B,CAAA;IAC7B,oEAAoE;IACpE,gDAAqB,CAAA;IACrB,yEAAyE;IACzE,0CAAe,CAAA;IACf;;;;;OAKG;IACH,4CAAiB,CAAA;AACrB,CAAC,EApBW,uBAAuB,uCAAvB,uBAAuB,QAoBlC"}
@@ -1,18 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DELIVERED_PARTNER_DISPATCH_STATUSES = exports.TERMINAL_PARTNER_DISPATCH_STATUSES = exports.PartnerDispatchStatus = void 0;
3
+ exports.POLLABLE_PARTNER_DISPATCH_STATUSES = exports.DELIVERED_PARTNER_DISPATCH_STATUSES = exports.TERMINAL_PARTNER_DISPATCH_STATUSES = exports.PartnerDispatchStatus = void 0;
4
4
  /**
5
5
  * Lifecycle of one incident's routing to one partner.
6
6
  *
7
- * Terminal states are SENT/ACKNOWLEDGED (the partner has the emergency),
8
- * FAILED, REJECTED, CANCELLED and EXPIRED. Everything else is in flight.
9
- *
10
7
  * MANUAL routing starts at PENDING_APPROVAL and reaches QUEUED only when an
11
8
  * operator approves; declining gives REJECTED, withdrawing gives CANCELLED and
12
9
  * letting the approval window elapse gives EXPIRED. AUTO routing starts at
13
10
  * QUEUED directly. QUEUED -> SENDING -> SENT on success, or back to QUEUED for a
14
11
  * transient retry, or FAILED when the failure is permanent or the attempts run
15
- * out. SENT -> ACKNOWLEDGED when the partner later reports progress.
12
+ * out.
13
+ *
14
+ * Once the partner has it, the remaining transitions come from THEM rather than
15
+ * from us: SENT -> ACKNOWLEDGED when they assign a responder, and either of
16
+ * those -> COMPLETED when they close it. WITHDRAWN is the one exception - an
17
+ * organization standing a partner down after the fact, which is only possible
18
+ * with a partner whose API supports it.
16
19
  */
17
20
  var PartnerDispatchStatus;
18
21
  (function (PartnerDispatchStatus) {
@@ -24,29 +27,55 @@ var PartnerDispatchStatus;
24
27
  PartnerDispatchStatus["SENDING"] = "SENDING";
25
28
  /** The partner accepted the request and returned its own reference. */
26
29
  PartnerDispatchStatus["SENT"] = "SENT";
27
- /** The partner has since confirmed progress on the request (status callback). */
30
+ /** The partner has assigned a responder, or otherwise confirmed it is working it. */
28
31
  PartnerDispatchStatus["ACKNOWLEDGED"] = "ACKNOWLEDGED";
32
+ /** The partner has closed the request. The engagement is over. */
33
+ PartnerDispatchStatus["COMPLETED"] = "COMPLETED";
29
34
  /** Permanently failed - rejected by the partner, or out of attempts. */
30
35
  PartnerDispatchStatus["FAILED"] = "FAILED";
31
36
  /** Declined by the organization instead of being sent. */
32
37
  PartnerDispatchStatus["REJECTED"] = "REJECTED";
33
- /** Withdrawn by the organization (before or after approval, never after SENT). */
38
+ /** Withdrawn by the organization BEFORE the partner ever received it. */
34
39
  PartnerDispatchStatus["CANCELLED"] = "CANCELLED";
40
+ /**
41
+ * Stood down by the organization AFTER the partner received it.
42
+ *
43
+ * Kept apart from CANCELLED because they are very different facts: one is an
44
+ * emergency a partner never heard about, the other is a responder who was
45
+ * dispatched and recalled. Only the second one costs a partner anything, and
46
+ * only the second one needs explaining in a monthly report.
47
+ */
48
+ PartnerDispatchStatus["WITHDRAWN"] = "WITHDRAWN";
35
49
  /** The manual-approval window elapsed with no decision. */
36
50
  PartnerDispatchStatus["EXPIRED"] = "EXPIRED";
37
51
  })(PartnerDispatchStatus || (exports.PartnerDispatchStatus = PartnerDispatchStatus = {}));
38
- /** Statuses from which no further transition happens. */
52
+ /**
53
+ * Statuses from which no further transition happens.
54
+ *
55
+ * SENT and ACKNOWLEDGED are deliberately NOT terminal: with a partner that
56
+ * publishes request status, both still move - to COMPLETED when the partner
57
+ * closes the request, or to WITHDRAWN if the organization stands them down.
58
+ */
39
59
  exports.TERMINAL_PARTNER_DISPATCH_STATUSES = [
40
- PartnerDispatchStatus.SENT,
41
- PartnerDispatchStatus.ACKNOWLEDGED,
60
+ PartnerDispatchStatus.COMPLETED,
42
61
  PartnerDispatchStatus.FAILED,
43
62
  PartnerDispatchStatus.REJECTED,
44
63
  PartnerDispatchStatus.CANCELLED,
64
+ PartnerDispatchStatus.WITHDRAWN,
45
65
  PartnerDispatchStatus.EXPIRED,
46
66
  ];
47
- /** Statuses that mean the partner is (or should shortly be) working the emergency. */
67
+ /** Statuses that mean the partner received the emergency and acted on it. */
48
68
  exports.DELIVERED_PARTNER_DISPATCH_STATUSES = [
49
69
  PartnerDispatchStatus.SENT,
50
70
  PartnerDispatchStatus.ACKNOWLEDGED,
71
+ PartnerDispatchStatus.COMPLETED,
72
+ ];
73
+ /**
74
+ * Statuses where the partner holds the emergency and it is not finished, so
75
+ * asking them for progress is worthwhile.
76
+ */
77
+ exports.POLLABLE_PARTNER_DISPATCH_STATUSES = [
78
+ PartnerDispatchStatus.SENT,
79
+ PartnerDispatchStatus.ACKNOWLEDGED,
51
80
  ];
52
81
  //# sourceMappingURL=partner-dispatch-status.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"partner-dispatch-status.enum.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-dispatch-status.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,IAAY,qBAmBX;AAnBD,WAAY,qBAAqB;IAC7B,0EAA0E;IAC1E,8DAAqC,CAAA;IACrC,mFAAmF;IACnF,0CAAiB,CAAA;IACjB,mCAAmC;IACnC,4CAAmB,CAAA;IACnB,uEAAuE;IACvE,sCAAa,CAAA;IACb,iFAAiF;IACjF,sDAA6B,CAAA;IAC7B,wEAAwE;IACxE,0CAAiB,CAAA;IACjB,0DAA0D;IAC1D,8CAAqB,CAAA;IACrB,kFAAkF;IAClF,gDAAuB,CAAA;IACvB,2DAA2D;IAC3D,4CAAmB,CAAA;AACvB,CAAC,EAnBW,qBAAqB,qCAArB,qBAAqB,QAmBhC;AAED,yDAAyD;AAC5C,QAAA,kCAAkC,GAAqC;IAChF,qBAAqB,CAAC,IAAI;IAC1B,qBAAqB,CAAC,YAAY;IAClC,qBAAqB,CAAC,MAAM;IAC5B,qBAAqB,CAAC,QAAQ;IAC9B,qBAAqB,CAAC,SAAS;IAC/B,qBAAqB,CAAC,OAAO;CAChC,CAAC;AAEF,sFAAsF;AACzE,QAAA,mCAAmC,GAAqC;IACjF,qBAAqB,CAAC,IAAI;IAC1B,qBAAqB,CAAC,YAAY;CACrC,CAAC"}
1
+ {"version":3,"file":"partner-dispatch-status.enum.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-dispatch-status.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;GAeG;AACH,IAAY,qBA8BX;AA9BD,WAAY,qBAAqB;IAC7B,0EAA0E;IAC1E,8DAAqC,CAAA;IACrC,mFAAmF;IACnF,0CAAiB,CAAA;IACjB,mCAAmC;IACnC,4CAAmB,CAAA;IACnB,uEAAuE;IACvE,sCAAa,CAAA;IACb,qFAAqF;IACrF,sDAA6B,CAAA;IAC7B,kEAAkE;IAClE,gDAAuB,CAAA;IACvB,wEAAwE;IACxE,0CAAiB,CAAA;IACjB,0DAA0D;IAC1D,8CAAqB,CAAA;IACrB,yEAAyE;IACzE,gDAAuB,CAAA;IACvB;;;;;;;OAOG;IACH,gDAAuB,CAAA;IACvB,2DAA2D;IAC3D,4CAAmB,CAAA;AACvB,CAAC,EA9BW,qBAAqB,qCAArB,qBAAqB,QA8BhC;AAED;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAqC;IAChF,qBAAqB,CAAC,SAAS;IAC/B,qBAAqB,CAAC,MAAM;IAC5B,qBAAqB,CAAC,QAAQ;IAC9B,qBAAqB,CAAC,SAAS;IAC/B,qBAAqB,CAAC,SAAS;IAC/B,qBAAqB,CAAC,OAAO;CAChC,CAAC;AAEF,6EAA6E;AAChE,QAAA,mCAAmC,GAAqC;IACjF,qBAAqB,CAAC,IAAI;IAC1B,qBAAqB,CAAC,YAAY;IAClC,qBAAqB,CAAC,SAAS;CAClC,CAAC;AAEF;;;GAGG;AACU,QAAA,kCAAkC,GAAqC;IAChF,qBAAqB,CAAC,IAAI;IAC1B,qBAAqB,CAAC,YAAY;CACrC,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PartnerEngagementState = void 0;
4
+ /**
5
+ * What a partner says is happening with an emergency we handed them, reduced to
6
+ * the only three answers every partner can give.
7
+ *
8
+ * Provider-neutral on purpose. Partners describe progress in their own
9
+ * vocabulary - Rescue.co says CURRENT and CLOSED, another will say OPEN and
10
+ * RESOLVED, a third will have six intermediate states - and the platform must
11
+ * not learn any of them. The adapter maps its partner's word onto one of these,
12
+ * and keeps the original in `partnerStatus` so an operator still sees exactly
13
+ * what the partner said.
14
+ */
15
+ var PartnerEngagementState;
16
+ (function (PartnerEngagementState) {
17
+ /** The partner is working the emergency. */
18
+ PartnerEngagementState["ACTIVE"] = "ACTIVE";
19
+ /** The partner has closed it. Nothing further will happen on their side. */
20
+ PartnerEngagementState["CLOSED"] = "CLOSED";
21
+ /** The partner reported something this adapter does not recognise. */
22
+ PartnerEngagementState["UNKNOWN"] = "UNKNOWN";
23
+ })(PartnerEngagementState || (exports.PartnerEngagementState = PartnerEngagementState = {}));
24
+ //# sourceMappingURL=partner-engagement-state.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner-engagement-state.enum.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-engagement-state.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAC9B,4CAA4C;IAC5C,2CAAiB,CAAA;IACjB,4EAA4E;IAC5E,2CAAiB,CAAA;IACjB,sEAAsE;IACtE,6CAAmB,CAAA;AACvB,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC"}
@@ -22,6 +22,7 @@ __exportStar(require("./enums/partner-integration-environment.enum"), exports);
22
22
  __exportStar(require("./enums/partner-integration-status.enum"), exports);
23
23
  __exportStar(require("./enums/partner-coverage-match-type.enum"), exports);
24
24
  __exportStar(require("./enums/partner-dispatch-status.enum"), exports);
25
+ __exportStar(require("./enums/partner-engagement-state.enum"), exports);
25
26
  __exportStar(require("./enums/partner-dispatch-failure-reason.enum"), exports);
26
27
  __exportStar(require("./enums/partner-location-provider.enum"), exports);
27
28
  __exportStar(require("./enums/partner-adapter-operation.enum"), exports);
@@ -32,6 +33,7 @@ __exportStar(require("./interfaces/partner-provider-descriptor"), exports);
32
33
  __exportStar(require("./interfaces/partner-integration"), exports);
33
34
  __exportStar(require("./interfaces/partner-coverage-rule"), exports);
34
35
  __exportStar(require("./interfaces/partner-dispatch-location"), exports);
36
+ __exportStar(require("./interfaces/partner-dispatch-progress"), exports);
35
37
  __exportStar(require("./interfaces/partner-emergency-contact"), exports);
36
38
  __exportStar(require("./interfaces/partner-dispatch"), exports);
37
39
  __exportStar(require("./interfaces/incident-partner-routing"), exports);
@@ -48,6 +50,7 @@ __exportStar(require("./dtos/create-partner-coverage-rule.dto"), exports);
48
50
  __exportStar(require("./dtos/update-partner-coverage-rule.dto"), exports);
49
51
  __exportStar(require("./dtos/route-incident-to-partners.dto"), exports);
50
52
  __exportStar(require("./dtos/partner-dispatch-decision.dto"), exports);
53
+ __exportStar(require("./dtos/amend-partner-dispatch.dto"), exports);
51
54
  __exportStar(require("./dtos/update-incident-partner-routing.dto"), exports);
52
55
  // Utilities
53
56
  __exportStar(require("./utils/partner-routing.util"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/partner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,qEAAmD;AACnD,0EAAwD;AACxD,oEAAkD;AAClD,+EAA6D;AAC7D,0EAAwD;AACxD,2EAAyD;AACzD,uEAAqD;AACrD,+EAA6D;AAC7D,yEAAuD;AACvD,yEAAuD;AACvD,+EAA6D;AAC7D,sEAAoD;AAEpD,aAAa;AACb,2EAAyD;AACzD,mEAAiD;AACjD,qEAAmD;AACnD,yEAAuD;AACvD,yEAAuD;AACvD,gEAA8C;AAC9C,wEAAsD;AACtD,sEAAoD;AACpD,8EAA4D;AAC5D,uEAAqD;AAErD,YAAY;AACZ,qEAAmD;AACnD,kEAAgD;AAEhD,OAAO;AACP,wEAAsD;AACtD,wEAAsD;AACtD,0EAAwD;AACxD,0EAAwD;AACxD,wEAAsD;AACtD,uEAAqD;AACrD,6EAA2D;AAE3D,YAAY;AACZ,+DAA6C;AAC7C,+DAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/partner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,qEAAmD;AACnD,0EAAwD;AACxD,oEAAkD;AAClD,+EAA6D;AAC7D,0EAAwD;AACxD,2EAAyD;AACzD,uEAAqD;AACrD,wEAAsD;AACtD,+EAA6D;AAC7D,yEAAuD;AACvD,yEAAuD;AACvD,+EAA6D;AAC7D,sEAAoD;AAEpD,aAAa;AACb,2EAAyD;AACzD,mEAAiD;AACjD,qEAAmD;AACnD,yEAAuD;AACvD,yEAAuD;AACvD,yEAAuD;AACvD,gEAA8C;AAC9C,wEAAsD;AACtD,sEAAoD;AACpD,8EAA4D;AAC5D,uEAAqD;AAErD,YAAY;AACZ,qEAAmD;AACnD,kEAAgD;AAEhD,OAAO;AACP,wEAAsD;AACtD,wEAAsD;AACtD,0EAAwD;AACxD,0EAAwD;AACxD,wEAAsD;AACtD,uEAAqD;AACrD,oEAAkD;AAClD,6EAA2D;AAE3D,YAAY;AACZ,+DAA6C;AAC7C,+DAA6C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=partner-dispatch-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner-dispatch-progress.js","sourceRoot":"","sources":["../../../../../src/modules/partner/interfaces/partner-dispatch-progress.ts"],"names":[],"mappings":""}
@@ -127,8 +127,18 @@ function summarizeIncidentRoutingStatus(statuses) {
127
127
  return incident_partner_routing_status_enum_1.IncidentPartnerRoutingStatus.ROUTED;
128
128
  if (delivered > 0)
129
129
  return incident_partner_routing_status_enum_1.IncidentPartnerRoutingStatus.PARTIALLY_ROUTED;
130
+ /**
131
+ * WITHDRAWN counts as declined rather than delivered, even though the
132
+ * partner did receive it.
133
+ *
134
+ * The incident-level status answers one question - "is a partner coming?" -
135
+ * and for a stood-down dispatch the answer is no. The per-dispatch entries
136
+ * carry the fuller truth, which is where anyone asking "was one ever sent?"
137
+ * should look.
138
+ */
130
139
  const declined = statuses.filter((s) => s === partner_dispatch_status_enum_1.PartnerDispatchStatus.REJECTED ||
131
140
  s === partner_dispatch_status_enum_1.PartnerDispatchStatus.CANCELLED ||
141
+ s === partner_dispatch_status_enum_1.PartnerDispatchStatus.WITHDRAWN ||
132
142
  s === partner_dispatch_status_enum_1.PartnerDispatchStatus.EXPIRED).length;
133
143
  if (declined === statuses.length)
134
144
  return incident_partner_routing_status_enum_1.IncidentPartnerRoutingStatus.DECLINED;
@@ -1 +1 @@
1
- {"version":3,"file":"partner-routing.util.js","sourceRoot":"","sources":["../../../../../src/modules/partner/utils/partner-routing.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"partner-routing.util.js","sourceRoot":"","sources":["../../../../../src/modules/partner/utils/partner-routing.util.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,30 @@ export const PARTNER_DISPATCH_DEFAULTS = {
33
33
  /** Longest a partner access token is cached, whatever lifetime the partner advertises. */
34
34
  TOKEN_MAX_CACHE_SECONDS: 24 * 60 * 60,
35
35
  };
36
+ /**
37
+ * How often a partner is asked what has happened to an emergency it already
38
+ * has, for the partners that publish that at all.
39
+ *
40
+ * The cadence starts tight and loosens. The first minutes after a dispatch are
41
+ * when a control room most needs to know whether anyone is coming; six hours
42
+ * later the answer has almost certainly stopped changing, and a partner should
43
+ * not be asked every minute forever on the off-chance.
44
+ */
45
+ export const PARTNER_POLL_DEFAULTS = {
46
+ /** Delay before the first progress check, and the base of the backoff. */
47
+ INITIAL_SECONDS: 60,
48
+ /** Ceiling for the exponential backoff between checks. */
49
+ MAX_SECONDS: 600,
50
+ /**
51
+ * How long to keep asking about a request the partner has never closed.
52
+ *
53
+ * Not a judgement that the emergency is over - only that the partner has
54
+ * stopped saying anything new, and an unanswered question repeated for a day
55
+ * is just load. The dispatch keeps its last known state and an operator can
56
+ * still ask the partner directly.
57
+ */
58
+ GIVE_UP_HOURS: 12,
59
+ };
36
60
  /**
37
61
  * How an incident's reporting channel is described to a partner.
38
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"partner-defaults.const.js","sourceRoot":"","sources":["../../../../../src/modules/partner/constants/partner-defaults.const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,uFAAuF;IACvF,YAAY,EAAE,CAAC;IACf,8EAA8E;IAC9E,kBAAkB,EAAE,EAAE;IACtB,uDAAuD;IACvD,iBAAiB,EAAE,GAAG;IACtB,yEAAyE;IACzE,kBAAkB,EAAE,KAAK;IACzB,wEAAwE;IACxE,eAAe,EAAE,IAAI;IACrB;;;;OAIG;IACH,uBAAuB,EAAE,EAAE;IAC3B,0DAA0D;IAC1D,QAAQ,EAAE,GAAG;IACb;;;OAGG;IACH,yBAAyB,EAAE,EAAE;IAC7B,0FAA0F;IAC1F,uBAAuB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CAC/B,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAA+D;IACzG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,KAAK;IACpD,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACtD,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACxD,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACtD,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACxD,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACvD,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC,OAAO;IAC/D,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,OAAO;IAC5D,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO;CAC3D,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,kBAAkB,EAAE,GAAG;IACvB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,GAAG;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,8EAA8E;IAC9E,mCAAmC,EAAE,CAAC;CAChC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,mCAAmC,CAAC"}
1
+ {"version":3,"file":"partner-defaults.const.js","sourceRoot":"","sources":["../../../../../src/modules/partner/constants/partner-defaults.const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,uFAAuF;IACvF,YAAY,EAAE,CAAC;IACf,8EAA8E;IAC9E,kBAAkB,EAAE,EAAE;IACtB,uDAAuD;IACvD,iBAAiB,EAAE,GAAG;IACtB,yEAAyE;IACzE,kBAAkB,EAAE,KAAK;IACzB,wEAAwE;IACxE,eAAe,EAAE,IAAI;IACrB;;;;OAIG;IACH,uBAAuB,EAAE,EAAE;IAC3B,0DAA0D;IAC1D,QAAQ,EAAE,GAAG;IACb;;;OAGG;IACH,yBAAyB,EAAE,EAAE;IAC7B,0FAA0F;IAC1F,uBAAuB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CAC/B,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,0EAA0E;IAC1E,eAAe,EAAE,EAAE;IACnB,0DAA0D;IAC1D,WAAW,EAAE,GAAG;IAChB;;;;;;;OAOG;IACH,aAAa,EAAE,EAAE;CACX,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAA+D;IACzG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,KAAK;IACpD,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACtD,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACxD,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACtD,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACxD,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC,OAAO;IACvD,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC,OAAO;IAC/D,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,OAAO;IAC5D,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO;CAC3D,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,kBAAkB,EAAE,GAAG;IACvB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,GAAG;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,8EAA8E;IAC9E,mCAAmC,EAAE,CAAC;CAChC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,mCAAmC,CAAC"}
@@ -0,0 +1,90 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ApiPropertyOptional } from '@nestjs/swagger';
11
+ import { Type } from 'class-transformer';
12
+ import { IsDateString, IsLatitude, IsLongitude, IsNumber, IsOptional, IsString, MaxLength, ValidateNested, } from 'class-validator';
13
+ /** A corrected location for an emergency a partner is already working. */
14
+ export class AmendPartnerDispatchLocationDto {
15
+ }
16
+ __decorate([
17
+ ApiPropertyOptional({ example: -1.2921 }),
18
+ Type(() => Number),
19
+ IsNumber(),
20
+ IsLatitude(),
21
+ __metadata("design:type", Number)
22
+ ], AmendPartnerDispatchLocationDto.prototype, "latitude", void 0);
23
+ __decorate([
24
+ ApiPropertyOptional({ example: 36.8219 }),
25
+ Type(() => Number),
26
+ IsNumber(),
27
+ IsLongitude(),
28
+ __metadata("design:type", Number)
29
+ ], AmendPartnerDispatchLocationDto.prototype, "longitude", void 0);
30
+ __decorate([
31
+ ApiPropertyOptional({ description: 'When the corrected fix was taken. Defaults to now.' }),
32
+ IsDateString(),
33
+ IsOptional(),
34
+ __metadata("design:type", String)
35
+ ], AmendPartnerDispatchLocationDto.prototype, "measuredAt", void 0);
36
+ /**
37
+ * Correct the details of an emergency a partner already has.
38
+ *
39
+ * The case this exists for is the ordinary one: a caller rings back with a
40
+ * better address while a responder is already moving. Sending the correction
41
+ * beats hoping the crew works it out.
42
+ *
43
+ * Only the fields a partner will actually accept mid-flight are here - who the
44
+ * emergency is FOR never changes, so the reporter and their phone number are
45
+ * deliberately absent. Every field is optional; sending none is a no-op rather
46
+ * than an error.
47
+ *
48
+ * Only meaningful for a partner whose descriptor sets `supportsAmendment`. For
49
+ * anyone else clarion-partner-services refuses plainly rather than pretending.
50
+ */
51
+ export class AmendPartnerDispatchDto {
52
+ }
53
+ __decorate([
54
+ ApiPropertyOptional({
55
+ description: 'Corrected street address.',
56
+ example: 'Ngong Road, service lane behind Prestige Plaza',
57
+ }),
58
+ IsString(),
59
+ MaxLength(500),
60
+ IsOptional(),
61
+ __metadata("design:type", String)
62
+ ], AmendPartnerDispatchDto.prototype, "address", void 0);
63
+ __decorate([
64
+ ApiPropertyOptional({
65
+ description: 'Corrected description of what is wrong.',
66
+ example: 'Two casualties, one trapped',
67
+ }),
68
+ IsString(),
69
+ MaxLength(1000),
70
+ IsOptional(),
71
+ __metadata("design:type", String)
72
+ ], AmendPartnerDispatchDto.prototype, "issue", void 0);
73
+ __decorate([
74
+ ApiPropertyOptional({ type: AmendPartnerDispatchLocationDto }),
75
+ ValidateNested(),
76
+ Type(() => AmendPartnerDispatchLocationDto),
77
+ IsOptional(),
78
+ __metadata("design:type", AmendPartnerDispatchLocationDto)
79
+ ], AmendPartnerDispatchDto.prototype, "location", void 0);
80
+ __decorate([
81
+ ApiPropertyOptional({
82
+ description: 'Why the details were corrected. Recorded in the audit trail.',
83
+ example: 'Caller rang back with the service entrance',
84
+ }),
85
+ IsString(),
86
+ MaxLength(500),
87
+ IsOptional(),
88
+ __metadata("design:type", String)
89
+ ], AmendPartnerDispatchDto.prototype, "reason", void 0);
90
+ //# sourceMappingURL=amend-partner-dispatch.dto.js.map