Post-F: закрепить metadata scope и обновить live7 canary
This commit is contained in:
@@ -135,8 +135,22 @@ function isValueFlowPredicateEntityCandidate(value: string | null): boolean {
|
||||
return !/(?<!\p{L})(?:ооо|ип|ао|пао|зао|llc|inc|corp)(?!\p{L})/iu.test(text);
|
||||
}
|
||||
|
||||
function isActionVerbEntityCandidate(value: string | null): boolean {
|
||||
if (!value) {
|
||||
return false;
|
||||
}
|
||||
return new Set(["провести", "показать", "посмотреть", "смотреть", "найти", "искать", "анализ"]).has(
|
||||
normalizeRussianComparableText(value)
|
||||
);
|
||||
}
|
||||
|
||||
function isInvalidEntityCandidate(value: string | null): boolean {
|
||||
return Boolean(value && (isReferentialEntityPlaceholder(value) || isValueFlowPredicateEntityCandidate(value)));
|
||||
return Boolean(
|
||||
value &&
|
||||
(isReferentialEntityPlaceholder(value) ||
|
||||
isValueFlowPredicateEntityCandidate(value) ||
|
||||
isActionVerbEntityCandidate(value))
|
||||
);
|
||||
}
|
||||
|
||||
function normalizeFollowupCounterpartyCandidate(value: unknown): string | null {
|
||||
@@ -1163,10 +1177,23 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
const currentTurnFreshOrganizationScope = rawOrganizationScope ?? predecomposeEntities.organization;
|
||||
const currentTurnOrganizationScope =
|
||||
currentTurnFreshOrganizationScope ?? assistantTurnMeaningOrganizationScope;
|
||||
const followupCounterpartyIsMetadataOrganizationScope = Boolean(
|
||||
followupSeed.subjectResolutionOptional &&
|
||||
followupSeed.counterparty &&
|
||||
(followupSeed.metadataScopeHint ||
|
||||
followupSeed.metadataSelectedEntitySet ||
|
||||
followupSeed.metadataSelectedSurfaceObjects.length > 0) &&
|
||||
(isInvalidEntityCandidate(followupSeed.counterparty) ||
|
||||
sameScopedName(followupSeed.counterparty, followupSeed.organization) ||
|
||||
sameScopedName(followupSeed.counterparty, currentTurnOrganizationScope))
|
||||
);
|
||||
const effectiveFollowupCounterparty = followupCounterpartyIsMetadataOrganizationScope
|
||||
? null
|
||||
: followupSeed.counterparty;
|
||||
const explicitOrganizationScopeSignal = Boolean(rawOrganizationMentionSignal && currentTurnOrganizationScope);
|
||||
const organizationClarificationFollowupApplicable = Boolean(
|
||||
followupSeed.domain === "counterparty_value" &&
|
||||
!followupSeed.counterparty &&
|
||||
!effectiveFollowupCounterparty &&
|
||||
currentTurnOrganizationScope &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
@@ -1225,7 +1252,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
hasMetadataObjectHint(rawText)
|
||||
);
|
||||
const metadataLaneCarryoverAvailable = Boolean(
|
||||
followupSeed.counterparty ||
|
||||
effectiveFollowupCounterparty ||
|
||||
followupSeed.discoveryEntity ||
|
||||
followupSeed.metadataScopeHint ||
|
||||
followupSeed.metadataSelectedEntitySet ||
|
||||
@@ -1269,7 +1296,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
);
|
||||
const entityResolutionGroundedDocumentFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "entity_resolution_search_v1" &&
|
||||
(followupSeed.counterparty || followupSeed.discoveryEntity) &&
|
||||
(effectiveFollowupCounterparty || followupSeed.discoveryEntity) &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
@@ -1286,7 +1313,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
);
|
||||
const entityResolutionGroundedMovementFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "entity_resolution_search_v1" &&
|
||||
(followupSeed.counterparty || followupSeed.discoveryEntity) &&
|
||||
(effectiveFollowupCounterparty || followupSeed.discoveryEntity) &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
@@ -1305,7 +1332,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
rawValueFlowSignal &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawMetadataSignal &&
|
||||
(followupSeed.counterparty || followupSeed.discoveryEntity) &&
|
||||
(effectiveFollowupCounterparty || followupSeed.discoveryEntity) &&
|
||||
(followupSeed.pilotScope === "entity_resolution_search_v1" ||
|
||||
followupSeed.pilotScope === "counterparty_document_evidence_query_documents_v1" ||
|
||||
followupSeed.pilotScope === "counterparty_movement_evidence_query_movements_v1" ||
|
||||
@@ -1314,7 +1341,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
followupSeed.pilotScope === "counterparty_bidirectional_value_flow_query_movements_v1")
|
||||
);
|
||||
const groundedValueFlowEvidenceSourceApplicable = Boolean(
|
||||
(followupSeed.counterparty || followupSeed.discoveryEntity) &&
|
||||
(effectiveFollowupCounterparty || followupSeed.discoveryEntity) &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
@@ -1334,7 +1361,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
);
|
||||
const documentEvidenceGroundedMovementFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "counterparty_document_evidence_query_documents_v1" &&
|
||||
(followupSeed.counterparty || followupSeed.discoveryEntity) &&
|
||||
(effectiveFollowupCounterparty || followupSeed.discoveryEntity) &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
@@ -1342,7 +1369,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
);
|
||||
const movementEvidenceGroundedDocumentFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "counterparty_movement_evidence_query_movements_v1" &&
|
||||
(followupSeed.counterparty || followupSeed.discoveryEntity) &&
|
||||
(effectiveFollowupCounterparty || followupSeed.discoveryEntity) &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
@@ -1351,7 +1378,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
const metadataScopedMovementEvidenceToDocumentFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "counterparty_movement_evidence_query_movements_v1" &&
|
||||
followupSeed.subjectResolutionOptional &&
|
||||
!followupSeed.counterparty &&
|
||||
!effectiveFollowupCounterparty &&
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
@@ -1360,7 +1387,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
const metadataScopedDocumentEvidenceToMovementFollowupApplicable = Boolean(
|
||||
followupSeed.pilotScope === "counterparty_document_evidence_query_documents_v1" &&
|
||||
followupSeed.subjectResolutionOptional &&
|
||||
!followupSeed.counterparty &&
|
||||
!effectiveFollowupCounterparty &&
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
@@ -1431,7 +1458,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
metadataGroundedDocumentFollowupApplicable ||
|
||||
metadataAmbiguityResolvedDocumentFollowupApplicable ||
|
||||
(followupSeed.subjectResolutionOptional &&
|
||||
!followupSeed.counterparty &&
|
||||
!effectiveFollowupCounterparty &&
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
@@ -1450,7 +1477,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
metadataGroundedMovementFollowupApplicable ||
|
||||
metadataAmbiguityResolvedMovementFollowupApplicable ||
|
||||
(followupSeed.subjectResolutionOptional &&
|
||||
!followupSeed.counterparty &&
|
||||
!effectiveFollowupCounterparty &&
|
||||
metadataLaneCarryoverAvailable &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
@@ -1537,8 +1564,8 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
: null;
|
||||
const explicitCurrentCounterpartyOverridesFollowupEntity = Boolean(
|
||||
explicitCurrentCounterpartyCandidate &&
|
||||
(followupSeed.counterparty || followupSeed.discoveryEntity) &&
|
||||
!sameScopedName(explicitCurrentCounterpartyCandidate, followupSeed.counterparty ?? followupSeed.discoveryEntity) &&
|
||||
(effectiveFollowupCounterparty || followupSeed.discoveryEntity) &&
|
||||
!sameScopedName(explicitCurrentCounterpartyCandidate, effectiveFollowupCounterparty ?? followupSeed.discoveryEntity) &&
|
||||
(valueFlowSignal ||
|
||||
lifecycleSignal ||
|
||||
metadataGroundedDocumentLaneApplicable ||
|
||||
@@ -1556,7 +1583,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
null;
|
||||
const metadataScopedLaneWithoutSubject = Boolean(
|
||||
(metadataGroundedMovementLaneApplicable || metadataGroundedDocumentLaneApplicable) &&
|
||||
!followupSeed.counterparty &&
|
||||
!effectiveFollowupCounterparty &&
|
||||
metadataLaneCarryoverAvailable
|
||||
);
|
||||
const groundedFollowupEntity = metadataScopedLaneWithoutSubject
|
||||
@@ -1565,7 +1592,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
? null
|
||||
: explicitCurrentCounterpartyOverridesFollowupEntity
|
||||
? null
|
||||
: followupSeed.counterparty ?? followupSeed.discoveryEntity;
|
||||
: effectiveFollowupCounterparty ?? followupSeed.discoveryEntity;
|
||||
const entityCandidates = entityResolutionSignal ? [] : [];
|
||||
if (entityResolutionSignal) {
|
||||
pushNormalizedEntityResolutionCandidate(entityCandidates, entityResolutionClarificationCandidate);
|
||||
@@ -1579,7 +1606,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
pushNormalizedEntityResolutionCandidate(entityCandidates, normalizedPredecomposeCounterparty);
|
||||
}
|
||||
if (!rawEntitySearchOverridesStaleScope) {
|
||||
pushNormalizedEntityResolutionCandidate(entityCandidates, followupSeed.counterparty);
|
||||
pushNormalizedEntityResolutionCandidate(entityCandidates, effectiveFollowupCounterparty);
|
||||
}
|
||||
} else {
|
||||
if (groundedFollowupEntity) {
|
||||
@@ -1590,7 +1617,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
}
|
||||
pushScopedEntityCandidate(entityCandidates, normalizedPredecomposeCounterparty, groundedFollowupEntity);
|
||||
if (!groundedFollowupEntity) {
|
||||
pushScopedEntityCandidate(entityCandidates, followupSeed.counterparty, null);
|
||||
pushScopedEntityCandidate(entityCandidates, effectiveFollowupCounterparty, null);
|
||||
if (!metadataScopedLaneWithoutSubject) {
|
||||
pushScopedEntityCandidate(entityCandidates, followupSeed.discoveryEntity, null);
|
||||
}
|
||||
@@ -1606,7 +1633,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
pushUnique(entityCandidates, rawMetadataScopeHint);
|
||||
}
|
||||
const openScopeValueFlowWithoutCounterparty =
|
||||
valueFlowSignal && !normalizedPredecomposeCounterparty && !followupSeed.counterparty;
|
||||
valueFlowSignal && !normalizedPredecomposeCounterparty && !effectiveFollowupCounterparty;
|
||||
const valueFlowOrganizationStaysScope =
|
||||
openScopeValueFlowWithoutCounterparty &&
|
||||
Boolean(
|
||||
@@ -1618,7 +1645,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
followupSeed.organization
|
||||
);
|
||||
const openScopeValueFlowWithoutResolvedCounterparty = Boolean(
|
||||
valueFlowSignal && !normalizedPredecomposeCounterparty && !followupSeed.counterparty
|
||||
valueFlowSignal && !normalizedPredecomposeCounterparty && !effectiveFollowupCounterparty
|
||||
);
|
||||
if (openScopeValueFlowWithoutCounterparty && !valueFlowOrganizationStaysScope) {
|
||||
pushUnique(entityCandidates, predecomposeEntities.organization);
|
||||
@@ -1644,9 +1671,9 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
(metadataLaneScopeHint && sameScopedName(candidate, metadataLaneScopeHint)) ||
|
||||
(explicitOrganizationScope && sameScopedName(candidate, explicitOrganizationScope)) ||
|
||||
(followupSeed.organization && sameScopedName(candidate, followupSeed.organization)) ||
|
||||
(followupSeed.counterparty &&
|
||||
!sameScopedName(followupSeed.counterparty, explicitCurrentCounterpartyCandidate) &&
|
||||
sameScopedName(candidate, followupSeed.counterparty))
|
||||
(effectiveFollowupCounterparty &&
|
||||
!sameScopedName(effectiveFollowupCounterparty, explicitCurrentCounterpartyCandidate) &&
|
||||
sameScopedName(candidate, effectiveFollowupCounterparty))
|
||||
) {
|
||||
entityCandidates.splice(index, 1);
|
||||
}
|
||||
@@ -2000,7 +2027,7 @@ export function buildAssistantMcpDiscoveryTurnInput(
|
||||
) {
|
||||
pushReason(reasonCodes, "mcp_discovery_counterparty_from_predecompose");
|
||||
}
|
||||
if (followupSeed.counterparty && !rawEntitySearchOverridesStaleScope) {
|
||||
if (effectiveFollowupCounterparty && !rawEntitySearchOverridesStaleScope) {
|
||||
pushReason(reasonCodes, "mcp_discovery_counterparty_from_followup_context");
|
||||
}
|
||||
if (followupDateScopeApplied) {
|
||||
|
||||
Reference in New Issue
Block a user