Архитектура: централизовать selected-item carryover в continuity policy и transition glue
This commit is contained in:
@@ -16,6 +16,7 @@ exports.applyTemporalCarryoverFilters = applyTemporalCarryoverFilters;
|
||||
exports.applyOrganizationCarryoverFilters = applyOrganizationCarryoverFilters;
|
||||
exports.applyHistoricalPartyCarryoverFilters = applyHistoricalPartyCarryoverFilters;
|
||||
exports.applyReferencedEntityCarryover = applyReferencedEntityCarryover;
|
||||
exports.applySelectedItemCarryover = applySelectedItemCarryover;
|
||||
exports.buildInventoryRootFrameFromAddressDebug = buildInventoryRootFrameFromAddressDebug;
|
||||
exports.isGroundedAddressDebug = isGroundedAddressDebug;
|
||||
exports.resolveAssistantContinuitySnapshot = resolveAssistantContinuitySnapshot;
|
||||
@@ -352,6 +353,33 @@ function applyReferencedEntityCarryover(previousFilters, previousAnchorType, pre
|
||||
resolvedCounterpartyFromDisplay
|
||||
};
|
||||
}
|
||||
function applySelectedItemCarryover(previousFilters, previousAnchorType, previousAnchorValue, rootScopedPivot, shouldApplySelectedItemCarryover, navigationFocusItemLabel, continuityActiveItem, selectedObjectLabelFromUser, selectedObjectLabelFromAlternate, toNonEmptyString = fallbackToNonEmptyString) {
|
||||
const nextFilters = previousFilters && typeof previousFilters === "object" ? { ...previousFilters } : {};
|
||||
if (rootScopedPivot || !shouldApplySelectedItemCarryover || toNonEmptyString(nextFilters.item)) {
|
||||
return {
|
||||
previousFilters: nextFilters,
|
||||
previousAnchorType,
|
||||
previousAnchorValue
|
||||
};
|
||||
}
|
||||
const selectedObjectLabel = toNonEmptyString(navigationFocusItemLabel) ??
|
||||
toNonEmptyString(continuityActiveItem) ??
|
||||
toNonEmptyString(selectedObjectLabelFromUser) ??
|
||||
toNonEmptyString(selectedObjectLabelFromAlternate);
|
||||
if (!selectedObjectLabel) {
|
||||
return {
|
||||
previousFilters: nextFilters,
|
||||
previousAnchorType,
|
||||
previousAnchorValue
|
||||
};
|
||||
}
|
||||
nextFilters.item = selectedObjectLabel;
|
||||
return {
|
||||
previousFilters: nextFilters,
|
||||
previousAnchorType: "item",
|
||||
previousAnchorValue: selectedObjectLabel
|
||||
};
|
||||
}
|
||||
function buildInventoryRootFrameFromAddressDebug(debug, toNonEmptyString = fallbackToNonEmptyString) {
|
||||
if (!debug || typeof debug !== "object") {
|
||||
return null;
|
||||
|
||||
@@ -667,27 +667,19 @@ function createAssistantTransitionPolicy(deps) {
|
||||
followupSelectionMode,
|
||||
resolvedCounterpartyFromDisplay
|
||||
} = (0, assistantContinuityPolicy_1.applyReferencedEntityCarryover)(previousFilters, previousAnchorType, previousAnchor, followupSelectionMode, resolvedEntityFromFollowup, rootScopedPivot, deps.toNonEmptyString));
|
||||
if (!rootScopedPivot &&
|
||||
!deps.toNonEmptyString(previousFilters.item) &&
|
||||
(sourceIntentHint === "inventory_on_hand_as_of_date" ||
|
||||
sourceIntentHint === "inventory_purchase_provenance_for_item" ||
|
||||
sourceIntentHint === "inventory_purchase_documents_for_item" ||
|
||||
sourceIntentHint === "inventory_sale_trace_for_item" ||
|
||||
sourceIntentHint === "inventory_profitability_for_item" ||
|
||||
sourceIntentHint === "inventory_purchase_to_sale_chain" ||
|
||||
sourceIntentHint === "inventory_aging_by_purchase_date" ||
|
||||
hasSelectedObjectInventorySignalPrimary ||
|
||||
hasSelectedObjectInventorySignalAlternate)) {
|
||||
const selectedObjectLabel = (navigationFocusObjectType === "item" ? navigationFocusObjectLabel : null) ??
|
||||
continuitySnapshot.activeItem ??
|
||||
extractSelectedObjectLabel(userMessage) ??
|
||||
(deps.toNonEmptyString(alternateMessage) ? extractSelectedObjectLabel(String(alternateMessage ?? "")) : null);
|
||||
if (selectedObjectLabel) {
|
||||
previousFilters.item = selectedObjectLabel;
|
||||
previousAnchorType = "item";
|
||||
previousAnchor = selectedObjectLabel;
|
||||
}
|
||||
}
|
||||
({
|
||||
previousFilters,
|
||||
previousAnchorType,
|
||||
previousAnchorValue: previousAnchor
|
||||
} = (0, assistantContinuityPolicy_1.applySelectedItemCarryover)(previousFilters, previousAnchorType, previousAnchor, rootScopedPivot, sourceIntentHint === "inventory_on_hand_as_of_date" ||
|
||||
sourceIntentHint === "inventory_purchase_provenance_for_item" ||
|
||||
sourceIntentHint === "inventory_purchase_documents_for_item" ||
|
||||
sourceIntentHint === "inventory_sale_trace_for_item" ||
|
||||
sourceIntentHint === "inventory_profitability_for_item" ||
|
||||
sourceIntentHint === "inventory_purchase_to_sale_chain" ||
|
||||
sourceIntentHint === "inventory_aging_by_purchase_date" ||
|
||||
hasSelectedObjectInventorySignalPrimary ||
|
||||
hasSelectedObjectInventorySignalAlternate, navigationFocusObjectType === "item" ? navigationFocusObjectLabel : null, continuitySnapshot.activeItem, extractSelectedObjectLabel(userMessage), deps.toNonEmptyString(alternateMessage) ? extractSelectedObjectLabel(String(alternateMessage ?? "")) : null, deps.toNonEmptyString));
|
||||
if (explicitOrganizationClarificationSelection && !previousAnchor) {
|
||||
previousAnchorType = "organization";
|
||||
previousAnchor = explicitOrganizationClarificationSelection;
|
||||
|
||||
Reference in New Issue
Block a user