АРЧ АП11 - Архитектура после ге :
This commit is contained in:
@@ -3657,6 +3657,9 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext, ll
|
||||
? llmPreDecomposeMeta.semanticExtractionContract
|
||||
: null;
|
||||
const semanticCanonicalRecommended = semanticExtractionContract?.apply_canonical_recommended !== false;
|
||||
const llmSupportedDeepAddressIntentSignal = llmContractMode === "deep_analysis" &&
|
||||
/^(?:inventory_purchase_provenance_for_item|inventory_purchase_documents_for_item|inventory_sale_trace_for_item|inventory_profitability_for_item|inventory_purchase_to_sale_chain)$/u.test(llmContractIntent ?? "") &&
|
||||
semanticCanonicalRecommended;
|
||||
const llmCanonicalEntitySignal = /(?:\u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a|\u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a|\u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442|\u043a\u043e\u043c\u043f\u0430\u043d|customer|supplier|counterparty|company|vendor|client)/iu.test(compactWhitespace(repairedInputMessage.toLowerCase()));
|
||||
const llmCanonicalAppliedSignal = Boolean(llmPreDecomposeMeta?.applied) && llmContractMode !== "deep_analysis";
|
||||
const hasLlmCanonicalSignal = semanticCanonicalRecommended &&
|
||||
@@ -3669,6 +3672,7 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext, ll
|
||||
Boolean(llmPreDecomposeMeta?.applied) &&
|
||||
(llmContractMode === "address_query" || llmContractMode === "unsupported" || llmContractMode === null) &&
|
||||
hasStrongDataIntentSignal(repairedInputMessage);
|
||||
const hasBusinessRankingAddressSignal = /(?:\u043a\u0442\u043e\s+(?:\u043d\u0430\u043c\s+)?(?:\u0431\u043e\u043b\u044c\u0448\u0435(?:\s+\u0432\u0441\u0435\u0433\u043e)?\s+\u043f\u0440\u0438\u043d\u0435\u0441|\u043f\u0440\u0438\u043d\u0435\u0441\s+\u0431\u043e\u043b\u044c\u0448\u0435(?:\s+\u0432\u0441\u0435\u0433\u043e)?).*(?:\u0434\u0435\u043d\u0435\u0433)?|who\s+brought\s+(?:us\s+)?(?:the\s+)?most\s+money)/iu.test(compactWhitespace(repairedInputMessage.toLowerCase()));
|
||||
const sameDateAccountFollowupSignal = hasSameDateAccountFollowupSignalForPredecompose(rawMessageForGate) ||
|
||||
hasSameDateAccountFollowupSignalForPredecompose(repairedInputMessage);
|
||||
const hasLexicalAddressSignal = isAddressLlmPreDecomposeCandidate(addressInputMessage) ||
|
||||
@@ -3677,12 +3681,13 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext, ll
|
||||
hasAccountingSignal(repairedInputMessage) ||
|
||||
hasShortDebtMirrorFollowupSignal(rawMessageForGate) ||
|
||||
hasShortDebtMirrorFollowupSignal(repairedInputMessage) ||
|
||||
hasBusinessRankingAddressSignal ||
|
||||
sameDateAccountFollowupSignal;
|
||||
const hasUnsupportedLowConfidencePredecomposeSignal = llmContractMode === "unsupported" &&
|
||||
(llmContractModeConfidence === "low" || llmContractModeConfidence === "medium") &&
|
||||
llmContractIntent === "unknown";
|
||||
const hasAnyAddressSignal =
|
||||
hasClassifierSignal || hasIntentSignal || hasLlmCanonicalSignal || hasLlmCanonicalDataSignal || hasLexicalAddressSignal;
|
||||
hasClassifierSignal || hasIntentSignal || hasLlmCanonicalSignal || hasLlmCanonicalDataSignal || hasLexicalAddressSignal || llmSupportedDeepAddressIntentSignal;
|
||||
const strongDataSignalFromRawMessage = hasStrongDataIntentSignal(rawMessageForGate) ||
|
||||
hasDataRetrievalRequestSignal(rawMessageForGate) ||
|
||||
hasAccountingSignal(rawMessageForGate) ||
|
||||
@@ -3696,6 +3701,7 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext, ll
|
||||
!hasClassifierSignal &&
|
||||
!hasIntentSignal &&
|
||||
!hasLexicalAddressSignal &&
|
||||
!llmSupportedDeepAddressIntentSignal &&
|
||||
!strongDataSignalFromRawMessage &&
|
||||
!strongDataSignalFromEffectiveMessage) {
|
||||
return {
|
||||
@@ -3706,6 +3712,7 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext, ll
|
||||
}
|
||||
if (hasUnsupportedLowConfidencePredecomposeSignal && !followupContext &&
|
||||
!hasAnyAddressSignal &&
|
||||
!llmSupportedDeepAddressIntentSignal &&
|
||||
!strongDataSignalFromRawMessage &&
|
||||
!strongDataSignalFromEffectiveMessage) {
|
||||
return {
|
||||
@@ -3725,8 +3732,10 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext, ll
|
||||
? "address_intent_resolver_detected"
|
||||
: hasLlmCanonicalSignal
|
||||
? "llm_canonical_candidate_detected"
|
||||
: hasLlmCanonicalDataSignal
|
||||
: hasLlmCanonicalDataSignal
|
||||
? "llm_canonical_data_signal_detected"
|
||||
: llmSupportedDeepAddressIntentSignal
|
||||
? "address_signal_detected"
|
||||
: "address_signal_detected"
|
||||
};
|
||||
}
|
||||
@@ -3843,6 +3852,11 @@ function hasAggregateBusinessAnalyticsSignal(text) {
|
||||
if (!normalized) {
|
||||
return false;
|
||||
}
|
||||
const hasTurnoverByEntityBridgeSignal = /(?:\u043e\u0431\u043e\u0440\u043e\u0442(?:\u044b)?|\u0432\u044b\u0440\u0443\u0447\u043a|\u0434\u043e\u0445\u043e\u0434|turnover|revenue).*(?:\u0437\u0430\s+\d{4}\s+\u0433\u043e\u0434|\u043f\u0435\u0440\u0438\u043e\u0434|\u0433\u043e\u0434|year|month|quarter)/iu.test(normalized) &&
|
||||
/(?:\b\u043f\u043e\s+[\p{L}\d._-]{3,}|\u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442|\u043a\u043e\u043c\u043f\u0430\u043d|\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446|customer|supplier|counterparty|company)/iu.test(normalized);
|
||||
if (hasTurnoverByEntityBridgeSignal) {
|
||||
return true;
|
||||
}
|
||||
const hasMetricCue = /(?:\u043e\u0431\u043e\u0440\u043e\u0442|\u0432\u044b\u0440\u0443\u0447|\u0434\u043e\u0445\u043e\u0434|\u043f\u0440\u0438\u0431\u044b\u043b|\u043c\u0430\u0440\u0436|\u0440\u0435\u043d\u0442\u0430\u0431\u0435\u043b|\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b|turnover|revenue|profit|margin)/iu.test(normalized);
|
||||
if (!hasMetricCue) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user