@voyantjs/availability 0.70.0 → 0.71.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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/service-allocation-automation.d.ts +13 -1
- package/dist/service-allocation-automation.d.ts.map +1 -1
- package/dist/service-allocation-automation.js +113 -0
- package/dist/validation.d.ts +32 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +23 -0
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,6 @@ export { allocationAuditLog, allocationResources, availabilityCloseouts, availab
|
|
|
11
11
|
export { getSlotResourceAvailability, getSlotsResourceAvailability, type PlannedAllocation, type ResourceCapacityViolation, type SlotResourceAvailability, validateSlotAllocationCapacity, } from "./service-allocation.js";
|
|
12
12
|
export { type MaterializeSlotResourcesFromTemplatesOptions, materializeSlotResourcesFromTemplateDefaults, } from "./service-allocation-automation.js";
|
|
13
13
|
export { allocationExportFilename, buildAllocationPassengersCsv, buildAllocationRoomingCsv, } from "./service-allocation-exports.js";
|
|
14
|
-
export { allocationAuditLogQuerySchema, allocationAutomationSchema, assignTravelerAllocationSchema, availabilityCloseoutListQuerySchema, availabilityOverviewQuerySchema, availabilityPickupPointListQuerySchema, availabilityRuleListQuerySchema, availabilitySlotListQuerySchema, availabilitySlotPickupListQuerySchema, availabilityStartTimeListQuerySchema, customPickupAreaListQuerySchema, insertAllocationResourceSchema, insertAvailabilityCloseoutSchema, insertAvailabilityPickupPointSchema, insertAvailabilityRuleSchema, insertAvailabilitySlotPickupSchema, insertAvailabilitySlotSchema, insertAvailabilityStartTimeSchema, insertCustomPickupAreaSchema, insertLocationPickupTimeSchema, insertPickupGroupSchema, insertPickupLocationSchema, insertProductMeetingConfigSchema, locationPickupTimeListQuerySchema, pairSharingGroupSchema, pickupGroupListQuerySchema, pickupLocationListQuerySchema, productMeetingConfigListQuerySchema, updateAllocationResourceSchema, updateAvailabilityCloseoutSchema, updateAvailabilityPickupPointSchema, updateAvailabilityRuleSchema, updateAvailabilitySlotPickupSchema, updateAvailabilitySlotSchema, updateAvailabilityStartTimeSchema, updateCustomPickupAreaSchema, updateLocationPickupTimeSchema, updatePickupGroupSchema, updatePickupLocationSchema, updateProductMeetingConfigSchema, updateSharingGroupLabelSchema, updateTravelerSharingGroupSchema, upsertResourceTemplateSchema, } from "./validation.js";
|
|
14
|
+
export { allocationAuditLogQuerySchema, allocationAutomationSchema, assignTravelerAllocationSchema, availabilityCloseoutListQuerySchema, availabilityOverviewQuerySchema, availabilityPickupPointListQuerySchema, availabilityRuleListQuerySchema, availabilitySlotListQuerySchema, availabilitySlotPickupListQuerySchema, availabilityStartTimeListQuerySchema, customPickupAreaListQuerySchema, insertAllocationResourceSchema, insertAvailabilityCloseoutSchema, insertAvailabilityPickupPointSchema, insertAvailabilityRuleSchema, insertAvailabilitySlotPickupSchema, insertAvailabilitySlotSchema, insertAvailabilityStartTimeSchema, insertCustomPickupAreaSchema, insertLocationPickupTimeSchema, insertPickupGroupSchema, insertPickupLocationSchema, insertProductMeetingConfigSchema, locationPickupTimeListQuerySchema, pairSharingGroupSchema, pickupGroupListQuerySchema, pickupLocationListQuerySchema, productMeetingConfigListQuerySchema, type SeatLayoutCell, type SeatLayoutSpec, seatLayoutCellSchema, seatLayoutSpecSchema, updateAllocationResourceSchema, updateAvailabilityCloseoutSchema, updateAvailabilityPickupPointSchema, updateAvailabilityRuleSchema, updateAvailabilitySlotPickupSchema, updateAvailabilitySlotSchema, updateAvailabilityStartTimeSchema, updateCustomPickupAreaSchema, updateLocationPickupTimeSchema, updatePickupGroupSchema, updatePickupLocationSchema, updateProductMeetingConfigSchema, updateSharingGroupLabelSchema, updateTravelerSharingGroupSchema, upsertResourceTemplateSchema, } from "./validation.js";
|
|
15
15
|
export { availabilityService };
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAE9E,eAAO,MAAM,kBAAkB,EAAE,MAGhC,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,UAIpC,CAAA;AAED,OAAO,EACL,+BAA+B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,KAAK,4CAA4C,EACjD,4CAA4C,GAC7C,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,8BAA8B,EAC9B,mCAAmC,EACnC,+BAA+B,EAC/B,sCAAsC,EACtC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,oCAAoC,EACpC,+BAA+B,EAC/B,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,4BAA4B,EAC5B,kCAAkC,EAClC,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,EACjC,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,4BAA4B,EAC5B,kCAAkC,EAClC,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,gCAAgC,EAChC,6BAA6B,EAC7B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAE9E,eAAO,MAAM,kBAAkB,EAAE,MAGhC,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,UAIpC,CAAA;AAED,OAAO,EACL,+BAA+B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,KAAK,4CAA4C,EACjD,4CAA4C,GAC7C,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,8BAA8B,EAC9B,mCAAmC,EACnC,+BAA+B,EAC/B,sCAAsC,EACtC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,oCAAoC,EACpC,+BAA+B,EAC/B,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,4BAA4B,EAC5B,kCAAkC,EAClC,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,EACjC,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,mCAAmC,EACnC,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,4BAA4B,EAC5B,kCAAkC,EAClC,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,gCAAgC,EAChC,6BAA6B,EAC7B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -15,5 +15,5 @@ export { allocationAuditLog, allocationResources, availabilityCloseouts, availab
|
|
|
15
15
|
export { getSlotResourceAvailability, getSlotsResourceAvailability, validateSlotAllocationCapacity, } from "./service-allocation.js";
|
|
16
16
|
export { materializeSlotResourcesFromTemplateDefaults, } from "./service-allocation-automation.js";
|
|
17
17
|
export { allocationExportFilename, buildAllocationPassengersCsv, buildAllocationRoomingCsv, } from "./service-allocation-exports.js";
|
|
18
|
-
export { allocationAuditLogQuerySchema, allocationAutomationSchema, assignTravelerAllocationSchema, availabilityCloseoutListQuerySchema, availabilityOverviewQuerySchema, availabilityPickupPointListQuerySchema, availabilityRuleListQuerySchema, availabilitySlotListQuerySchema, availabilitySlotPickupListQuerySchema, availabilityStartTimeListQuerySchema, customPickupAreaListQuerySchema, insertAllocationResourceSchema, insertAvailabilityCloseoutSchema, insertAvailabilityPickupPointSchema, insertAvailabilityRuleSchema, insertAvailabilitySlotPickupSchema, insertAvailabilitySlotSchema, insertAvailabilityStartTimeSchema, insertCustomPickupAreaSchema, insertLocationPickupTimeSchema, insertPickupGroupSchema, insertPickupLocationSchema, insertProductMeetingConfigSchema, locationPickupTimeListQuerySchema, pairSharingGroupSchema, pickupGroupListQuerySchema, pickupLocationListQuerySchema, productMeetingConfigListQuerySchema, updateAllocationResourceSchema, updateAvailabilityCloseoutSchema, updateAvailabilityPickupPointSchema, updateAvailabilityRuleSchema, updateAvailabilitySlotPickupSchema, updateAvailabilitySlotSchema, updateAvailabilityStartTimeSchema, updateCustomPickupAreaSchema, updateLocationPickupTimeSchema, updatePickupGroupSchema, updatePickupLocationSchema, updateProductMeetingConfigSchema, updateSharingGroupLabelSchema, updateTravelerSharingGroupSchema, upsertResourceTemplateSchema, } from "./validation.js";
|
|
18
|
+
export { allocationAuditLogQuerySchema, allocationAutomationSchema, assignTravelerAllocationSchema, availabilityCloseoutListQuerySchema, availabilityOverviewQuerySchema, availabilityPickupPointListQuerySchema, availabilityRuleListQuerySchema, availabilitySlotListQuerySchema, availabilitySlotPickupListQuerySchema, availabilityStartTimeListQuerySchema, customPickupAreaListQuerySchema, insertAllocationResourceSchema, insertAvailabilityCloseoutSchema, insertAvailabilityPickupPointSchema, insertAvailabilityRuleSchema, insertAvailabilitySlotPickupSchema, insertAvailabilitySlotSchema, insertAvailabilityStartTimeSchema, insertCustomPickupAreaSchema, insertLocationPickupTimeSchema, insertPickupGroupSchema, insertPickupLocationSchema, insertProductMeetingConfigSchema, locationPickupTimeListQuerySchema, pairSharingGroupSchema, pickupGroupListQuerySchema, pickupLocationListQuerySchema, productMeetingConfigListQuerySchema, seatLayoutCellSchema, seatLayoutSpecSchema, updateAllocationResourceSchema, updateAvailabilityCloseoutSchema, updateAvailabilityPickupPointSchema, updateAvailabilityRuleSchema, updateAvailabilitySlotPickupSchema, updateAvailabilitySlotSchema, updateAvailabilityStartTimeSchema, updateCustomPickupAreaSchema, updateLocationPickupTimeSchema, updatePickupGroupSchema, updatePickupLocationSchema, updateProductMeetingConfigSchema, updateSharingGroupLabelSchema, updateTravelerSharingGroupSchema, upsertResourceTemplateSchema, } from "./validation.js";
|
|
19
19
|
export { availabilityService };
|
|
@@ -2,7 +2,7 @@ import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
|
2
2
|
import type { z } from "zod";
|
|
3
3
|
import { type AllocationResource } from "./schema.js";
|
|
4
4
|
import { type AllocationMutationOptions } from "./service-allocation.js";
|
|
5
|
-
import type
|
|
5
|
+
import { type allocationAutomationSchema, type SeatLayoutCell, type SeatLayoutSpec, type upsertResourceTemplateSchema } from "./validation.js";
|
|
6
6
|
export type UpsertResourceTemplateInput = z.infer<typeof upsertResourceTemplateSchema>;
|
|
7
7
|
export type AllocationAutomationInput = z.infer<typeof allocationAutomationSchema>;
|
|
8
8
|
export interface ResourceTemplate {
|
|
@@ -74,4 +74,16 @@ export declare function materializeSlotResourcesFromTemplateDefaults(db: Postgre
|
|
|
74
74
|
created: number;
|
|
75
75
|
resources: AllocationResource[];
|
|
76
76
|
}>;
|
|
77
|
+
export declare function parseLayoutSpecFromFlags(flags: Record<string, unknown> | null): SeatLayoutSpec | null;
|
|
78
|
+
/**
|
|
79
|
+
* Derive window/aisle/middle from a seat's neighbours in the same row.
|
|
80
|
+
*
|
|
81
|
+
* - Touching an aisle or door cell → "aisle" (the seat is on the aisle side)
|
|
82
|
+
* - Touching the row boundary or a void cell → "window"
|
|
83
|
+
* - Surrounded by other seats → "middle"
|
|
84
|
+
*
|
|
85
|
+
* Aisle takes precedence so the "window" tag is reserved for actual outer
|
|
86
|
+
* seats; a 2-1 row's lone middle seat ends up "aisle" on both sides.
|
|
87
|
+
*/
|
|
88
|
+
export declare function positionFromCells(cells: ReadonlyArray<SeatLayoutCell>, index: number): "window" | "aisle" | "middle";
|
|
77
89
|
//# sourceMappingURL=service-allocation-automation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-allocation-automation.d.ts","sourceRoot":"","sources":["../src/service-allocation-automation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQ5B,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,yBAAyB,EAK/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"service-allocation-automation.d.ts","sourceRoot":"","sources":["../src/service-allocation-automation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQ5B,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,yBAAyB,EAK/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,4BAA4B,EAClC,MAAM,iBAAiB,CAAA;AAexB,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AACtF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAMlF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,gBAAgB,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAA;CACjC;AAED,wBAAsB,kCAAkC,CACtD,EAAE,EAAE,kBAAkB,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAyC3C;AAED,wBAAsB,mCAAmC,CACvD,EAAE,EAAE,kBAAkB,EACtB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,gBAAgB,CAAC,CA8C3B;AAED,wBAAsB,mCAAmC,CACvD,EAAE,EAAE,kBAAkB,EACtB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM;;;UAeb;AAqBD,wBAAsB,kCAAkC,CACtD,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,yBAAyB,EAChC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,0BAA0B,CAAC,CAqHrC;AAED,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,yBAAyB,EAChC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,0BAA0B,CAAC,CAkDrC;AAED,MAAM,WAAW,4CAA4C;IAC3D;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,4CAA4C,CAChE,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,4CAAiD,GACtD,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAAC,CA6D/D;AA0KD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACpC,cAAc,GAAG,IAAI,CAKvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,EACpC,KAAK,EAAE,MAAM,GACZ,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAQ/B"}
|
|
@@ -2,6 +2,7 @@ import { and, eq, sql } from "drizzle-orm";
|
|
|
2
2
|
import { planRoomAllocation, planVehicleSeatAllocation, } from "./auto-allocator.js";
|
|
3
3
|
import { allocationResources, availabilitySlots, productOptionResourceTemplates, } from "./schema.js";
|
|
4
4
|
import { AllocationServiceError, getSlotAllocationManifest, recordAllocationAudit, } from "./service-allocation.js";
|
|
5
|
+
import { seatLayoutSpecSchema, } from "./validation.js";
|
|
5
6
|
/**
|
|
6
7
|
* Emit `ARRAY[$1, $2, …]::text[]` so Postgres doesn't try to cast a
|
|
7
8
|
* tuple to `text[]`. See `sqlTextArray` in service-allocation.ts and
|
|
@@ -334,6 +335,10 @@ export async function materializeSlotResourcesFromTemplateDefaults(db, slotId, o
|
|
|
334
335
|
return { created: resources.length, resources };
|
|
335
336
|
}
|
|
336
337
|
async function materializeVehicleSeatGroup(db, slotId, group, startingSequence) {
|
|
338
|
+
const layoutSpec = parseLayoutSpecFromFlags(group.flags);
|
|
339
|
+
if (layoutSpec) {
|
|
340
|
+
return materializeVehicleSeatGroupFromSpec(db, slotId, group, startingSequence, layoutSpec);
|
|
341
|
+
}
|
|
337
342
|
const layout = group.layout ?? "2-2";
|
|
338
343
|
const seatsPerRow = parseLayoutSeatsPerRow(layout);
|
|
339
344
|
const vehiclesNeeded = Math.max(1, Math.ceil(group.pax_count / Math.max(1, group.capacity)));
|
|
@@ -402,6 +407,114 @@ async function materializeVehicleSeatGroup(db, slotId, group, startingSequence)
|
|
|
402
407
|
}
|
|
403
408
|
return { resources, vehicleCount: vehiclesNeeded };
|
|
404
409
|
}
|
|
410
|
+
/**
|
|
411
|
+
* Materialize using an explicit 2D layoutSpec. Each row's seat cells become
|
|
412
|
+
* a vehicle_seat (skipping aisle/door/void). Window/aisle/middle is computed
|
|
413
|
+
* from neighbouring cells, so a coach door in the middle row collapses to a
|
|
414
|
+
* gap on the visual map (renderer side) without affecting seat numbering.
|
|
415
|
+
*/
|
|
416
|
+
async function materializeVehicleSeatGroupFromSpec(db, slotId, group, startingSequence, layoutSpec) {
|
|
417
|
+
const seatsPerVehicle = layoutSpec.rows.reduce((sum, row) => sum + row.cells.filter((cell) => cell === "seat").length, 0);
|
|
418
|
+
if (seatsPerVehicle === 0)
|
|
419
|
+
return { resources: [], vehicleCount: 0 };
|
|
420
|
+
const vehiclesNeeded = Math.max(1, Math.ceil(group.pax_count / seatsPerVehicle));
|
|
421
|
+
const resources = [];
|
|
422
|
+
let sequence = startingSequence;
|
|
423
|
+
for (let vehicleIndex = 0; vehicleIndex < vehiclesNeeded; vehicleIndex++) {
|
|
424
|
+
sequence += 1;
|
|
425
|
+
const [parent] = await db
|
|
426
|
+
.insert(allocationResources)
|
|
427
|
+
.values({
|
|
428
|
+
slotId,
|
|
429
|
+
kind: "vehicle",
|
|
430
|
+
refType: group.ref_type,
|
|
431
|
+
refId: group.ref_id,
|
|
432
|
+
label: renderNamePattern(group.name_pattern || "Vehicle {sequence}", {
|
|
433
|
+
sequence: String(sequence),
|
|
434
|
+
option: group.option_name ?? "",
|
|
435
|
+
index: String(vehicleIndex + 1),
|
|
436
|
+
}),
|
|
437
|
+
capacity: seatsPerVehicle,
|
|
438
|
+
flags: {
|
|
439
|
+
...(group.flags ?? {}),
|
|
440
|
+
layoutSpec,
|
|
441
|
+
templateOptionId: group.option_id,
|
|
442
|
+
},
|
|
443
|
+
sortOrder: sequence,
|
|
444
|
+
})
|
|
445
|
+
.returning();
|
|
446
|
+
if (!parent)
|
|
447
|
+
continue;
|
|
448
|
+
resources.push(parent);
|
|
449
|
+
let seatIndex = 0;
|
|
450
|
+
for (let rowIndex = 0; rowIndex < layoutSpec.rows.length; rowIndex++) {
|
|
451
|
+
const rowCells = layoutSpec.rows[rowIndex]?.cells ?? [];
|
|
452
|
+
const rowNumber = rowIndex + 1;
|
|
453
|
+
let column = 0;
|
|
454
|
+
for (let cellIndex = 0; cellIndex < rowCells.length; cellIndex++) {
|
|
455
|
+
const cell = rowCells[cellIndex];
|
|
456
|
+
if (cell !== "seat")
|
|
457
|
+
continue;
|
|
458
|
+
column += 1;
|
|
459
|
+
const columnName = columnLetter(column);
|
|
460
|
+
const position = positionFromCells(rowCells, cellIndex);
|
|
461
|
+
const [seat] = await db
|
|
462
|
+
.insert(allocationResources)
|
|
463
|
+
.values({
|
|
464
|
+
slotId,
|
|
465
|
+
kind: "vehicle_seat",
|
|
466
|
+
refType: group.ref_type,
|
|
467
|
+
refId: group.ref_id,
|
|
468
|
+
label: renderNamePattern("Seat {row}{column}", {
|
|
469
|
+
sequence: String(seatIndex + 1),
|
|
470
|
+
row: String(rowNumber),
|
|
471
|
+
column: columnName,
|
|
472
|
+
seat: `${rowNumber}${columnName}`,
|
|
473
|
+
}),
|
|
474
|
+
capacity: 1,
|
|
475
|
+
flags: { row: rowNumber, column: columnName, position },
|
|
476
|
+
parentId: parent.id,
|
|
477
|
+
sortOrder: seatIndex,
|
|
478
|
+
})
|
|
479
|
+
.returning();
|
|
480
|
+
if (seat)
|
|
481
|
+
resources.push(seat);
|
|
482
|
+
seatIndex += 1;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return { resources, vehicleCount: vehiclesNeeded };
|
|
487
|
+
}
|
|
488
|
+
export function parseLayoutSpecFromFlags(flags) {
|
|
489
|
+
const raw = flags?.layoutSpec;
|
|
490
|
+
if (!raw)
|
|
491
|
+
return null;
|
|
492
|
+
const parsed = seatLayoutSpecSchema.safeParse(raw);
|
|
493
|
+
return parsed.success ? parsed.data : null;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Derive window/aisle/middle from a seat's neighbours in the same row.
|
|
497
|
+
*
|
|
498
|
+
* - Touching an aisle or door cell → "aisle" (the seat is on the aisle side)
|
|
499
|
+
* - Touching the row boundary or a void cell → "window"
|
|
500
|
+
* - Surrounded by other seats → "middle"
|
|
501
|
+
*
|
|
502
|
+
* Aisle takes precedence so the "window" tag is reserved for actual outer
|
|
503
|
+
* seats; a 2-1 row's lone middle seat ends up "aisle" on both sides.
|
|
504
|
+
*/
|
|
505
|
+
export function positionFromCells(cells, index) {
|
|
506
|
+
const prev = index > 0 ? cells[index - 1] : undefined;
|
|
507
|
+
const next = index < cells.length - 1 ? cells[index + 1] : undefined;
|
|
508
|
+
if (prev === "aisle" || prev === "door")
|
|
509
|
+
return "aisle";
|
|
510
|
+
if (next === "aisle" || next === "door")
|
|
511
|
+
return "aisle";
|
|
512
|
+
if (prev === undefined || prev === "void")
|
|
513
|
+
return "window";
|
|
514
|
+
if (next === undefined || next === "void")
|
|
515
|
+
return "window";
|
|
516
|
+
return "middle";
|
|
517
|
+
}
|
|
405
518
|
function toResourceTemplate(row) {
|
|
406
519
|
return {
|
|
407
520
|
id: row.id,
|
package/dist/validation.d.ts
CHANGED
|
@@ -22,6 +22,38 @@ export declare const pickupTimingModeSchema: z.ZodEnum<{
|
|
|
22
22
|
export declare const allocationResourceKindSchema: z.ZodString;
|
|
23
23
|
export declare const allocationResourceFlagsSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
24
24
|
export declare const travelerAllocationMapSchema: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
25
|
+
/**
|
|
26
|
+
* Explicit 2D seat layout for vehicle_seat templates. Each row is a list of
|
|
27
|
+
* cells the materializer walks:
|
|
28
|
+
*
|
|
29
|
+
* - `seat` → creates one vehicle_seat resource
|
|
30
|
+
* - `aisle` → renders as a horizontal gap between seat blocks
|
|
31
|
+
* - `door` → renders as a wider gap (mid-coach door is common)
|
|
32
|
+
* - `void` → empty cell (wheelchair spot, toilet, kitchen, wheel well)
|
|
33
|
+
*
|
|
34
|
+
* Stored on the template's `flags.layoutSpec`. When present, the materializer
|
|
35
|
+
* ignores the legacy `layout` string + `capacity` (capacity is derived from
|
|
36
|
+
* the number of "seat" cells). The renderer in @voyantjs/allocation-ui mirrors
|
|
37
|
+
* the same grid so the visual seat map matches what the operator drew.
|
|
38
|
+
*/
|
|
39
|
+
export declare const seatLayoutCellSchema: z.ZodEnum<{
|
|
40
|
+
aisle: "aisle";
|
|
41
|
+
void: "void";
|
|
42
|
+
seat: "seat";
|
|
43
|
+
door: "door";
|
|
44
|
+
}>;
|
|
45
|
+
export type SeatLayoutCell = z.infer<typeof seatLayoutCellSchema>;
|
|
46
|
+
export declare const seatLayoutSpecSchema: z.ZodObject<{
|
|
47
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
48
|
+
cells: z.ZodArray<z.ZodEnum<{
|
|
49
|
+
aisle: "aisle";
|
|
50
|
+
void: "void";
|
|
51
|
+
seat: "seat";
|
|
52
|
+
door: "door";
|
|
53
|
+
}>>;
|
|
54
|
+
}, z.core.$strip>>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
export type SeatLayoutSpec = z.infer<typeof seatLayoutSpecSchema>;
|
|
25
57
|
export declare const availabilityRuleCoreSchema: z.ZodObject<{
|
|
26
58
|
productId: z.ZodString;
|
|
27
59
|
optionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,4BAA4B;;;;;EAAsD,CAAA;AAC/F,eAAO,MAAM,iBAAiB;;;;EAA4D,CAAA;AAC1F,eAAO,MAAM,qBAAqB;;;;EAA2C,CAAA;AAC7E,eAAO,MAAM,sBAAsB;;;EAA8C,CAAA;AACjF,eAAO,MAAM,4BAA4B,aAAmC,CAAA;AAC5E,eAAO,MAAM,6BAA6B,wCAAoC,CAAA;AAC9E,eAAO,MAAM,2BAA2B,uCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.js
CHANGED
|
@@ -11,6 +11,29 @@ export const pickupTimingModeSchema = z.enum(["fixed_time", "offset_from_start"]
|
|
|
11
11
|
export const allocationResourceKindSchema = z.string().trim().min(1).max(80);
|
|
12
12
|
export const allocationResourceFlagsSchema = z.record(z.string(), z.unknown());
|
|
13
13
|
export const travelerAllocationMapSchema = z.record(z.string(), z.string());
|
|
14
|
+
/**
|
|
15
|
+
* Explicit 2D seat layout for vehicle_seat templates. Each row is a list of
|
|
16
|
+
* cells the materializer walks:
|
|
17
|
+
*
|
|
18
|
+
* - `seat` → creates one vehicle_seat resource
|
|
19
|
+
* - `aisle` → renders as a horizontal gap between seat blocks
|
|
20
|
+
* - `door` → renders as a wider gap (mid-coach door is common)
|
|
21
|
+
* - `void` → empty cell (wheelchair spot, toilet, kitchen, wheel well)
|
|
22
|
+
*
|
|
23
|
+
* Stored on the template's `flags.layoutSpec`. When present, the materializer
|
|
24
|
+
* ignores the legacy `layout` string + `capacity` (capacity is derived from
|
|
25
|
+
* the number of "seat" cells). The renderer in @voyantjs/allocation-ui mirrors
|
|
26
|
+
* the same grid so the visual seat map matches what the operator drew.
|
|
27
|
+
*/
|
|
28
|
+
export const seatLayoutCellSchema = z.enum(["seat", "aisle", "door", "void"]);
|
|
29
|
+
export const seatLayoutSpecSchema = z.object({
|
|
30
|
+
rows: z
|
|
31
|
+
.array(z.object({
|
|
32
|
+
cells: z.array(seatLayoutCellSchema).min(1).max(20),
|
|
33
|
+
}))
|
|
34
|
+
.min(1)
|
|
35
|
+
.max(40),
|
|
36
|
+
});
|
|
14
37
|
const isoDateSchema = z.string().date();
|
|
15
38
|
const isoDateTimeSchema = z.string().datetime();
|
|
16
39
|
export const availabilityRuleCoreSchema = z.object({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/availability",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.71.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -44,13 +44,13 @@
|
|
|
44
44
|
"drizzle-orm": "^0.45.2",
|
|
45
45
|
"hono": "^4.12.10",
|
|
46
46
|
"zod": "^4.3.6",
|
|
47
|
-
"@voyantjs/core": "0.
|
|
48
|
-
"@voyantjs/db": "0.
|
|
49
|
-
"@voyantjs/hono": "0.
|
|
47
|
+
"@voyantjs/core": "0.71.0",
|
|
48
|
+
"@voyantjs/db": "0.71.0",
|
|
49
|
+
"@voyantjs/hono": "0.71.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"typescript": "^6.0.2",
|
|
53
|
-
"@voyantjs/products": "0.
|
|
53
|
+
"@voyantjs/products": "0.71.0",
|
|
54
54
|
"@voyantjs/voyant-typescript-config": "0.1.0"
|
|
55
55
|
},
|
|
56
56
|
"files": [
|