ЮИ - редактура вопросов в АВТОПРОГОНАХ
This commit is contained in:
@@ -43,6 +43,29 @@ export function createAssistantTransitionPolicy(deps) {
|
||||
);
|
||||
}
|
||||
|
||||
function hasExplicitInventorySameDatePivotSignal(userMessage) {
|
||||
const normalized = deps
|
||||
.compactWhitespace(deps.repairAddressMojibake(String(userMessage ?? "")).toLowerCase())
|
||||
.replace(/ё/g, "е");
|
||||
if (!normalized) {
|
||||
return false;
|
||||
}
|
||||
const hasInventoryLexeme = /(?:остат|склад|товар|номенклатур|позиц)/iu.test(normalized);
|
||||
if (!hasInventoryLexeme) {
|
||||
return false;
|
||||
}
|
||||
const sameDatePhrases = [
|
||||
"на ту же дат",
|
||||
"на эту же дат",
|
||||
"на эту дат",
|
||||
"эту дат",
|
||||
"та же дата",
|
||||
"тот же период",
|
||||
"этот же период"
|
||||
];
|
||||
return sameDatePhrases.some((phrase) => normalized.includes(phrase));
|
||||
}
|
||||
|
||||
function shouldKeepPreviousIntentForShortCounterpartyRetarget(userMessage, sourceIntent) {
|
||||
const normalized = deps.compactWhitespace(
|
||||
deps.repairAddressMojibake(String(userMessage ?? "")).toLowerCase()
|
||||
@@ -227,6 +250,10 @@ export function createAssistantTransitionPolicy(deps) {
|
||||
Boolean(recentInventoryRootFrame)
|
||||
)
|
||||
: false;
|
||||
const hasExplicitInventorySameDatePivotPrimary = hasExplicitInventorySameDatePivotSignal(userMessage);
|
||||
const hasExplicitInventorySameDatePivotAlternate = deps.toNonEmptyString(alternateMessage)
|
||||
? hasExplicitInventorySameDatePivotSignal(String(alternateMessage ?? ""))
|
||||
: false;
|
||||
let hasStrongFollowupReference =
|
||||
hasPrimaryIndexReferenceSignal ||
|
||||
hasAlternateIndexReferenceSignal ||
|
||||
@@ -550,6 +577,11 @@ export function createAssistantTransitionPolicy(deps) {
|
||||
(hasInventoryRootRestatementPrimary || hasInventoryRootRestatementAlternate) &&
|
||||
!deps.hasForeignAccountingPivotOverInventoryMessage(userMessage, alternateMessage)
|
||||
);
|
||||
const explicitInventorySameDatePivot = Boolean(
|
||||
!inventoryRootFrame &&
|
||||
(hasExplicitInventorySameDatePivotPrimary || hasExplicitInventorySameDatePivotAlternate) &&
|
||||
!deps.hasForeignAccountingPivotOverInventoryMessage(userMessage, alternateMessage)
|
||||
);
|
||||
const rootScopedPivot = rootContextOnlyPivot || inventoryRootTemporalPivot || inventoryRootRestatementPivot;
|
||||
if (rootScopedPivot) {
|
||||
previousIntent = null;
|
||||
@@ -651,7 +683,9 @@ export function createAssistantTransitionPolicy(deps) {
|
||||
const carryoverTargetIntent =
|
||||
followupSelectionMode === "carry_root_context"
|
||||
? inventoryRootFrame?.intent ?? displayedEntityTargetIntent ?? explicitIntent ?? previousIntent ?? undefined
|
||||
: displayedEntityTargetIntent ?? explicitIntent ?? previousIntent ?? undefined;
|
||||
: explicitInventorySameDatePivot
|
||||
? "inventory_on_hand_as_of_date"
|
||||
: displayedEntityTargetIntent ?? explicitIntent ?? previousIntent ?? undefined;
|
||||
return {
|
||||
followupContext: {
|
||||
previous_intent: previousIntent ?? undefined,
|
||||
|
||||
Reference in New Issue
Block a user