ARCH: удержать metadata document pivot через year-switch
This commit is contained in:
@@ -678,6 +678,22 @@ function hasMetadataObjectHint(text: string): boolean {
|
||||
);
|
||||
}
|
||||
|
||||
function hasSimpleDocumentLanePivotSignal(text: string): boolean {
|
||||
return /(?:^|\s)по\s+документ(?:ам|ы)?(?:\?|$|\s)/iu.test(text);
|
||||
}
|
||||
|
||||
function hasSimpleMovementLanePivotSignal(text: string): boolean {
|
||||
return /(?:^|\s)по\s+движени(?:ям|я)?(?:\?|$|\s)/iu.test(text);
|
||||
}
|
||||
|
||||
function hasUtf8DocumentLanePivotSignal(text: string): boolean {
|
||||
return /(?:^|\s)по\s+документ(?:ам|ы)?(?:\?|$|\s)/iu.test(text);
|
||||
}
|
||||
|
||||
function hasUtf8MovementLanePivotSignal(text: string): boolean {
|
||||
return /(?:^|\s)по\s+движени(?:ям|я)?(?:\?|$|\s)/iu.test(text);
|
||||
}
|
||||
|
||||
function hasDocumentEvidenceFollowupSignal(text: string): boolean {
|
||||
return /(?:\u043f\u043e\s+\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442(?:\u0430\u043c|\u044b)?|\u0434\u0430\u0432\u0430\u0439\s+\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442(?:\u044b)?|\u0438\u0449\u0438\s+\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442(?:\u044b)?|\u043f\u043e\u043a\u0430\u0436\u0438\s+\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442(?:\u044b)?|(?:\u043f\u043e\u043a\u0430\u0436\u0438|\u043a\u0430\u043a\u0438\u0435|\u0441\u043f\u0438\u0441\u043e\u043a|\u0434\u0430\u0439|\u0438\u0449\u0438)\s+(?:\u0441\u0447(?:[еe]т|\u0435\u0442)[-\u2011 ]?\u0444\u0430\u043a\u0442\u0443\u0440(?:\u044b|\u0430)?|\u043d\u0430\u043a\u043b\u0430\u0434\u043d(?:\u044b\u0435|\u0430\u044f)?|\u0430\u043a\u0442(?:\u044b)?|\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446(?:\u0438\u0438|\u0438\u044e)|invoice(?:s)?|bill(?:s)?|waybill(?:s)?)|document(?:s)?\s+(?:then|next)?|(?:then|next)\s+documents?|go\s+to\s+documents?)/iu.test(
|
||||
text
|
||||
@@ -1020,16 +1036,25 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
: null;
|
||||
const entityResolutionSignal =
|
||||
rawEntityResolutionSignal || Boolean(rawEntityCandidate) || Boolean(entityResolutionClarificationCandidate);
|
||||
const metadataDocumentHintSignal =
|
||||
hasDocumentEvidenceFollowupSignal(rawText) || hasPronounDocumentEvidenceFollowupSignal(rawText);
|
||||
const metadataMovementHintSignal =
|
||||
hasMovementEvidenceFollowupSignal(rawText) || hasPronounMovementEvidenceFollowupSignal(rawText);
|
||||
|
||||
const rawDomain = toNonEmptyString(assistantTurnMeaning?.asked_domain_family);
|
||||
const rawAction = toNonEmptyString(assistantTurnMeaning?.asked_action_family);
|
||||
const rawAggregationAxis = toNonEmptyString(assistantTurnMeaning?.asked_aggregation_axis);
|
||||
const unsupported = toNonEmptyString(assistantTurnMeaning?.unsupported_but_understood_family);
|
||||
const explicitIntentCandidate = toNonEmptyString(assistantTurnMeaning?.explicit_intent_candidate);
|
||||
const currentTurnDocumentLaneSignal = rawAction === "list_documents";
|
||||
const currentTurnMovementLaneSignal = rawAction === "list_movements";
|
||||
const metadataDocumentHintSignal =
|
||||
currentTurnDocumentLaneSignal ||
|
||||
hasUtf8DocumentLanePivotSignal(rawText) ||
|
||||
hasSimpleDocumentLanePivotSignal(rawText) ||
|
||||
hasDocumentEvidenceFollowupSignal(rawText) ||
|
||||
hasPronounDocumentEvidenceFollowupSignal(rawText);
|
||||
const metadataMovementHintSignal =
|
||||
currentTurnMovementLaneSignal ||
|
||||
hasUtf8MovementLanePivotSignal(rawText) ||
|
||||
hasSimpleMovementLanePivotSignal(rawText) ||
|
||||
hasMovementEvidenceFollowupSignal(rawText) ||
|
||||
hasPronounMovementEvidenceFollowupSignal(rawText);
|
||||
const assistantTurnMeaningDateScope = toNonEmptyString(assistantTurnMeaning?.explicit_date_scope);
|
||||
const assistantTurnMeaningOrganizationScope = toNonEmptyString(assistantTurnMeaning?.explicit_organization_scope);
|
||||
const rawOrganizationMentionSignal = hasOrganizationScopeSignalUtf8(rawText);
|
||||
@@ -1221,6 +1246,24 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
!rawMetadataSignal &&
|
||||
metadataDocumentHintSignal
|
||||
);
|
||||
const metadataScopedMovementEvidenceToDocumentFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "counterparty_movement_evidence_query_movements_v1" &&
|
||||
followupSeed.subjectResolutionOptional &&
|
||||
!followupSeed.counterparty &&
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
metadataDocumentHintSignal
|
||||
);
|
||||
const metadataScopedDocumentEvidenceToMovementFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "counterparty_document_evidence_query_documents_v1" &&
|
||||
followupSeed.subjectResolutionOptional &&
|
||||
!followupSeed.counterparty &&
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
metadataMovementHintSignal
|
||||
);
|
||||
const metadataGroundedLaneContinuationApplicable = Boolean(
|
||||
followupSeed.pilotScope === "metadata_inspection_v1" &&
|
||||
(followupSeed.metadataRouteFamily === "document_evidence" ||
|
||||
@@ -1290,13 +1333,15 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
followupSeed.domain === "documents" &&
|
||||
followupSeed.action === "list_documents") ||
|
||||
!currentTurnMovementLaneSignal &&
|
||||
(!rawMetadataSignal || currentTurnDocumentLaneSignal) &&
|
||||
(currentTurnDocumentLaneSignal ||
|
||||
(followupSeed.domain === "documents" && followupSeed.action === "list_documents"))) ||
|
||||
entityResolutionGroundedDocumentFollowupApplicable ||
|
||||
entityResolutionClarifiedDocumentFollowupApplicable ||
|
||||
valueFlowGroundedDocumentFollowupApplicable ||
|
||||
movementEvidenceGroundedDocumentFollowupApplicable ||
|
||||
metadataScopedMovementEvidenceToDocumentFollowupApplicable ||
|
||||
(metadataGroundedLaneContinuationApplicable && followupSeed.metadataRouteFamily === "document_evidence") ||
|
||||
metadataAmbiguityCollapsedDocumentLaneContinuationApplicable;
|
||||
const metadataGroundedMovementLaneApplicable =
|
||||
@@ -1307,13 +1352,15 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
followupSeed.domain === "movements" &&
|
||||
followupSeed.action === "list_movements") ||
|
||||
!currentTurnDocumentLaneSignal &&
|
||||
(!rawMetadataSignal || currentTurnMovementLaneSignal) &&
|
||||
(currentTurnMovementLaneSignal ||
|
||||
(followupSeed.domain === "movements" && followupSeed.action === "list_movements"))) ||
|
||||
entityResolutionGroundedMovementFollowupApplicable ||
|
||||
entityResolutionClarifiedMovementFollowupApplicable ||
|
||||
valueFlowGroundedMovementFollowupApplicable ||
|
||||
documentEvidenceGroundedMovementFollowupApplicable ||
|
||||
metadataScopedDocumentEvidenceToMovementFollowupApplicable ||
|
||||
(metadataGroundedLaneContinuationApplicable && followupSeed.metadataRouteFamily === "movement_evidence") ||
|
||||
metadataAmbiguityCollapsedMovementLaneContinuationApplicable;
|
||||
const effectiveMetadataFollowupSeedApplicable =
|
||||
@@ -1761,6 +1808,12 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
if (movementEvidenceGroundedDocumentFollowupApplicable) {
|
||||
pushReason(reasonCodes, "mcp_discovery_movement_evidence_grounded_document_followup");
|
||||
}
|
||||
if (metadataScopedMovementEvidenceToDocumentFollowupApplicable) {
|
||||
pushReason(reasonCodes, "mcp_discovery_metadata_scoped_movement_to_document_followup");
|
||||
}
|
||||
if (metadataScopedDocumentEvidenceToMovementFollowupApplicable) {
|
||||
pushReason(reasonCodes, "mcp_discovery_metadata_scoped_document_to_movement_followup");
|
||||
}
|
||||
if (metadataGroundedLaneContinuationApplicable) {
|
||||
pushReason(reasonCodes, "mcp_discovery_metadata_grounded_lane_continuation");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user