From 8b84f5e9893536ff152415de074f25638cb60e42 Mon Sep 17 00:00:00 2001 From: dctouch Date: Sat, 28 Mar 2026 13:12:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=AD=D1=82=D0=B0=D0=BF=204=20/=20=D0=92=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D0=B0=2011:=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D1=82=D1=80=D0=B5=D0=B9=D1=81=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=B1=D0=B8=D0=B7=D0=BD=D0=B5=D1=81-=D1=8F=D0=BA?= =?UTF-8?q?=D0=BE=D1=80=D1=8F=D0=BC,=20=D0=B4=D0=BE=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B7=D0=B5=D0=BC=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5,=20cleanup=20=D1=83=D1=82=D0=B5=D1=87=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=B5=D0=B1=D0=B0=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/dist/services/answerComposer.js | 623 ++++++++++++-- .../dist/services/assistantDataLayer.js | 84 +- .../backend/dist/services/assistantService.js | 38 + .../dist/services/companyAnchorResolver.js | 151 ++++ .../backend/dist/services/lifecycleRuntime.js | 28 +- .../dist/services/problemUnitAssembler.js | 52 +- .../dist/services/questionTypeResolver.js | 44 + .../backend/scripts/analyzeWave13Chat20.js | 614 ++++++++++++++ .../scripts/runCompanyQuestionBatch.js | 233 ++++++ .../backend/src/services/answerComposer.ts | 760 ++++++++++++++++-- .../src/services/assistantDataLayer.ts | 100 ++- .../backend/src/services/assistantService.ts | 38 + .../src/services/companyAnchorResolver.ts | 181 +++++ .../backend/src/services/lifecycleRuntime.ts | 30 +- .../src/services/problemUnitAssembler.ts | 57 +- .../src/services/questionTypeResolver.ts | 60 ++ ...VatMonthCloseConsistencyRegression.test.ts | 397 +++++++++ ...ainFitQuestionTypeAnchorRegression.test.ts | 405 ++++++++++ .../eval_cases/eval-7Sx8faOQpm.report.json | 111 +++ .../eval_cases/eval-DI-aCpLWqK.report.json | 137 ++++ .../eval_cases/eval-KEtQ8SYPKI.report.json | 137 ++++ .../eval_cases/eval-KSX4Dsn7Xg.report.json | 111 +++ .../eval_cases/eval-O1pl1uP_Kc.report.json | 111 +++ .../eval_cases/eval-WTP_zUxzSk.report.json | 111 +++ .../eval_cases/eval-XunNzxsTLF.report.json | 137 ++++ .../eval_cases/eval-XyP2pAdsJB.report.json | 111 +++ .../eval_cases/eval-a3v4udOWPA.report.json | 111 +++ .../eval_cases/eval-do0FoiH-Xe.report.json | 111 +++ .../eval_cases/eval-gt_MR9X37J.report.json | 111 +++ .../eval_cases/eval-nBbn-LjIiA.report.json | 137 ++++ .../eval_cases/eval-qsqmRe1REB.report.json | 111 +++ .../eval_cases/eval-vXCfmE5dFG.report.json | 111 +++ .../eval_cases/eval-xytqNgINxK.report.json | 137 ++++ ...on_Rollback_Domain_Locked_Anchor_Usage.zip | Bin 0 -> 472177 bytes 34 files changed, 5517 insertions(+), 173 deletions(-) create mode 100644 llm_normalizer/backend/dist/services/companyAnchorResolver.js create mode 100644 llm_normalizer/backend/dist/services/questionTypeResolver.js create mode 100644 llm_normalizer/backend/scripts/analyzeWave13Chat20.js create mode 100644 llm_normalizer/backend/scripts/runCompanyQuestionBatch.js create mode 100644 llm_normalizer/backend/src/services/companyAnchorResolver.ts create mode 100644 llm_normalizer/backend/src/services/questionTypeResolver.ts create mode 100644 llm_normalizer/backend/tests/assistantWave12VatMonthCloseConsistencyRegression.test.ts create mode 100644 llm_normalizer/backend/tests/assistantWave13DomainFitQuestionTypeAnchorRegression.test.ts create mode 100644 llm_normalizer/data/eval_cases/eval-7Sx8faOQpm.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-DI-aCpLWqK.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-KEtQ8SYPKI.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-KSX4Dsn7Xg.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-O1pl1uP_Kc.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-WTP_zUxzSk.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-XunNzxsTLF.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-XyP2pAdsJB.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-a3v4udOWPA.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-do0FoiH-Xe.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-gt_MR9X37J.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-nBbn-LjIiA.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-qsqmRe1REB.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-vXCfmE5dFG.report.json create mode 100644 llm_normalizer/data/eval_cases/eval-xytqNgINxK.report.json create mode 100644 llm_normalizer/docs/runs/2026-03-28_Stage_04_Wave_14_Domain_Regression_Rollback_Domain_Locked_Anchor_Usage.zip diff --git a/llm_normalizer/backend/dist/services/answerComposer.js b/llm_normalizer/backend/dist/services/answerComposer.js index 3e7d3e4..d36e114 100644 --- a/llm_normalizer/backend/dist/services/answerComposer.js +++ b/llm_normalizer/backend/dist/services/answerComposer.js @@ -10,6 +10,112 @@ function fallbackFromSummary(routeSummary) { function uniqueStrings(values, limit = 6) { return Array.from(new Set(values.map((item) => item.trim()).filter(Boolean))).slice(0, limit); } +function withUniquePush(target, value) { + const normalized = String(value ?? "").trim(); + if (!normalized) { + return; + } + if (!target.includes(normalized)) { + target.push(normalized); + } +} +function normalizeAnchorForMatch(value) { + return String(value ?? "") + .toLowerCase() + .replace(/[^\p{L}\p{N}.:/-]+/gu, " ") + .replace(/\s+/g, " ") + .trim(); +} +function collectCompanyAnchorTokens(anchors) { + if (!anchors) { + return []; + } + const tokens = []; + for (const item of anchors.contract_numbers ?? []) + withUniquePush(tokens, item); + for (const item of anchors.document_numbers ?? []) + withUniquePush(tokens, item); + for (const item of anchors.dates ?? []) + withUniquePush(tokens, item); + for (const item of anchors.amounts ?? []) + withUniquePush(tokens, item); + for (const item of anchors.accounts ?? []) + withUniquePush(tokens, `\u0441\u0447\u0435\u0442 ${item}`); + for (const item of anchors.accounts ?? []) + withUniquePush(tokens, item); + for (const item of anchors.periods ?? []) + withUniquePush(tokens, item); + for (const item of anchors.document_types ?? []) + withUniquePush(tokens, item); + for (const item of anchors.all ?? []) + withUniquePush(tokens, item); + return uniqueStrings(tokens, 48); +} +function collectRetrievalCorpus(results) { + const chunks = []; + for (const result of results) { + chunks.push(JSON.stringify(result.summary ?? {})); + for (const item of result.items.slice(0, 10)) { + chunks.push(JSON.stringify(item)); + } + for (const evidence of result.evidence.slice(0, 16)) { + chunks.push(JSON.stringify(evidence)); + } + chunks.push(...result.why_included.slice(0, 16)); + chunks.push(...result.selection_reason.slice(0, 16)); + chunks.push(...result.business_interpretation.slice(0, 16)); + } + return chunks.join(" ").toLowerCase(); +} +function isAnchorMatchedInCorpus(anchor, corpus) { + const normalized = normalizeAnchorForMatch(anchor); + if (!normalized) { + return false; + } + if (normalized.length < 3) { + return false; + } + if (corpus.includes(normalized)) { + return true; + } + const withoutPrefix = normalized + .replace(/^(?:\u0434\u043e\u0433\u043e\u0432\u043e\u0440|document|account|period|doc_type)\s*[:№#]?\s*/iu, "") + .trim(); + if (withoutPrefix.length >= 3 && corpus.includes(withoutPrefix)) { + return true; + } + if (/^\d+(?:[.,]\d{2})?$/.test(withoutPrefix)) { + const normalizedAmount = withoutPrefix.replace(",", "."); + return corpus.includes(withoutPrefix) || corpus.includes(normalizedAmount); + } + return false; +} +function evaluateCompanyAnchorUsage(anchors, retrievalResults) { + const present = collectCompanyAnchorTokens(anchors); + if (present.length === 0) { + return { + present: [], + used: [], + unused: [] + }; + } + const corpus = normalizeAnchorForMatch(collectRetrievalCorpus(retrievalResults)); + const used = []; + const unused = []; + for (const anchor of present) { + if (isAnchorMatchedInCorpus(anchor, corpus)) { + withUniquePush(used, anchor); + } + else { + withUniquePush(unused, anchor); + } + } + return { + present: uniqueStrings(present, 24), + used: uniqueStrings(used, 12), + unused: uniqueStrings(unused, 12) + }; +} const UUID_PATTERN = /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi; const LONG_HEX_PATTERN = /\b[0-9a-f]{24,}\b/gi; const RAW_REF_BLOB_PATTERN = /\bevidence_source_ref_v1\|[^\s,;]+/gi; @@ -962,6 +1068,10 @@ function isProblemUnitAlignedWithNarrativeDomain(unit, domain) { return /(payment_to_settlement|settlement_closed|settlement|аванс|зачет|зачёт|расчет|расч[её]т|оплат)/i.test(corpus); } if (domain === "vat_document_register_book") { + const foreignVatDomain = ["period_close", "deferred_expense", "fixed_asset", "bank_settlement", "customer_settlement"].includes(String(unit.lifecycle_domain ?? "")); + if (foreignVatDomain && !hasControlledCrossDomainHandoff(unit)) { + return false; + } if (unit.lifecycle_domain === "vat_flow") { return true; } @@ -971,6 +1081,10 @@ function isProblemUnitAlignedWithNarrativeDomain(unit, domain) { return /(vat|ндс|invoice|book_entry|register|книг|счет[\s-]?фактур|сч[её]т[\s-]?фактур)/i.test(corpus); } if (domain === "month_close_costs_20_44") { + const foreignMonthCloseDomain = ["vat_flow", "bank_settlement", "customer_settlement", "fixed_asset"].includes(String(unit.lifecycle_domain ?? "")); + if (foreignMonthCloseDomain && !hasControlledCrossDomainHandoff(unit)) { + return false; + } if (unit.lifecycle_domain === "period_close" || unit.lifecycle_domain === "deferred_expense" || unit.lifecycle_domain === "fixed_asset") { @@ -1514,12 +1628,159 @@ function mapDefectTokenToNarrative(value) { } return null; } +const KNOWN_ACCOUNT_PREFIXES = new Set([ + "01", + "02", + "07", + "08", + "10", + "13", + "19", + "20", + "21", + "23", + "25", + "26", + "28", + "29", + "41", + "43", + "44", + "45", + "50", + "51", + "52", + "55", + "57", + "58", + "60", + "62", + "66", + "67", + "68", + "69", + "70", + "71", + "73", + "76", + "90", + "91", + "94", + "96", + "97" +]); +function collectDateLikeSpansForNarrative(text) { + const spans = []; + const patterns = [ + /\b20\d{2}[./-](?:0[1-9]|1[0-2])(?:[./-](?:0[1-9]|[12]\d|3[01]))?\b/g, + /\b(?:0?[1-9]|[12]\d|3[01])[./-](?:0?[1-9]|1[0-2])[./-](?:\d{2}|\d{4})\b/g, + /\b(?:0?[1-9]|[12]\d|3[01])\s+(?:января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря)\b/giu + ]; + for (const pattern of patterns) { + let match = null; + while ((match = pattern.exec(text)) !== null) { + spans.push({ + start: match.index, + end: match.index + match[0].length + }); + } + } + return spans; +} +function collectAmountLikeSpansForNarrative(text) { + const spans = []; + const pattern = /\b\d{1,3}(?:[ \u00A0]\d{3})+(?:[.,]\d{2})?\b/g; + let match = null; + while ((match = pattern.exec(text)) !== null) { + spans.push({ + start: match.index, + end: match.index + match[0].length + }); + } + return spans; +} +function intersectsNarrativeSpan(start, end, spans) { + return spans.some((span) => start < span.end && end > span.start); +} +function hasAccountContextMarker(text, start, end) { + const left = text.slice(Math.max(0, start - 24), start); + const right = text.slice(end, Math.min(text.length, end + 24)); + return /(?:счет|сч\.?|account|schet|по\s+60|по\s+62|по\s+19|по\s+68|по\s+20|по\s+25|по\s+26|по\s+44|расчет|ндс|закрыти|рбп|амортиз|settlement|vat|close)/iu.test(`${left} ${right}`); +} +function toKnownAccountToken(value) { + const token = String(value ?? "").trim(); + const prefix = token.match(/^(\d{2})/)?.[1]; + if (!prefix || !KNOWN_ACCOUNT_PREFIXES.has(prefix)) { + return null; + } + return token; +} function extractAccountNumbers(values) { - const numbers = values.flatMap((value) => { - const matches = String(value ?? "").match(/\b\d{2}(?:\.\d{1,2})?\b/g); - return matches ?? []; - }); - return uniqueStrings(numbers, 12); + const tokens = []; + for (const value of values) { + const raw = String(value ?? ""); + const matches = raw.match(/\b\d{2}(?:\.\d{1,2})?\b/g) ?? []; + for (const match of matches) { + const account = toKnownAccountToken(match); + if (account) { + tokens.push(account); + } + } + } + return uniqueStrings(tokens, 16); +} +function extractAccountNumbersFromNarrativeText(value) { + const text = String(value ?? "").toLowerCase(); + if (!text.trim()) { + return []; + } + const result = []; + const dateSpans = collectDateLikeSpansForNarrative(text); + const amountSpans = collectAmountLikeSpansForNarrative(text); + const blockedSpans = [...dateSpans, ...amountSpans]; + const contextualPattern = /(?:\b(?:счет(?:а|у|ом|ов)?|сч\.?|account(?:s)?|schet(?:a|u|om|ov)?)\b)\s*(?:№|#|:)?\s*([0-9./,\sиand]{2,96})/giu; + let contextualMatch = null; + while ((contextualMatch = contextualPattern.exec(text)) !== null) { + const chunk = String(contextualMatch[1] ?? ""); + const chunkTokens = chunk.match(/\b\d{2}(?:\.\d{1,2})?\b/g) ?? []; + for (const token of chunkTokens) { + const account = toKnownAccountToken(token); + if (account) { + result.push(account); + } + } + } + const accountPairPattern = /\b(\d{2}(?:\.\d{1,2})?)\s*\/\s*(\d{2}(?:\.\d{1,2})?)\b/g; + let pairMatch = null; + while ((pairMatch = accountPairPattern.exec(text)) !== null) { + const left = toKnownAccountToken(String(pairMatch[1] ?? "")); + const right = toKnownAccountToken(String(pairMatch[2] ?? "")); + if (left) { + result.push(left); + } + if (right) { + result.push(right); + } + } + const explicitPattern = /\b\d{2}(?:\.\d{1,2})?\b/g; + let explicitMatch = null; + while ((explicitMatch = explicitPattern.exec(text)) !== null) { + const token = String(explicitMatch[0] ?? ""); + const account = toKnownAccountToken(token); + if (!account) { + continue; + } + const start = explicitMatch.index; + const end = start + token.length; + if (intersectsNarrativeSpan(start, end, blockedSpans)) { + continue; + } + if (!hasAccountContextMarker(text, start, end)) { + continue; + } + result.push(account); + } + return uniqueStrings(result, 16); } function inferP0NarrativeDomain(units) { const allAccounts = extractAccountNumbers(units.flatMap((unit) => unit.affected_accounts ?? [])); @@ -1642,9 +1903,21 @@ function hasControlledCrossDomainHandoffInResult(result) { function isSettlementDomainToken(value) { return /(?:bank_settlement|customer_settlement|settlements?|supplier_payments|suppliers?|customers?)/i.test(String(value ?? "")); } +function isVatDomainToken(value) { + return /(?:vat_flow|vat|nds|taxes?|purchase_book|sales_book|invoice|book_entry|register)/i.test(String(value ?? "")); +} +function isMonthCloseDomainToken(value) { + return /(?:period_close|month_close|close_operation|cost_close|cost_allocation|deferred_expense)/i.test(String(value ?? "")); +} function isForeignToSettlementDomainToken(value) { return /(?:vat_flow|vat|deferred_expense|period_close|fixed_asset|fixed_assets|taxes?)/i.test(String(value ?? "")); } +function isForeignToVatDomainToken(value) { + return /(?:bank_settlement|customer_settlement|settlements?|period_close|deferred_expense|fixed_asset|fixed_assets|month_close)/i.test(String(value ?? "")); +} +function isForeignToMonthCloseDomainToken(value) { + return /(?:bank_settlement|customer_settlement|settlements?|vat_flow|vat|fixed_asset|fixed_assets)/i.test(String(value ?? "")); +} function collectResultAccounts(result) { const accounts = []; const semanticProfile = summaryValue(result, "semantic_profile"); @@ -1687,11 +1960,19 @@ function isSubstantiveResult(result) { } return result.items.length > 0 || result.evidence.length > 0; } -function evaluateSettlementEvidenceGrounding(results) { +function evaluateP0DomainEvidenceGrounding(results, focusDomain) { + if (!focusDomain) { + return { + has_primary: false, + has_foreign_primary: false, + foreign_primary_domains: [], + blocked: false + }; + } const substantive = results.filter((item) => isSubstantiveResult(item)); if (substantive.length === 0) { return { - has_settlement_primary: false, + has_primary: false, has_foreign_primary: false, foreign_primary_domains: [], blocked: false @@ -1701,42 +1982,91 @@ function evaluateSettlementEvidenceGrounding(results) { const accounts = collectResultAccounts(result); const domains = collectResultDomains(result); const relations = collectResultRelations(result); - const settlement = accounts.some((item) => isSettlementAccountToken(item) || /^(?:51|76)(?:\.|$)/.test(item)) || - domains.some((item) => isSettlementDomainToken(item)) || - relations.some((item) => /payment_to_settlement|statement_to_document|contract_to_documents/.test(item)); - const foreignDomains = domains.filter((item) => isForeignToSettlementDomainToken(item)); + let inDomain = false; + let foreignDomains = []; + if (focusDomain === "settlements_60_62") { + inDomain = + accounts.some((item) => isSettlementAccountToken(item) || /^(?:51|76)(?:\.|$)/.test(item)) || + domains.some((item) => isSettlementDomainToken(item)) || + relations.some((item) => /payment_to_settlement|statement_to_document|contract_to_documents|linked_to_settlement|settlement_closed/.test(item)); + foreignDomains = domains.filter((item) => isForeignToSettlementDomainToken(item)); + } + else if (focusDomain === "vat_document_register_book") { + inDomain = + accounts.some((item) => isVatAccountToken(item)) || + domains.some((item) => isVatDomainToken(item)) || + relations.some((item) => /invoice_to_vat|source_doc_present|invoice_linked|book_entry_generated|deduction_posted|register_to_book|vat_/i.test(item)); + foreignDomains = domains.filter((item) => isForeignToVatDomainToken(item)); + } + else if (focusDomain === "month_close_costs_20_44") { + inDomain = + accounts.some((item) => isCloseCostsAccountToken(item)) || + domains.some((item) => isMonthCloseDomainToken(item)) || + relations.some((item) => /costs_accumulated|allocation_rules_resolved|close_operation_runs|residuals_zero|close_operation|period_close|allocation|writeoff/i.test(item)); + foreignDomains = domains.filter((item) => isForeignToMonthCloseDomainToken(item)); + } return { - settlement, + inDomain, foreignDomains: uniqueStrings(foreignDomains, 8) }; }; const top = substantive[0]; const topClass = classify(top); - const hasAnySettlement = substantive.some((item) => classify(item).settlement); - const hasForeignPrimary = topClass.foreignDomains.length > 0 && !topClass.settlement; - const blocked = hasForeignPrimary && !hasAnySettlement && !hasControlledCrossDomainHandoffInResult(top); + const hasAnyPrimary = substantive.some((item) => classify(item).inDomain); + const hasForeignPrimary = topClass.foreignDomains.length > 0 && !topClass.inDomain; + const blocked = hasForeignPrimary && !hasAnyPrimary && !hasControlledCrossDomainHandoffInResult(top); return { - has_settlement_primary: hasAnySettlement, + has_primary: hasAnyPrimary, has_foreign_primary: hasForeignPrimary, foreign_primary_domains: topClass.foreignDomains, blocked }; } +function hasStrongNarrativeDomainSignalInText(userMessage, domain) { + if (!domain) { + return false; + } + const text = String(userMessage ?? "").toLowerCase(); + const accountTokens = extractAccountNumbersFromNarrativeText(text); + if (domain === "settlements_60_62") { + return (accountTokens.some((item) => isSettlementAccountToken(item)) || + /(60\.0[12]|62\.0[12]|долг|аванс|зач[её]т|взаимозач|расч[её]т)/i.test(text)); + } + if (domain === "vat_document_register_book") { + return (accountTokens.some((item) => isVatAccountToken(item)) || + /(ндс|vat|счет[-\s]?фактур|сч[её]т[-\s]?фактур|книг[аи]|регистр)/i.test(text)); + } + if (domain === "month_close_costs_20_44") { + return (accountTokens.some((item) => isCloseCostsAccountToken(item)) || + /(закрыти[ея]\s+месяц|закрытие\s+счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых\s+результат|month\s*close|period\s*close|close\s+operation)/i.test(text)); + } + return false; +} function inferP0FocusNarrativeDomain(userMessage, results, units, focusDomainHint) { const fromHint = p0NarrativeDomainFromHint(focusDomainHint); + const fromMessage = inferNarrativeDomainFromText(userMessage); + const strongFromMessage = Boolean(fromMessage && hasStrongNarrativeDomainSignalInText(userMessage, fromMessage)); + const fromDomainGuard = inferP0NarrativeDomainFromDomainGuards(results); + if (fromHint && fromMessage && fromHint !== fromMessage) { + return strongFromMessage ? fromMessage : fromHint; + } if (fromHint) { return fromHint; } - const fromDomainGuard = inferP0NarrativeDomainFromDomainGuards(results); + if (fromDomainGuard && fromMessage && fromDomainGuard !== fromMessage) { + return strongFromMessage ? fromMessage : fromDomainGuard; + } if (fromDomainGuard) { return fromDomainGuard; } - const fromMessage = inferNarrativeDomainFromText(userMessage); + if (strongFromMessage) { + return fromMessage; + } if (fromMessage) { return fromMessage; } const semanticScopes = collectSemanticProfileScopes(results); - const messageAccounts = extractAccountNumbers([userMessage]); + const messageAccounts = extractAccountNumbersFromNarrativeText(userMessage); const hasExplicitP0AccountSignal = [...messageAccounts, ...semanticScopes.accounts].some((item) => isSettlementAccountToken(item) || isVatAccountToken(item) || isCloseCostsAccountToken(item)); // Domain lock is only applied when we have an explicit P0 signal from the query/profile. if (!hasExplicitP0AccountSignal) { @@ -1887,12 +2217,19 @@ function humanizeFactForDirectAnswer(value) { } function buildDirectAnswer(input) { const topFact = humanizeFactForDirectAnswer(firstMeaningfulFact(input.retrievalResults)); + const domainAnchor = domainNarrativeAnchor(input.focusDomain); + const topFactDomain = topFact ? inferNarrativeDomainFromText(topFact) : null; + const topFactAligned = Boolean(topFact) && (!input.focusDomain || topFactDomain === input.focusDomain); + const preferredFact = topFactAligned ? topFact : null; if (input.mode === "focused_grounded") { - return topFact ?? "Проблема подтверждена на текущей опоре и готова к точечной проверке."; + return preferredFact ?? domainAnchor ?? "Проблема подтверждена на текущей опоре и готова к точечной проверке."; } if (input.mode === "broad_partial") { - if (topFact) { - return `${topFact.replace(/[.!?]+$/u, "")}; подтверждение пока частичное.`; + if (preferredFact) { + return `${preferredFact.replace(/[.!?]+$/u, "")}; подтверждение пока частичное.`; + } + if (domainAnchor) { + return `${domainAnchor.replace(/[.!?]+$/u, "")}; подтверждение пока частичное.`; } return "Есть признаки проблемы, но опора частичная и вывод ограничен."; } @@ -1962,9 +2299,19 @@ function buildProblemCentricAnswerStructure(input) { .map((item) => item.source_ref?.canonical_ref) .filter((item) => typeof item === "string" && item.trim().length > 0), 6); const evidenceIds = uniqueStrings(input.evidenceItems.map((item) => item.evidence_id), 10); + const aggregateEvidenceConfidence = aggregateConfidence(input.retrievalResults, input.evidenceItems); + const hasCriticalEvidenceLimitation = input.limitationReasonCodes.includes("weak_source_mapping") || + input.limitationReasonCodes.includes("insufficient_detail"); + const confidenceLimited = input.mode !== "focused_grounded" || + weakUnits || + input.domainLockMiss || + input.limitationReasonCodes.includes("missing_mechanism") || + input.limitationReasonCodes.includes("heuristic_inference") || + hasCriticalEvidenceLimitation || + aggregateEvidenceConfidence === "low"; const mechanismStatus = unitMechanismNotes.length === 0 ? "unresolved" - : weakUnits || input.limitationReasonCodes.includes("missing_mechanism") + : confidenceLimited ? "limited" : "grounded"; const problemSpecificLimitations = []; @@ -2067,18 +2414,42 @@ function limitationReasonToUserText(code) { } function inferNarrativeDomainFromText(value) { const text = String(value ?? "").toLowerCase(); - const accountTokens = extractAccountNumbers([text]); - const hasSettlementLexicalSignal = /(оплат|долг|аванс|взаимозач|зачет|зачёт|поставщ|покупат|не\s+сход)/i.test(text); - if (accountTokens.some((token) => isSettlementAccountToken(token)) || hasSettlementLexicalSignal) { - return "settlements_60_62"; + const accountTokens = extractAccountNumbersFromNarrativeText(text); + let settlementScore = 0; + let vatScore = 0; + let monthCloseScore = 0; + if (accountTokens.some((token) => isSettlementAccountToken(token))) { + settlementScore += 3; } - if (accountTokens.some((token) => isVatAccountToken(token)) || /(ндс|счет[-\s]?фактур|регистр|книг)/i.test(text)) { + if (accountTokens.some((token) => isVatAccountToken(token))) { + vatScore += 3; + } + if (accountTokens.some((token) => isCloseCostsAccountToken(token))) { + monthCloseScore += 3; + } + if (/(долг|аванс|взаимозач|зачет|зачёт|62\.01|62\.02|60\.01|60\.02|не\s+сход)/i.test(text)) { + settlementScore += 2; + } + if (/(ндс|vat|счет[-\s]?фактур|сч[её]т[-\s]?фактур|книг[аи]|регистр)/i.test(text)) { + vatScore += 3; + } + if (/(закрыти[ея]\s+месяц|закрытие\s+счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых\s+результат|month\s*close|period\s*close|close\s+operation)/i.test(text)) { + monthCloseScore += 3; + } + const maxScore = Math.max(settlementScore, vatScore, monthCloseScore); + if (maxScore <= 0) { + return null; + } + // Tie-break prioritizes explicit VAT and month-close lexical markers over broad settlement wording. + if (vatScore === maxScore) { return "vat_document_register_book"; } - if (accountTokens.some((token) => isCloseCostsAccountToken(token)) || - /(закрыти[ея]\s+месяц|затрат|распределени|списан)/i.test(text)) { + if (monthCloseScore === maxScore) { return "month_close_costs_20_44"; } + if (settlementScore === maxScore) { + return "settlements_60_62"; + } return null; } function isIncompleteEvidence(structure) { @@ -2171,6 +2542,10 @@ function buildEvidenceSectionLines(structure) { const claimLinks = Array.isArray(structure.evidence_block.claim_evidence_links) ? structure.evidence_block.claim_evidence_links.length : 0; + const reliabilityLimited = structure.mechanism_block.status !== "grounded" || + structure.uncertainty_block.limitations.length > 0 || + structure.uncertainty_block.open_uncertainties.length > 0 || + structure.evidence_block.coverage_note === "coverage_partial_or_limited"; const lines = []; const coverageSplitLines = buildCoverageSplitLines(structure); if (evidenceCount > 0) { @@ -2186,7 +2561,7 @@ function buildEvidenceSectionLines(structure) { lines.push("Опора частичная: часть требований покрыта не полностью."); } else if (evidenceCount > 0) { - lines.push("Опора достаточна для первичного вывода."); + lines.push(reliabilityLimited ? "Опора есть, но достаточна только для предварительного вывода." : "Опора достаточна для первичного вывода."); } if (lines.length === 0) { lines.push("Использована доступная выборка документов и проводок в текущем snapshot."); @@ -2267,6 +2642,8 @@ function humanizeLimitationToken(value) { return "Не указан документ или объект для трассировки."; if (normalized === "missing_anchor:counterparty") return "Не указан контрагент или договор."; + if (normalized === "primary_domain_evidence_not_confirmed") + return "Целевой механизм активного домена подтвержден частично; вывод ограничен."; if (normalized === "settlement_primary_evidence_not_confirmed") return "Опора по расчетному контуру не подтверждена: в приоритете были сигналы из смежных доменов."; if (normalized.includes("snapshot")) @@ -2330,26 +2707,146 @@ function buildLimitationsSectionLines(structure) { } return ["Существенных ограничений в текущем срезе не выявлено."]; } -function renderPolicyReply(structure) { +function domainNameForQuestionType(domain) { + if (domain === "settlements_60_62") + return "\u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430"; + if (domain === "vat_document_register_book") + return "\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u041d\u0414\u0421"; + if (domain === "month_close_costs_20_44") + return "\u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u0435\u0441\u044f\u0446\u0430"; + return "\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430"; +} +function buildQuestionTypeShortLine(context) { + const domainName = domainNameForQuestionType(context.focusDomain); + if (context.questionType === "where_break_is") { + return `\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u044b\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 ${domainName}.`; + } + if (context.questionType === "prove_or_guess") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u0440\u0430\u0437\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0438 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443."; + } + if (context.questionType === "what_is_it_grounded_on") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c."; + } + if (context.questionType === "which_chains_are_complete_vs_incomplete") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438."; + } + if (context.questionType === "what_to_check_first") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438."; + } + return null; +} +function buildQuestionTypeBrokenLine(context) { + if (context.questionType !== "where_break_is") { + return null; + } + if (context.focusDomain === "settlements_60_62") { + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430: \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043e\u043f\u043b\u0430\u0442\u044b \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f."; + } + if (context.focusDomain === "vat_document_register_book") { + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430: \u0441\u0432\u044f\u0437\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0441\u0447\u0435\u0442\u0430-\u0444\u0430\u043a\u0442\u0443\u0440\u044b \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043d\u0438\u0433\u0438."; + } + if (context.focusDomain === "month_close_costs_20_44") { + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430: \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0442\u0440\u0430\u0442 \u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e/\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044e."; + } + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e; \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u0447\u0435\u0447\u043d\u0430\u044f \u0441\u0432\u0435\u0440\u043a\u0430."; +} +function buildQuestionTypeWhyLine(context) { + if (context.questionType === "prove_or_guess") { + return "\u0417\u0434\u0435\u0441\u044c \u0447\u0435\u0441\u0442\u043d\u043e \u0440\u0430\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e \u0438 \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u043e\u0439."; + } + if (context.questionType === "which_chains_are_complete_vs_incomplete") { + return "\u0426\u0435\u043f\u043e\u0447\u043a\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u043f\u043e\u0440\u0435."; + } + return null; +} +function buildQuestionTypeEvidenceLine(context) { + if (context.questionType === "what_is_it_grounded_on") { + return "\u0412 \u044d\u0442\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430."; + } + if (context.questionType === "prove_or_guess") { + return "\u0421\u0438\u043b\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u043e\u0446\u0435\u043d\u0435\u043d\u0430 \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u043f\u043e\u0440\u0435, \u0430 \u043d\u0435 \u043f\u043e \u0434\u043e\u0433\u0430\u0434\u043a\u0430\u043c."; + } + return null; +} +function formatAnchorList(anchors, prefix) { + if (anchors.length === 0) { + return null; + } + return `${prefix}: ${anchors.join(", ")}.`; +} +function buildQuestionTypeCheckLine(context) { + if (context.questionType === "what_to_check_first") { + return "\u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0438 \u043f\u0440\u043e\u0439\u0434\u0438\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u043a\u043e\u043a\u0430."; + } + return null; +} +function buildQuestionTypeLimitationLine(context) { + if (context.questionType === "prove_or_guess") { + return "\u0414\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u00ab\u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0438\u043b\u0438 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430\u00bb \u0432\u0441\u0435 \u043d\u0435\u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f."; + } + if (context.questionType === "which_chains_are_complete_vs_incomplete") { + return "\u0414\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u00abcomplete/incomplete\u00bb \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0441\u0440\u0435\u0437\u0435."; + } + return null; +} +function applyQuestionTypeAndAnchorPolicy(input) { + const nextShort = buildQuestionTypeShortLine(input.context) ?? input.shortLine; + const nextBroken = dedupeNarrativeLines([buildQuestionTypeBrokenLine(input.context), ...input.brokenLines].filter((item) => Boolean(item)), 4); + const nextWhy = dedupeNarrativeLines([buildQuestionTypeWhyLine(input.context), ...input.whyLines].filter((item) => Boolean(item)), 4); + const anchorUsedLine = formatAnchorList(input.context.anchors.used, "\u0412 \u043e\u043f\u043e\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u044f\u043a\u043e\u0440\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u0430"); + const anchorUnusedLine = formatAnchorList(input.context.anchors.unused, "\u042f\u043a\u043e\u0440\u044f \u0438\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f"); + const nextEvidence = dedupeNarrativeLines([buildQuestionTypeEvidenceLine(input.context), ...input.evidenceLines, anchorUsedLine].filter((item) => Boolean(item)), 7); + const nextChecks = dedupeNarrativeLines([buildQuestionTypeCheckLine(input.context), ...input.checkLines].filter((item) => Boolean(item)), 5); + const nextLimitations = dedupeNarrativeLines([buildQuestionTypeLimitationLine(input.context), anchorUnusedLine, ...input.limitationLines].filter((item) => Boolean(item)), 6); + return { + shortLine: ensureSentence(nextShort), + brokenLines: nextBroken, + whyLines: nextWhy, + evidenceLines: nextEvidence, + checkLines: nextChecks, + limitationLines: nextLimitations + }; +} +function renderPolicyReply(structure, context) { const shortLine = ensureSentence(buildShortSectionLine(structure)); const brokenLines = buildBrokenSectionLines(structure); const whyLines = buildWhySectionLines(structure); const evidenceLines = buildEvidenceSectionLines(structure); const checkLines = buildChecksSectionLines(structure); const limitationLines = buildLimitationsSectionLines(structure); + const enriched = context + ? applyQuestionTypeAndAnchorPolicy({ + shortLine, + brokenLines, + whyLines, + evidenceLines, + checkLines, + limitationLines, + context + }) + : { + shortLine, + brokenLines, + whyLines, + evidenceLines, + checkLines, + limitationLines + }; return sanitizeUserFacingReply([ - `Коротко: ${shortLine}`, - `Что сломано:\n${formatList(brokenLines)}`, - `Почему это похоже на проблему:\n${formatList(whyLines)}`, - `На чем это основано:\n${formatList(evidenceLines)}`, - `Что проверить первым:\n${formatList(checkLines)}`, - `Ограничения:\n${formatList(limitationLines)}` + `Коротко: ${enriched.shortLine}`, + `Что сломано:\n${formatList(enriched.brokenLines)}`, + `Почему это похоже на проблему:\n${formatList(enriched.whyLines)}`, + `На чем это основано:\n${formatList(enriched.evidenceLines)}`, + `Что проверить первым:\n${formatList(enriched.checkLines)}`, + `Ограничения:\n${formatList(enriched.limitationLines)}` ] .filter(Boolean) .join("\n\n")); } function composeAssistantAnswerV11(input) { const fallbackType = fallbackFromSummary(input.routeSummary); + const questionType = input.questionTypeHint ?? "unknown"; + const anchorUsage = evaluateCompanyAnchorUsage(input.companyAnchors, input.retrievalResults); const okResults = input.retrievalResults.filter((item) => item.status === "ok"); const partialResults = input.retrievalResults.filter((item) => item.status === "partial"); const emptyResults = input.retrievalResults.filter((item) => item.status === "empty"); @@ -2368,15 +2865,8 @@ function composeAssistantAnswerV11(input) { const problemUnitSummary = selectProblemUnitSummary(input.retrievalResults); const problemHeavyUnits = problemUnits.filter((item) => PROBLEM_HEAVY_TYPES.has(item.problem_unit_type)); const focusNarrativeDomain = inferP0FocusNarrativeDomain(input.userMessage, input.retrievalResults, problemHeavyUnits, input.focusDomainHint); - const settlementGrounding = focusNarrativeDomain === "settlements_60_62" - ? evaluateSettlementEvidenceGrounding(input.retrievalResults) - : { - has_settlement_primary: false, - has_foreign_primary: false, - foreign_primary_domains: [], - blocked: false - }; - const settlementGroundingBlocked = focusNarrativeDomain === "settlements_60_62" && settlementGrounding.blocked; + const focusDomainGrounding = evaluateP0DomainEvidenceGrounding(input.retrievalResults, focusNarrativeDomain); + const focusDomainGroundingBlocked = Boolean(focusNarrativeDomain && focusDomainGrounding.blocked); const rankedProblemUnits = rankProblemUnitsForAnswer(problemHeavyUnits, lifecycleAnswerEnabled, focusNarrativeDomain); const domainAlignedProblemUnits = focusNarrativeDomain === null ? rankedProblemUnits @@ -2384,7 +2874,7 @@ function composeAssistantAnswerV11(input) { const domainLockMissBase = Boolean(focusNarrativeDomain && rankedProblemUnits.length > 0 && domainAlignedProblemUnits.length === 0); - const domainLockMiss = domainLockMissBase || settlementGroundingBlocked; + const domainLockMiss = domainLockMissBase || focusDomainGroundingBlocked; const selectedProblemUnits = (focusNarrativeDomain === null ? rankedProblemUnits : domainAlignedProblemUnits).slice(0, 4); const claimEvidenceLinks = buildClaimEvidenceLinks(input.retrievalResults); const aggregateEvidenceConfidence = aggregateConfidence(input.retrievalResults, evidenceItems); @@ -2422,7 +2912,7 @@ function composeAssistantAnswerV11(input) { focusedStrong, policySignals }); - const guardedDecision = settlementGroundingBlocked && + const guardedDecision = focusDomainGroundingBlocked && decision.mode !== "out_of_scope" && decision.mode !== "route_mismatch" && decision.mode !== "backend_error" @@ -2437,7 +2927,9 @@ function composeAssistantAnswerV11(input) { policySignals.minimum_evidence_failed || limitationReasonCodes.includes("missing_mechanism") || limitationReasonCodes.includes("weak_source_mapping") || + limitationReasonCodes.includes("insufficient_detail") || aggregateEvidenceConfidence === "low" || + domainLockMiss || lowConfidenceConcentration; const hardBlockedMode = guardedDecision.mode === "out_of_scope" || guardedDecision.mode === "route_mismatch" || @@ -2468,7 +2960,11 @@ function composeAssistantAnswerV11(input) { }); const lifecycleModeActive = lifecycleAnswerEnabled && selectedProblemUnits.length > 0 && hasLifecycleResolution(selectedProblemUnits); return { - assistant_reply: renderPolicyReply(problemCentricStructure), + assistant_reply: renderPolicyReply(problemCentricStructure, { + questionType, + focusDomain: focusNarrativeDomain, + anchors: anchorUsage + }), fallback_type: guardedDecision.fallback_type, reply_type: guardedDecision.reply_type, answer_structure_v11: problemCentricStructure, @@ -2495,9 +2991,12 @@ function composeAssistantAnswerV11(input) { ...limitationReasonCodes.map((code) => limitationReasonToText(code)), ...extractLimitations(input.retrievalResults), ...input.groundingCheck.reasons, - ...(settlementGroundingBlocked + ...(focusDomainGroundingBlocked + ? ["Целевой механизм активного домена подтвержден частично; часть первичной опоры пришла из смежного контура."] + : []), + ...(anchorUsage.unused.length > 0 ? [ - `Primary settlement evidence is not confirmed; foreign domains dominate: ${settlementGrounding.foreign_primary_domains.join(", ") || "unknown"}.` + `Часть якорей запроса пока не подтверждена в опоре: ${anchorUsage.unused.slice(0, 5).join(", ")}.` ] : []), ...(policySignals.minimum_evidence_failed ? ["Minimum evidence gate failed for current scope."] : []), @@ -2511,11 +3010,18 @@ function composeAssistantAnswerV11(input) { ...(guardedDecision.mode === "clarification_required" && missingAnchors.account ? ["missing_anchor:account"] : []), ...(guardedDecision.mode === "clarification_required" && missingAnchors.documentOrObject ? ["missing_anchor:document_or_object"] : []), ...(guardedDecision.mode === "clarification_required" && missingAnchors.counterparty ? ["missing_anchor:counterparty"] : []), - ...(settlementGroundingBlocked ? ["settlement_primary_evidence_not_confirmed"] : []) + ...(focusDomainGroundingBlocked ? ["primary_domain_evidence_not_confirmed"] : []) ], 8); + const confidenceLimited = guardedDecision.mode !== "focused_grounded" || + limitationReasonCodes.includes("missing_mechanism") || + limitationReasonCodes.includes("heuristic_inference") || + limitationReasonCodes.includes("weak_source_mapping") || + limitationReasonCodes.includes("insufficient_detail") || + aggregateEvidenceConfidence === "low" || + focusDomainGroundingBlocked; const mechanismStatus = mechanismNotes.length === 0 ? "unresolved" - : limitationReasonCodes.includes("missing_mechanism") || limitationReasonCodes.includes("heuristic_inference") + : confidenceLimited ? "limited" : "grounded"; const answerStructure = { @@ -2524,7 +3030,8 @@ function composeAssistantAnswerV11(input) { direct_answer: buildDirectAnswer({ mode: guardedDecision.mode, retrievalResults: input.retrievalResults, - policySignals + policySignals, + focusDomain: focusNarrativeDomain }), mechanism_block: { status: mechanismStatus, @@ -2557,7 +3064,11 @@ function composeAssistantAnswerV11(input) { } }; return { - assistant_reply: renderPolicyReply(answerStructure), + assistant_reply: renderPolicyReply(answerStructure, { + questionType, + focusDomain: focusNarrativeDomain, + anchors: anchorUsage + }), fallback_type: guardedDecision.fallback_type, reply_type: guardedDecision.reply_type, answer_structure_v11: answerStructure, diff --git a/llm_normalizer/backend/dist/services/assistantDataLayer.js b/llm_normalizer/backend/dist/services/assistantDataLayer.js index 93a4e20..91929c7 100644 --- a/llm_normalizer/backend/dist/services/assistantDataLayer.js +++ b/llm_normalizer/backend/dist/services/assistantDataLayer.js @@ -30,6 +30,9 @@ const ACCOUNT_SPECIFIC_MARKERS = /(?:\u0441\u0447\u0435\u0442(?:\u0430|\u0443|\u const PERIOD_MARKERS = /\b20\d{2}(?:[-./](?:0[1-9]|1[0-2]))?\b/; const ENTITY_SPECIFIC_MARKERS = /(?:\u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442|supplier|buyer|\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442|invoice|posting|register|guid|id[:=\s])/iu; const EXACT_OBJECT_MARKERS = /(?:\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\s*(?:#|\u2116)|\bref\b|\bid\b|trx-\d+|inv-\d+)/iu; +const CONTRACT_MARKERS = /(?:\u0434\u043e\u0433\u043e\u0432\u043e\u0440(?:\u0430|\u0443|\u043e\u043c|\u0435)?\s*(?:№|#|n)\s*[a-z\u0430-\u044f0-9./_-]+)/iu; +const DOCUMENT_NUMBER_MARKERS = /(?:(?:\u0441\u0447(?:\u0435|\u0451)\u0442(?:-\u0444\u0430\u043a\u0442\u0443\u0440(?:\u0430|\u044b))?|\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446(?:\u0438\u044f|\u0438\u0438)|\u0430\u043a\u0442)\s*(?:№|#|n)\s*[a-z\u0430-\u044f0-9./_-]+)/iu; +const AMOUNT_MARKERS = /\b(?:\d{1,3}(?:[ \u00A0]\d{3})+(?:[.,]\d{2})?|\d+[.,]\d{2})\b/u; const ROUTE_MIN_EVIDENCE_GATE = { hybrid_store_plus_live: { min_evidence_items: 3, @@ -101,6 +104,9 @@ function detectBroadQuery(fragmentText, route) { const hasEntityAnchor = ENTITY_SPECIFIC_MARKERS.test(lower); const hasExactObjectAnchor = EXACT_OBJECT_MARKERS.test(lower); const hasGuidAnchor = extractGuids(lower).length > 0; + const hasContractAnchor = CONTRACT_MARKERS.test(lower); + const hasDocumentNumberAnchor = DOCUMENT_NUMBER_MARKERS.test(lower); + const hasAmountAnchor = AMOUNT_MARKERS.test(lower); let anchorScore = 0; if (hasGuidAnchor) anchorScore += 3; @@ -112,8 +118,17 @@ function detectBroadQuery(fragmentText, route) { anchorScore += 1; if (hasExactObjectAnchor) anchorScore += 1; + if (hasContractAnchor) + anchorScore += 2; + if (hasDocumentNumberAnchor) + anchorScore += 2; + if (hasAmountAnchor) + anchorScore += 1; const weakAnchors = anchorScore <= 1; - const strongFocus = hasGuidAnchor || (hasAccountAnchor && hasPeriodAnchor) || anchorScore >= 4; + const strongFocus = hasGuidAnchor || + (hasAccountAnchor && hasPeriodAnchor) || + (hasContractAnchor && hasDocumentNumberAnchor) || + anchorScore >= 4; const routeSensitiveBroad = route === "batch_refresh_then_store" || route === "hybrid_store_plus_live"; let broadnessLevel = "low"; if (hasGenericMarker && !strongFocus && (weakAnchors || routeSensitiveBroad)) { @@ -233,9 +248,7 @@ const P0_DOMAIN_CARDS = [ /\u0441\u0447[её]т.?фактур/i, /\u043a\u043d\u0438\u0433[аи]\s+\u043f\u043e\u043a\u0443\u043f/i, /\u043a\u043d\u0438\u0433[аи]\s+\u043f\u0440\u043e\u0434\u0430\u0436/i, - /\u0432\u044b\u0447\u0435\u0442/i, - /\b19\b/, - /\b68\b/ + /\u0432\u044b\u0447\u0435\u0442/i ] }, { @@ -251,19 +264,20 @@ const P0_DOMAIN_CARDS = [ expected_edges: ["document_to_posting", "deferred_expense_to_writeoff", "contract_to_documents"], forbidden_cross_domain_leakage: ["vat", "taxes", "bank", "settlements", "suppliers", "customers", "fixed_assets"], symptom_markers: [ - /\b20\b/, - /\b21\b/, - /\b23\b/, - /\b25\b/, - /\b26\b/, - /\b28\b/, - /\b29\b/, - /\b44\b/, /period\s*close/i, - /\u0437\u0430\u043a\u0440\u044b\u0442/i, + /month\s*close/i, + /close\s+period/i, + /закрыт[а-яё]*\s+период/i, + /close\s+operation/i, + /allocation/i, + /закр/i, + /перио/i, + /\u0437\u0430\u043a\u0440\u044b\u0442(?:\u0438|\u0438\u0435|\u044b|)\s*(?:\u043c\u0435\u0441\u044f\u0446|\u0441\u0447\u0435\u0442)/i, + /\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442/i, /\u0437\u0430\u0442\u0440\u0430\u0442/i, /\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b/i, - /\u043e\u0441\u0442\u0430\u0442\u043a/i + /\u0440\u0431\u043f/i, + /\u0430\u043c\u043e\u0440\u0442\u0438\u0437/i ] } ]; @@ -883,6 +897,26 @@ function extractAccountScopeFromText(text) { pushAccount(account); } } + const closePairPattern = /\b(?:20|21|23|25|26|28|29|44)\s*[-/]\s*(?:20|21|23|25|26|28|29|44)\b/g; + let closePairMatch = null; + while ((closePairMatch = closePairPattern.exec(lower)) !== null) { + const pair = closePairMatch[0]; + const pairAccounts = pair.match(/\b\d{2}(?:\.\d{1,2})?\b/g) ?? []; + for (const account of pairAccounts) { + pushAccount(account); + } + } + const suffixAnchorPattern = /\b(?:51|60|62|68|76|97)(?:\.\d{1,2})?(?:-(?:му|й|го|м|х))?\b/giu; + let suffixAnchorMatch = null; + while ((suffixAnchorMatch = suffixAnchorPattern.exec(lower)) !== null) { + const token = suffixAnchorMatch[0]; + const start = suffixAnchorMatch.index; + const end = start + token.length; + if (intersectsSpan(start, end, dateSpans)) { + continue; + } + pushAccount(token); + } const explicitPattern = /\b\d{2}(?:\.\d{1,2})?\b/g; let explicitMatch = null; const settlementLexicalAnchor = /(оплат|расчет|расч[её]т|аванс|долг|постав|покуп|settlement|payment|supplier|customer)/i.test(lower); @@ -1037,31 +1071,41 @@ function buildSemanticRetrievalProfile(fragmentText) { pushMany(entityTypes, ["counterparty", "contract", "document", "posting"]); pushMany(relationPatterns, ["payment_to_settlement", "statement_to_document", "document_to_posting"]); } - if (/постав|постав|supplier|vendor|60\b/i.test(lower)) { + const hasSettlementAccountScope = accountScope.some((item) => item === "51" || item === "60" || item === "62" || item === "76"); + const hasVatAccountScope = accountScope.some((item) => item === "19" || item === "68"); + const hasFixedAssetAccountScope = accountScope.some((item) => item === "01" || item === "02" || item === "08"); + const hasDeferredExpenseAccountScope = accountScope.some((item) => item === "97"); + const hasMonthCloseCostsAccountScope = accountScope.some((item) => CLOSE_COST_ACCOUNTS.includes(item)); + const hasExplicitMonthCloseLexicalMarker = /(?:закрыти[ея]\s+месяц|закрыт[а-яё]*\s+период|закрытие\s+счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых\s+результат|month\s*close|period\s*close|close\s+period|close\s+operation)/i.test(lower) || + (/закр/i.test(lower) && /перио/i.test(lower)); + if (/постав|постав|supplier|vendor/i.test(lower) || hasSettlementAccountScope) { pushMany(domainScope, ["suppliers", "settlements"]); pushMany(documentTypes, ["supplier_receipt", "settlement_document"]); pushMany(entityTypes, ["counterparty", "contract", "document", "posting"]); pushMany(relationPatterns, ["payment_to_settlement", "contract_to_documents"]); } - if (/покупат|покупат|customer|buyer|62\b/i.test(lower)) { + if (/покупат|покупат|customer|buyer/i.test(lower) || hasSettlementAccountScope) { pushMany(domainScope, ["customers", "settlements"]); pushMany(documentTypes, ["sales_document", "settlement_document"]); pushMany(entityTypes, ["counterparty", "contract", "document", "posting"]); pushMany(relationPatterns, ["payment_to_settlement", "contract_to_documents"]); } - if (/РЅРґСЃ|ндс|vat|РєРЅРёРіР° РїРѕРєСѓРїРѕРє|РєРЅРёРіР° продаж|счет.?фактур|книг[аи]\s+покуп|книг[аи]\s+продаж|сч[её]т.?фактур|19\b|68\b/i.test(lower)) { + if (/РЅРґСЃ|ндс|vat|РєРЅРёРіР° РїРѕРєСѓРїРѕРє|РєРЅРёРіР° продаж|счет.?фактур|книг[аи]\s+покуп|книг[аи]\s+продаж|сч[её]т.?фактур/i.test(lower) || + hasVatAccountScope) { pushMany(domainScope, ["vat", "taxes"]); pushMany(documentTypes, ["invoice", "vat_document"]); pushMany(entityTypes, ["document", "tax_entry", "posting"]); pushMany(relationPatterns, ["invoice_to_vat", "document_to_posting"]); } - if (/РѕСЃ|РѕСЃРЅРѕРІРЅ(ые|ых)\s+сред|(?:^|[^a-zа-яё])ос(?:$|[^a-zа-яё])|основн(ые|ых|ым)?\s+средств|fixed asset|amort|амортиз|амортиз|01\b|02\b|08\b/i.test(lower)) { + if (/РѕСЃ|РѕСЃРЅРѕРІРЅ(ые|ых)\s+сред|(?:^|[^a-zа-яё])ос(?:$|[^a-zа-яё])|основн(ые|ых|ым)?\s+средств|fixed asset|amort|амортиз|амортиз/i.test(lower) || + hasFixedAssetAccountScope) { pushMany(domainScope, ["fixed_assets"]); pushMany(documentTypes, ["fixed_asset_card", "fixed_asset_acceptance", "depreciation_document"]); pushMany(entityTypes, ["fixed_asset", "document", "posting"]); pushMany(relationPatterns, ["asset_card_to_depreciation", "document_to_posting"]); } - if (/СЂР±Рї|расходы будущих периодов|рбп|расходы\s+будущих\s+периодов|deferred|writeoff|97\b/i.test(lower)) { + if (/СЂР±Рї|расходы будущих периодов|рбп|расходы\s+будущих\s+периодов|deferred|writeoff/i.test(lower) || + hasDeferredExpenseAccountScope) { pushMany(domainScope, ["deferred_expense", "period_close"]); pushMany(documentTypes, ["deferred_expense_document", "period_close_document"]); pushMany(entityTypes, ["document", "posting"]); @@ -1084,7 +1128,7 @@ function buildSemanticRetrievalProfile(fragmentText) { pushMany(anomalyPatterns, ["repeated_anomaly"]); pushMany(rankingBasis, ["repeatability"]); } - if (/закрыт|закрытие|период|закрыт|закрытие|период|month close|period close|closure/i.test(lower)) { + if (hasExplicitMonthCloseLexicalMarker || hasMonthCloseCostsAccountScope || hasDeferredExpenseAccountScope) { pushMany(domainScope, ["period_close"]); pushMany(anomalyPatterns, ["closure_risk", "broken_lifecycle"]); pushMany(documentTypes, ["period_close_document"]); diff --git a/llm_normalizer/backend/dist/services/assistantService.js b/llm_normalizer/backend/dist/services/assistantService.js index 1f1a2b4..293ce3a 100644 --- a/llm_normalizer/backend/dist/services/assistantService.js +++ b/llm_normalizer/backend/dist/services/assistantService.js @@ -46,6 +46,8 @@ const assistantDataLayer_1 = __importStar(require("./assistantDataLayer")); const assistantSessionLogger_1 = __importStar(require("./assistantSessionLogger")); const investigationState_1 = __importStar(require("./investigationState")); const retrievalResultNormalizer_1 = __importStar(require("./retrievalResultNormalizer")); +const questionTypeResolver_1 = __importStar(require("./questionTypeResolver")); +const companyAnchorResolver_1 = __importStar(require("./companyAnchorResolver")); function retrievalSummaryForRoute(route) { if (route === "store_canonical") return "Canonical accounting data path selected."; @@ -870,6 +872,26 @@ function extractFollowupAccountAnchorsLoose(text) { } return Array.from(new Set(anchors)); } +function inferP0DomainFromMessage(text) { + const lower = String(text ?? "").toLowerCase(); + const accountTokens = extractAccountTokens(lower); + const hasVatAccount = accountTokens.some((token) => /^(?:19|68)(?:\.|$)/.test(token)); + const hasSettlementAccount = accountTokens.some((token) => /^(?:51|60|62|76)(?:\.|$)/.test(token)); + const hasMonthCloseAccount = accountTokens.some((token) => /^(?:97|2\d|3\d|4[0-4])(?:\.|$)/.test(token)); + const vatLexical = /(?:ндс|vat|счет[\s-]?фактур|сч[её]т[\s-]?фактур|книг[аи]\s+(?:покуп|продаж)|налогов)/i.test(lower); + const settlementLexical = /(?:долг|аванс|зач[её]т|взаимозач|расч[её]т|оплат|платеж|платёж|постав|покупател)/i.test(lower); + const monthCloseLexical = /(?:закрыти[ея]\s+месяц|закрытие счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых результат)/i.test(lower); + if (hasVatAccount || vatLexical) { + return "vat_document_register_book"; + } + if (monthCloseLexical || hasMonthCloseAccount) { + return "month_close_costs_20_44"; + } + if (hasSettlementAccount || settlementLexical) { + return "settlements_60_62"; + } + return null; +} function hasStrongFollowupAnchors(userMessage, state) { const explicitPeriod = extractNormalizedPeriodLiteral(userMessage); if (explicitPeriod && state.focus.period && explicitPeriod !== state.focus.period) { @@ -878,6 +900,14 @@ function hasStrongFollowupAnchors(userMessage, state) { return true; } } + const inferredDomain = inferP0DomainFromMessage(userMessage); + const activeDomain = compactWhitespace(state.followup_context?.active_domain ?? state.focus.domain ?? ""); + if (inferredDomain && activeDomain && inferredDomain !== activeDomain) { + const domainLooksLikeFollowupRefinement = hasFollowupMarker(userMessage) && hasReferentialPointer(userMessage); + if (!domainLooksLikeFollowupRefinement) { + return true; + } + } const explicitAccounts = extractAccountTokens(userMessage); const followupAccounts = explicitAccounts.length > 0 ? explicitAccounts : extractFollowupAccountAnchorsLoose(userMessage); if (followupAccounts.length > 0) { @@ -1193,6 +1223,8 @@ class AssistantService { const focusDomainHint = followupBinding.usage?.applied ? session.investigation_state?.followup_context?.active_domain ?? session.investigation_state?.focus.domain ?? null : null; + const questionTypeClass = (0, questionTypeResolver_1.resolveQuestionType)(userMessage); + const companyAnchors = (0, companyAnchorResolver_1.resolveCompanyAnchors)(userMessage); const composition = (0, answerComposer_1.composeAssistantAnswer)({ userMessage, routeSummary: normalized.route_hint_summary, @@ -1201,6 +1233,8 @@ class AssistantService { coverageReport: coverageEvaluation.coverage, groundingCheck, focusDomainHint, + questionTypeHint: questionTypeClass, + companyAnchors, enableAnswerPolicyV11: config_1.FEATURE_ASSISTANT_ANSWER_POLICY_V11, enableProblemCentricAnswerV1: config_1.FEATURE_ASSISTANT_PROBLEM_CENTRIC_ANSWER_V1, enableLifecycleAnswerV1: config_1.FEATURE_ASSISTANT_LIFECYCLE_ANSWER_V1 @@ -1251,6 +1285,8 @@ class AssistantService { retrieval_results: retrievalResults, answer_grounding_check: groundingCheck, dropped_intent_segments: extractDiscardedIntentSegments(normalized.normalized), + question_type_class: questionTypeClass, + company_anchors: companyAnchors, ...(followupBinding.usage ? { followup_state_usage: followupBinding.usage } : {}), problem_centric_answer_applied: composition.problem_centric_answer_applied ?? false, problem_units_used_count: composition.problem_units_used_count ?? 0, @@ -1314,6 +1350,8 @@ class AssistantService { route_subject_match: groundingCheck.route_subject_match, clarification_target: coverageEvaluation.coverage.clarification_needed_for, dropped_intent_segments: extractDiscardedIntentSegments(normalized.normalized), + question_type_class: questionTypeClass, + company_anchors: companyAnchors, ...(followupBinding.usage ? { followup_state_usage: followupBinding.usage } : {}), problem_centric_answer_applied: composition.problem_centric_answer_applied ?? false, problem_units_used_count: composition.problem_units_used_count ?? 0, diff --git a/llm_normalizer/backend/dist/services/companyAnchorResolver.js b/llm_normalizer/backend/dist/services/companyAnchorResolver.js new file mode 100644 index 0000000..12fbf49 --- /dev/null +++ b/llm_normalizer/backend/dist/services/companyAnchorResolver.js @@ -0,0 +1,151 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveCompanyAnchors = resolveCompanyAnchors; +const CONTRACT_PATTERN = /(?:\u0434\u043e\u0433\u043e\u0432\u043e\u0440(?:\u0430|\u0443|ом|е)?\s*(?:№|#|n)?\s*([a-zа-я0-9./_-]+))/giu; +const DOCUMENT_NUMBER_PATTERN = /(?:(?:\u0441\u0447(?:\u0435|\u0451)\u0442(?:-\u0444\u0430\u043a\u0442\u0443\u0440(?:а|ы))?|\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446(?:ия|ии)|\u0430\u043a\u0442)\s*(?:№|#|n)\s*([a-zа-я0-9./_-]+))/giu; +const DATE_PATTERN = /\b(?:\d{1,2}[./]\d{1,2}[./]\d{2,4}|\d{1,2}\s+(?:\u044f\u043d\u0432\u0430\u0440\u044f|\u0444\u0435\u0432\u0440\u0430\u043b\u044f|\u043c\u0430\u0440\u0442\u0430|\u0430\u043f\u0440\u0435\u043b\u044f|\u043c\u0430\u044f|\u0438\u044e\u043d\u044f|\u0438\u044e\u043b\u044f|\u0430\u0432\u0433\u0443\u0441\u0442\u0430|\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f|\u043e\u043a\u0442\u044f\u0431\u0440\u044f|\u043d\u043e\u044f\u0431\u0440\u044f|\u0434\u0435\u043a\u0430\u0431\u0440\u044f))\b/giu; +const AMOUNT_PATTERN = /\b(?:\d{1,3}(?:[ \u00A0]\d{3})+(?:[.,]\d{2})?|\d+[.,]\d{2})\b/gu; +const CONTEXTUAL_ACCOUNT_PATTERN = /(?:\b(?:\u0441\u0447(?:\u0435|\u0451)\u0442(?:а|у|ом|ов)?|account|schet)\b\s*(?:№|#|:)?\s*)(\d{2}(?:\.\d{2})?)/giu; +const ACCOUNT_PAIR_PATTERN = /\b(\d{2}\.\d{2})\s*\/\s*(\d{2}\.\d{2})\b/gu; +const PERIOD_PATTERN = /\b(?:20\d{2}(?:[-./](?:0?[1-9]|1[0-2]))?|(?:\u0438\u044e\u043b\u044c|\u0438\u044e\u043d\u044c|\u0430\u0432\u0433\u0443\u0441\u0442|\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c|\u043e\u043a\u0442\u044f\u0431\u0440\u044c|\u043d\u043e\u044f\u0431\u0440\u044c|\u0434\u0435\u043a\u0430\u0431\u0440\u044c|\u044f\u043d\u0432\u0430\u0440\u044c|\u0444\u0435\u0432\u0440\u0430\u043b\u044c|\u043c\u0430\u0440\u0442|\u0430\u043f\u0440\u0435\u043b\u044c|\u043c\u0430\u0439)\s+20\d{2})\b/giu; +const DOCUMENT_TYPE_PATTERNS = [ + { name: "invoice", pattern: /\b(?:\u0441\u0447(?:\u0435|\u0451)\u0442-\u0444\u0430\u043a\u0442\u0443\u0440|invoice)\b/iu }, + { name: "realization", pattern: /\b(?:\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446|realization)\b/iu }, + { name: "payment", pattern: /\b(?:\u043e\u043f\u043b\u0430\u0442|payment|\u043f\u043b\u0430\u0442\u0435\u0436)\b/iu }, + { name: "receipt", pattern: /\b(?:\u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d|receipt)\b/iu }, + { name: "close", pattern: /\b(?:\u0437\u0430\u043a\u0440\u044b\u0442\u0438|\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442)\b/iu }, + { name: "rbp_writeoff", pattern: /\b(?:\u0440\u0431\u043f|\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435)\b/iu }, + { name: "amortization", pattern: /\b(?:\u0430\u043c\u043e\u0440\u0442\u0438\u0437|amortization)\b/iu } +]; +const KNOWN_ACCOUNT_PREFIXES = new Set([ + "01", + "02", + "07", + "08", + "10", + "13", + "19", + "20", + "21", + "23", + "25", + "26", + "41", + "43", + "44", + "45", + "50", + "51", + "52", + "55", + "57", + "58", + "60", + "62", + "66", + "67", + "68", + "69", + "70", + "71", + "73", + "76", + "90", + "91", + "94", + "96", + "97" +]); +function uniqueStrings(values, limit = 48) { + return Array.from(new Set(values.map((item) => String(item ?? "").trim()).filter(Boolean))).slice(0, limit); +} +function normalizeAnchorToken(value) { + return String(value ?? "") + .replace(/\s+/g, " ") + .trim(); +} +function collectMatches(text, pattern, useCaptures = true) { + const values = []; + pattern.lastIndex = 0; + for (const match of text.matchAll(pattern)) { + if (!match) + continue; + if (useCaptures && match.length > 1) { + for (let i = 1; i < match.length; i += 1) { + const token = normalizeAnchorToken(match[i] ?? ""); + if (token) + values.push(token); + } + continue; + } + const token = normalizeAnchorToken(match[0] ?? ""); + if (token) + values.push(token); + } + return uniqueStrings(values); +} +function isKnownAccount(value) { + const token = String(value ?? "").trim(); + const match = token.match(/^(\d{2})/); + if (!match) { + return false; + } + return KNOWN_ACCOUNT_PREFIXES.has(match[1]); +} +function collectAccountAnchors(text) { + const tokens = new Set(); + for (const token of collectMatches(text, CONTEXTUAL_ACCOUNT_PATTERN, true)) { + if (isKnownAccount(token)) { + tokens.add(token); + } + } + ACCOUNT_PAIR_PATTERN.lastIndex = 0; + for (const match of text.matchAll(ACCOUNT_PAIR_PATTERN)) { + const left = normalizeAnchorToken(match[1] ?? ""); + const right = normalizeAnchorToken(match[2] ?? ""); + if (left && isKnownAccount(left)) { + tokens.add(left); + } + if (right && isKnownAccount(right)) { + tokens.add(right); + } + } + return Array.from(tokens).slice(0, 24); +} +function collectDocumentTypeAnchors(text) { + return uniqueStrings(DOCUMENT_TYPE_PATTERNS.filter((entry) => entry.pattern.test(text)).map((entry) => entry.name), 12); +} +function flattenAnchors(input) { + return uniqueStrings([ + ...input.contract_numbers, + ...input.document_numbers, + ...input.dates, + ...input.amounts, + ...input.accounts.map((item) => `account:${item}`), + ...input.periods.map((item) => `period:${item}`), + ...input.document_types.map((item) => `doc_type:${item}`) + ], 64); +} +function resolveCompanyAnchors(input) { + const text = String(input ?? ""); + const contractNumbers = collectMatches(text, CONTRACT_PATTERN, true).map((item) => `\u0434\u043e\u0433\u043e\u0432\u043e\u0440 № ${item}`); + const documentNumbers = collectMatches(text, DOCUMENT_NUMBER_PATTERN, true).map((item) => `\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 № ${item}`); + const dates = collectMatches(text, DATE_PATTERN, false); + const amounts = collectMatches(text, AMOUNT_PATTERN, false); + const accounts = collectAccountAnchors(text); + const periods = collectMatches(text, PERIOD_PATTERN, false); + const documentTypes = collectDocumentTypeAnchors(text); + const resultBase = { + contract_numbers: uniqueStrings(contractNumbers, 12), + document_numbers: uniqueStrings(documentNumbers, 16), + dates: uniqueStrings(dates, 16), + amounts: uniqueStrings(amounts, 16), + accounts: uniqueStrings(accounts, 24), + periods: uniqueStrings(periods, 12), + document_types: documentTypes + }; + return { + ...resultBase, + all: flattenAnchors(resultBase) + }; +} diff --git a/llm_normalizer/backend/dist/services/lifecycleRuntime.js b/llm_normalizer/backend/dist/services/lifecycleRuntime.js index 4547eed..360f80d 100644 --- a/llm_normalizer/backend/dist/services/lifecycleRuntime.js +++ b/llm_normalizer/backend/dist/services/lifecycleRuntime.js @@ -595,8 +595,13 @@ function inferLifecycleDomain(input) { ] .join(" ") .toLowerCase(); + const hasExplicitVatHint = includesAny(unitTokens, [/domain_hint:vat_flow/]); + const hasExplicitDeferredHint = includesAny(unitTokens, [/domain_hint:deferred_expense/]); + const hasExplicitFixedAssetHint = includesAny(unitTokens, [/domain_hint:fixed_asset/]); + const hasExplicitPeriodCloseHint = includesAny(unitTokens, [/domain_hint:period_close/]); + const hasCustomerSettlementHint = includesAny(unitTokens, [/domain_hint:customer_settlement/]); + const hasBankSettlementHint = includesAny(unitTokens, [/domain_hint:bank_settlement/]); const hasVatMarkers = includesAny(unitTokens, [ - /domain_hint:vat_flow/, /\binvoice_to_vat\b/, /\bvat_chain_conflict\b/, /(^|[^a-z0-9])nds([^a-z0-9]|$)/, @@ -605,7 +610,6 @@ function inferLifecycleDomain(input) { /\baccount[_:\s-]?(19|68)\b/ ]); const hasDeferredMarkers = includesAny(unitTokens, [ - /domain_hint:deferred_expense/, /\bdeferred(?:_expense)?\b/, /\bdeferred_expense_to_writeoff\b/, /\bwriteoff\b/, @@ -614,7 +618,6 @@ function inferLifecycleDomain(input) { /\baccount[_:\s-]?97\b/ ]); const hasFixedAssetMarkers = includesAny(unitTokens, [ - /domain_hint:fixed_asset/, /\bfixed[_\s-]?asset(?:s)?\b/, /\basset_card_to_depreciation\b/, /\bdepreciation(?:_active)?\b/, @@ -623,7 +626,6 @@ function inferLifecycleDomain(input) { /\baccount[_:\s-]?(01|02|08)\b/ ]); const hasPeriodCloseMarkers = includesAny(unitTokens, [ - /domain_hint:period_close/, /\bperiod[_\s-]?close\b/, /\bperiod_close_risk\b/, /\bclose[_\s-]?risk\b/, @@ -632,6 +634,24 @@ function inferLifecycleDomain(input) { /\bmonth[_\s-]?close\b/, /\bperiod_risk\b/ ]); + if (hasExplicitDeferredHint) { + return "deferred_expense"; + } + if (hasExplicitFixedAssetHint) { + return "fixed_asset"; + } + if (hasExplicitVatHint) { + return "vat_flow"; + } + if (hasExplicitPeriodCloseHint) { + return "period_close"; + } + if (hasCustomerSettlementHint) { + return "customer_settlement"; + } + if (hasBankSettlementHint) { + return "bank_settlement"; + } if (hasDeferredMarkers) { return "deferred_expense"; } diff --git a/llm_normalizer/backend/dist/services/problemUnitAssembler.js b/llm_normalizer/backend/dist/services/problemUnitAssembler.js index 7481bc1..2c3715a 100644 --- a/llm_normalizer/backend/dist/services/problemUnitAssembler.js +++ b/llm_normalizer/backend/dist/services/problemUnitAssembler.js @@ -67,11 +67,59 @@ function stringArrayFromUnknown(value) { function stringArrayFromPayload(item, key) { return stringArrayFromUnknown(item.payload[key]); } +function domainHintsFromSummary(summary) { + const hints = []; + const purityGuard = toObject(summary.domain_purity_guard); + const domainCardId = String(purityGuard?.domain_card_id ?? "").trim(); + if (domainCardId === "settlements_60_62") { + return ["bank_settlement", "customer_settlement"]; + } + if (domainCardId === "vat_document_register_book") { + return ["vat_flow"]; + } + if (domainCardId === "month_close_costs_20_44") { + return ["period_close"]; + } + const semanticProfile = toObject(summary.semantic_profile); + const domainScope = stringArrayFromUnknown(semanticProfile?.domain_scope); + for (const domain of domainScope) { + const normalized = domain.toLowerCase(); + if (normalized === "bank" || + normalized === "settlements" || + normalized === "suppliers" || + normalized === "supplier_payments" || + normalized === "other_settlements") { + hints.push("bank_settlement"); + continue; + } + if (normalized === "customers") { + hints.push("customer_settlement"); + continue; + } + if (normalized === "vat" || normalized === "taxes") { + hints.push("vat_flow"); + continue; + } + if (normalized === "period_close") { + hints.push("period_close"); + continue; + } + if (normalized === "deferred_expense") { + hints.push("deferred_expense"); + continue; + } + if (normalized === "fixed_assets") { + hints.push("fixed_asset"); + } + } + return uniqueStrings(hints); +} function extractSemanticProfile(summary) { const semanticProfile = toObject(summary.semantic_profile); + const domainHints = domainHintsFromSummary(summary).map((item) => `domain_hint:${item}`); return { - relation_patterns: stringArrayFromUnknown(semanticProfile?.relation_patterns), - anomaly_patterns: stringArrayFromUnknown(semanticProfile?.anomaly_patterns) + relation_patterns: uniqueStrings([...stringArrayFromUnknown(semanticProfile?.relation_patterns), ...domainHints]), + anomaly_patterns: uniqueStrings([...stringArrayFromUnknown(semanticProfile?.anomaly_patterns), ...domainHints]) }; } function resolveEntityOverlay(item, rawEntities) { diff --git a/llm_normalizer/backend/dist/services/questionTypeResolver.js b/llm_normalizer/backend/dist/services/questionTypeResolver.js new file mode 100644 index 0000000..5d4b335 --- /dev/null +++ b/llm_normalizer/backend/dist/services/questionTypeResolver.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveQuestionType = resolveQuestionType; +const QUESTION_TYPE_RULES = [ + { + type: "what_to_check_first", + pattern: /(?:\bwhat\s+to\s+check\s+first\b|\bfirst\s+check\b|\bcheck\s+first\b|\u0441\s+\u0447\u0435\u0433\u043e\s+\u043d\u0430\u0447\u0430\u0442\u044c\s+\u043f\u0440\u043e\u0432\u0435\u0440\u043a|\u0447\u0442\u043e\s+\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\s+\u043f\u0435\u0440\u0432)/iu + }, + { + type: "what_is_it_grounded_on", + pattern: /(?:\bwhat\s+is\s+it\s+grounded\s+on\b|\bgrounded\s+on\b|\bbased\s+on\b|\bwhat\s+evidence\b|\u043d\u0430\s+\u0447(?:\u0435|\u0451)\u043c\s+\u044d\u0442\u043e\s+\u043e\u0441\u043d\u043e\u0432\u0430\u043d|\u0447\u0435\u043c\s+\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434)/iu + }, + { + type: "prove_or_guess", + pattern: /(?:\bprove\b|\bguess\b|\bprove\s+or\s+guess\b|\bis\s+it\s+proven\b|\u044d\u0442\u043e\s+\u0434\u043e\u043a\u0430\u0437\u0430\u043d|\u0438\u043b\u0438\s+\u0442\u043e\u043b\u044c\u043a\u043e\s+\u0433\u0438\u043f\u043e\u0442\u0435\u0437|\u0434\u043e\u043a\u0430\u0437\u0430\u043d|\u0434\u043e\u0433\u0430\u0434|\u0435\u0441\u0442\u044c\s+\u043b\u0438|\u043c\u043e\u0436\u0435\u0442\s+\u043b\u0438|\u044d\u0442\u043e\s+\u0443\u0436\u0435.*\u0438\u043b\u0438)/iu + }, + { + type: "which_chains_are_complete_vs_incomplete", + pattern: /(?:\bcomplete(?:d)?\b.*\bincomplete\b|\bwhich\s+chains?\b|\bcomplete\s+vs\s+incomplete\b|\u043a\u0430\u043a\u0438\u0435\s+\u0446\u0435\u043f\u043e\u0447\u043a[аи]\s+.*\u0437\u0430\u0432\u0435\u0440\u0448|\u0447\u0442\u043e\s+\u0437\u0430\u043a\u0440\u044b\u0442\u043e.*\u0447\u0442\u043e\s+\u043d\u0435\u0442)/iu + }, + { + type: "where_break_is", + pattern: /(?:\bwhere\s+is\s+the\s+break\b|\bwhere\s+exactly\b|\blocate\b|\u0433\u0434\u0435\s+\u0438\u043c\u0435\u043d\u043d\u043e|\u0433\u0434\u0435\s+\u0440\u0430\u0437\u0440\u044b\u0432|\u0432\s+\u043a\u0430\u043a\u043e\u043c\s+\u043c\u0435\u0441\u0442\u0435)/iu + }, + { + type: "why_breaks", + pattern: /(?:\bwhy\b|\bwhy\s+does\s+it\s+break\b|\u043f\u043e\u0447\u0435\u043c\u0443|\u0432\s+\u0447(?:\u0435|\u0451)\u043c\s+\u043f\u0440\u0438\u0447\u0438\u043d\u0430|\u0438\u0437-\u0437\u0430\s+\u0447\u0435\u0433\u043e)/iu + } +]; +function resolveQuestionType(input) { + const text = String(input ?? "").trim(); + if (!text) { + return "unknown"; + } + for (const rule of QUESTION_TYPE_RULES) { + if (rule.pattern.test(text)) { + return rule.type; + } + } + if (/[??]/u.test(text)) { + return "why_breaks"; + } + return "unknown"; +} diff --git a/llm_normalizer/backend/scripts/analyzeWave13Chat20.js b/llm_normalizer/backend/scripts/analyzeWave13Chat20.js new file mode 100644 index 0000000..beb723d --- /dev/null +++ b/llm_normalizer/backend/scripts/analyzeWave13Chat20.js @@ -0,0 +1,614 @@ +#!/usr/bin/env node + +const fs = require("node:fs"); +const path = require("node:path"); + +const EXPECTED_QUESTION_TYPES = [ + "why_breaks", + "prove_or_guess", + "prove_or_guess", + "why_breaks", + "where_break_is", + "prove_or_guess", + "why_breaks", + "which_chains_are_complete_vs_incomplete", + "which_chains_are_complete_vs_incomplete", + "prove_or_guess", + "why_breaks", + "prove_or_guess", + "why_breaks", + "what_is_it_grounded_on", + "why_breaks", + "which_chains_are_complete_vs_incomplete", + "prove_or_guess", + "what_is_it_grounded_on", + "why_breaks", + "prove_or_guess" +]; + +function parseArgs(argv) { + const args = { + rawFile: "", + outputDir: "", + caseMatrixFile: "wave13_chat20_case_matrix_updated.md", + metricsFile: "wave13_chat20_metrics.json", + reportFile: "wave13_regression_report.md", + baselineMetricsFile: "" + }; + + for (let i = 0; i < argv.length; i += 1) { + const token = argv[i]; + if (token === "--raw-file") { + args.rawFile = String(argv[i + 1] ?? ""); + i += 1; + continue; + } + if (token === "--output-dir") { + args.outputDir = String(argv[i + 1] ?? ""); + i += 1; + continue; + } + if (token === "--case-matrix-file") { + args.caseMatrixFile = String(argv[i + 1] ?? args.caseMatrixFile); + i += 1; + continue; + } + if (token === "--metrics-file") { + args.metricsFile = String(argv[i + 1] ?? args.metricsFile); + i += 1; + continue; + } + if (token === "--report-file") { + args.reportFile = String(argv[i + 1] ?? args.reportFile); + i += 1; + continue; + } + if (token === "--baseline-metrics-file") { + args.baselineMetricsFile = String(argv[i + 1] ?? ""); + i += 1; + } + } + + return args; +} + +function ensureDir(dirPath) { + fs.mkdirSync(dirPath, { recursive: true }); +} + +function readJson(filePath) { + const raw = fs.readFileSync(filePath, "utf8").replace(/^\uFEFF/, ""); + return JSON.parse(raw); +} + +function writeUtf8Bom(filePath, content) { + ensureDir(path.dirname(filePath)); + fs.writeFileSync(filePath, `\uFEFF${content}`, "utf8"); +} + +function text(value) { + return value == null ? "" : String(value); +} + +function lower(value) { + return text(value).toLowerCase(); +} + +function expectedDomainByIndex(index) { + const caseNo = index + 1; + if (caseNo <= 8) { + return "settlements_60_62"; + } + if (caseNo <= 16) { + return "vat_document_register_book"; + } + return "month_close_costs_20_44"; +} + +function normalizeInternalDomain(domainName) { + const d = lower(domainName); + if (!d) { + return "unknown"; + } + if ( + d.includes("settlement") || + d.includes("supplier") || + d.includes("customer") || + d.includes("bank") + ) { + return "settlements_60_62"; + } + if (d.includes("vat") || d.includes("nds")) { + return "vat_document_register_book"; + } + if ( + d.includes("period_close") || + d.includes("month_close") || + d.includes("deferred_expense") || + d.includes("fixed_asset") || + d.includes("close") + ) { + return "month_close_costs_20_44"; + } + return "unknown"; +} + +function mergeCountMap(target, source) { + if (!source || typeof source !== "object") { + return; + } + for (const [key, value] of Object.entries(source)) { + const name = text(key); + if (!name) { + continue; + } + const count = Number(value) || 0; + if (!target[name]) { + target[name] = 0; + } + target[name] += count > 0 ? count : 1; + } +} + +function collectDomainScores(row) { + const scores = {}; + const retrieval = Array.isArray(row?.debug?.retrieval_results) ? row.debug.retrieval_results : []; + for (const item of retrieval) { + mergeCountMap(scores, item?.problem_unit_summary?.lifecycle_domain_distribution); + mergeCountMap(scores, item?.problem_unit_summary?.graph_summary?.domain_distribution); + const domainCard = text(item?.summary?.domain_purity_guard?.domain_card_id); + if (domainCard) { + if (!scores[domainCard]) { + scores[domainCard] = 0; + } + scores[domainCard] += 2; + } + const resultItems = Array.isArray(item?.items) ? item.items : []; + for (const resultItem of resultItems) { + const scopes = Array.isArray(resultItem?.graph_domain_scope) ? resultItem.graph_domain_scope : []; + for (const scope of scopes) { + const name = text(scope); + if (!name) { + continue; + } + if (!scores[name]) { + scores[name] = 0; + } + scores[name] += 1; + } + } + } + const activeDomain = text(row?.debug?.investigation_state_snapshot?.focus?.active_domain); + if (activeDomain) { + if (!scores[activeDomain]) { + scores[activeDomain] = 0; + } + scores[activeDomain] += 1; + } + return scores; +} + +function pickActualDomain(row) { + const scores = collectDomainScores(row); + const sorted = Object.entries(scores).sort((a, b) => { + if (b[1] !== a[1]) { + return b[1] - a[1]; + } + return String(a[0]).localeCompare(String(b[0])); + }); + if (!sorted.length) { + return "unknown"; + } + return normalizeInternalDomain(sorted[0][0]); +} + +function pickActualQuestionType(row) { + const qType = text(row?.debug?.question_type_class); + return qType || "unknown"; +} + +function extractCompanyAnchors(row) { + const all = row?.debug?.company_anchors?.all; + if (!Array.isArray(all)) { + return []; + } + return all.map((v) => text(v).trim()).filter(Boolean); +} + +function hasAnchorUsageInAnswer(row, anchors) { + if (!anchors.length) { + return false; + } + const reply = lower(row?.assistant_reply); + if (!reply) { + return false; + } + if (reply.includes("в опоре использованы якоря вопроса")) { + return true; + } + for (const anchor of anchors) { + const value = lower(anchor); + if (value.length < 3) { + continue; + } + if (reply.includes(value)) { + return true; + } + } + return false; +} + +function evaluateEvidenceStrength(row) { + const status = lower(row?.debug?.answer_grounding_check?.status); + if (status === "grounded") { + return "strong"; + } + if (status === "partial") { + return "weak"; + } + if (status === "no_grounded_answer") { + return "none"; + } + return "limited"; +} + +function evaluateConfidenceStyle(row) { + const reply = lower(row?.assistant_reply); + if (!reply) { + return "unknown"; + } + const hasLimitation = + reply.includes("ограничени") || + reply.includes("частично") || + reply.includes("низкая") || + reply.includes("не подтвержден"); + const hasConfident = + reply.includes("подтверждено") || + reply.includes("доказ") || + reply.includes("подтверждается"); + if (hasLimitation && hasConfident) { + return "mixed"; + } + if (hasLimitation) { + return "limited"; + } + if (hasConfident) { + return "confident"; + } + return "neutral"; +} + +function containsAny(textValue, needles) { + const body = lower(textValue); + return needles.some((needle) => body.includes(lower(needle))); +} + +function evaluateFirstCheckRelevance(row, expectedDomain) { + const reply = text(row?.assistant_reply); + if (!reply) { + return false; + } + if (expectedDomain === "settlements_60_62") { + return containsAny(reply, [ + "договор", + "объект расчет", + "регистр расчет", + "зачет аванс", + "взаимозачет", + "60/62/76" + ]); + } + if (expectedDomain === "vat_document_register_book") { + return containsAny(reply, [ + "ндс", + "счет-фактур", + "книга покуп", + "книга продаж", + "регистр", + "19" + ]); + } + if (expectedDomain === "month_close_costs_20_44") { + return containsAny(reply, [ + "закрыти", + "рбп", + "амортизац", + "косвен", + "20", + "25", + "26", + "44" + ]); + } + return false; +} + +function evaluateGenericAnswer(row) { + const reply = lower(row?.assistant_reply); + if (!reply) { + return true; + } + const genericPatterns = [ + "коротко: проблема с закрытием расчета подтверждается частично", + "сигнал проблемы есть, но механизм подтвержден не полностью", + "вывод сделан по snapshot", + "проверьте договор, объект расчетов, регистр расчетов", + "проверьте договор и объект расчетов" + ]; + const hits = genericPatterns.filter((pattern) => reply.includes(pattern)).length; + return hits >= 2; +} + +function shortQuestion(value, maxLength = 130) { + const q = text(value).replace(/\s+/g, " ").trim(); + if (q.length <= maxLength) { + return q; + } + return `${q.slice(0, maxLength - 3)}...`; +} + +function toPercent(value) { + return Number(value.toFixed(4)); +} + +function buildCaseRow(index, row) { + const expectedDomain = expectedDomainByIndex(index); + const actualDomain = pickActualDomain(row); + const expectedQuestionType = EXPECTED_QUESTION_TYPES[index] || "unknown"; + const actualQuestionType = pickActualQuestionType(row); + const anchors = extractCompanyAnchors(row); + const anchorsPresent = anchors.length > 0; + const anchorsUsed = hasAnchorUsageInAnswer(row, anchors); + const evidenceStrength = evaluateEvidenceStrength(row); + const confidenceStyle = evaluateConfidenceStyle(row); + const firstCheckRelevant = evaluateFirstCheckRelevance(row, expectedDomain); + const genericAnswer = evaluateGenericAnswer(row); + + const reasons = []; + if (actualDomain !== expectedDomain) { + reasons.push("wrong_domain"); + } + if (actualQuestionType !== expectedQuestionType) { + reasons.push("wrong_question_type"); + } + if (anchorsPresent && !anchorsUsed) { + reasons.push("weak_company_anchor_usage"); + } + if (!firstCheckRelevant) { + reasons.push("wrong_first_check"); + } + if (genericAnswer) { + reasons.push("generic_answer"); + } + + let verdict = "PASS"; + if (reasons.length > 0) { + const hardFail = reasons.includes("wrong_domain") || reasons.includes("wrong_first_check"); + verdict = hardFail || reasons.length >= 3 ? "FAIL" : "SOFT_PASS"; + } + + return { + case_id: text(row?.case_id) || `q${String(index + 1).padStart(2, "0")}`, + question_short: shortQuestion(row?.user_message), + expected_domain: expectedDomain, + actual_domain: actualDomain, + expected_question_type: expectedQuestionType, + actual_question_type: actualQuestionType, + company_anchors_present: anchorsPresent, + company_anchors_used_in_answer: anchorsUsed, + evidence_strength: evidenceStrength, + answer_confidence_style: confidenceStyle, + first_check_relevance: firstCheckRelevant, + verdict, + failure_reason_short: reasons.length ? reasons.join(", ") : "none", + is_generic_answer: genericAnswer, + failure_reasons: reasons + }; +} + +function markdownCell(value) { + return text(value).replace(/\|/g, "\\|"); +} + +function buildCaseMatrixMarkdown(rows) { + const lines = []; + lines.push("# Wave 13 Chat20 Case Matrix (Updated)"); + lines.push(""); + lines.push("| case_id | question_short | expected_domain | actual_domain | expected_question_type | actual_question_type | company_anchors_present | company_anchors_used_in_answer | evidence_strength | answer_confidence_style | first_check_relevance | verdict | failure_reason_short |"); + lines.push("|---|---|---|---|---|---|---|---|---|---|---|---|---|"); + for (const row of rows) { + lines.push( + `| ${markdownCell(row.case_id)} | ${markdownCell(row.question_short)} | ${markdownCell(row.expected_domain)} | ${markdownCell(row.actual_domain)} | ${markdownCell(row.expected_question_type)} | ${markdownCell(row.actual_question_type)} | ${markdownCell(row.company_anchors_present)} | ${markdownCell(row.company_anchors_used_in_answer)} | ${markdownCell(row.evidence_strength)} | ${markdownCell(row.answer_confidence_style)} | ${markdownCell(row.first_check_relevance)} | ${markdownCell(row.verdict)} | ${markdownCell(row.failure_reason_short)} |` + ); + } + lines.push(""); + return `${lines.join("\n")}\n`; +} + +function countBy(rows, selector) { + const result = {}; + for (const row of rows) { + const key = selector(row); + if (!result[key]) { + result[key] = 0; + } + result[key] += 1; + } + return result; +} + +function buildRegressionReport(rows, metrics, baselineMetrics) { + const lines = []; + lines.push("# Wave 13 Regression Report"); + lines.push(""); + lines.push(`- Cases: ${rows.length}`); + lines.push(`- PASS: ${metrics.totals.pass}`); + lines.push(`- SOFT_PASS: ${metrics.totals.soft_pass}`); + lines.push(`- FAIL: ${metrics.totals.fail}`); + lines.push(""); + lines.push("## Metric Snapshot"); + lines.push(`- domain_correctness_rate: ${metrics.domain_correctness_rate}`); + lines.push(`- question_type_fit_rate: ${metrics.question_type_fit_rate}`); + lines.push(`- company_anchor_usage_rate: ${metrics.company_anchor_usage_rate}`); + lines.push(`- generic_answer_rate: ${metrics.generic_answer_rate}`); + lines.push(`- first_check_relevance_rate: ${metrics.first_check_relevance_rate}`); + lines.push(""); + if (baselineMetrics) { + lines.push("## Delta vs Baseline"); + for (const key of [ + "domain_correctness_rate", + "question_type_fit_rate", + "company_anchor_usage_rate", + "generic_answer_rate", + "first_check_relevance_rate" + ]) { + const current = Number(metrics[key] ?? 0); + const baseline = Number(baselineMetrics[key] ?? 0); + const delta = Number((current - baseline).toFixed(4)); + lines.push(`- ${key}: ${baseline} -> ${current} (delta ${delta >= 0 ? "+" : ""}${delta})`); + } + lines.push(""); + } + + const failures = rows.filter((row) => row.verdict !== "PASS"); + const reasonCounts = {}; + for (const row of failures) { + for (const reason of row.failure_reasons) { + if (!reasonCounts[reason]) { + reasonCounts[reason] = 0; + } + reasonCounts[reason] += 1; + } + } + const topReasons = Object.entries(reasonCounts).sort((a, b) => b[1] - a[1]).slice(0, 5); + lines.push("## Top Defects"); + if (!topReasons.length) { + lines.push("- No defects detected."); + } else { + for (const [reason, count] of topReasons) { + lines.push(`- ${reason}: ${count}`); + } + } + lines.push(""); + + lines.push("## FAIL Cases"); + for (const row of rows.filter((item) => item.verdict === "FAIL")) { + lines.push(`- ${row.case_id}: ${row.failure_reason_short}`); + } + lines.push(""); + + return `${lines.join("\n")}\n`; +} + +async function main() { + const args = parseArgs(process.argv.slice(2)); + if (!args.rawFile) { + throw new Error("Missing required argument --raw-file"); + } + if (!args.outputDir) { + throw new Error("Missing required argument --output-dir"); + } + + const rawPath = path.resolve(args.rawFile); + const outputDir = path.resolve(args.outputDir); + + const raw = readJson(rawPath); + const rows = Array.isArray(raw?.rows) ? raw.rows : []; + if (rows.length === 0) { + throw new Error("Raw file contains no rows."); + } + + const caseRows = rows.map((row, index) => buildCaseRow(index, row)); + const totalsByVerdict = countBy(caseRows, (row) => row.verdict); + const domainCorrect = caseRows.filter((row) => row.expected_domain === row.actual_domain).length; + const qTypeFit = caseRows.filter((row) => row.expected_question_type === row.actual_question_type).length; + const anchorsPresentCount = caseRows.filter((row) => row.company_anchors_present).length; + const anchorsUsedCount = caseRows.filter( + (row) => row.company_anchors_present && row.company_anchors_used_in_answer + ).length; + const genericCount = caseRows.filter((row) => row.is_generic_answer).length; + const firstCheckRelevantCount = caseRows.filter((row) => row.first_check_relevance).length; + + const metrics = { + schema_version: "wave13_chat20_metrics_v2", + run_id: path.basename(outputDir), + source_session_id: text(raw?.session_id), + totals: { + cases: caseRows.length, + pass: totalsByVerdict.PASS || 0, + soft_pass: totalsByVerdict.SOFT_PASS || 0, + fail: totalsByVerdict.FAIL || 0 + }, + domain_correctness_rate: toPercent(domainCorrect / caseRows.length), + question_type_fit_rate: toPercent(qTypeFit / caseRows.length), + company_anchor_usage_rate: toPercent( + anchorsPresentCount > 0 ? anchorsUsedCount / anchorsPresentCount : 0 + ), + company_anchor_usage_rate_global: toPercent(anchorsUsedCount / caseRows.length), + generic_answer_rate: toPercent(genericCount / caseRows.length), + first_check_relevance_rate: toPercent(firstCheckRelevantCount / caseRows.length), + anchors_present_cases: anchorsPresentCount, + anchors_used_cases: anchorsUsedCount + }; + + let baselineMetrics = null; + if (args.baselineMetricsFile) { + const baselinePath = path.resolve(args.baselineMetricsFile); + if (fs.existsSync(baselinePath)) { + baselineMetrics = readJson(baselinePath); + metrics.baseline_reference = path.basename(baselinePath); + metrics.baseline_metrics = { + domain_correctness_rate: baselineMetrics.domain_correctness_rate, + question_type_fit_rate: baselineMetrics.question_type_fit_rate, + company_anchor_usage_rate: baselineMetrics.company_anchor_usage_rate, + generic_answer_rate: baselineMetrics.generic_answer_rate, + first_check_relevance_rate: baselineMetrics.first_check_relevance_rate + }; + metrics.delta_vs_baseline = { + domain_correctness_rate_delta: toPercent( + Number(metrics.domain_correctness_rate) - + Number(metrics.baseline_metrics.domain_correctness_rate || 0) + ), + question_type_fit_rate_delta: toPercent( + Number(metrics.question_type_fit_rate) - + Number(metrics.baseline_metrics.question_type_fit_rate || 0) + ), + company_anchor_usage_rate_delta: toPercent( + Number(metrics.company_anchor_usage_rate) - + Number(metrics.baseline_metrics.company_anchor_usage_rate || 0) + ), + generic_answer_rate_delta: toPercent( + Number(metrics.generic_answer_rate) - + Number(metrics.baseline_metrics.generic_answer_rate || 0) + ), + first_check_relevance_rate_delta: toPercent( + Number(metrics.first_check_relevance_rate) - + Number(metrics.baseline_metrics.first_check_relevance_rate || 0) + ) + }; + } + } + + const matrixPath = path.join(outputDir, args.caseMatrixFile); + const metricsPath = path.join(outputDir, args.metricsFile); + const reportPath = path.join(outputDir, args.reportFile); + + writeUtf8Bom(matrixPath, buildCaseMatrixMarkdown(caseRows)); + writeUtf8Bom(metricsPath, `${JSON.stringify(metrics, null, 2)}\n`); + writeUtf8Bom(reportPath, buildRegressionReport(caseRows, metrics, baselineMetrics)); + + process.stdout.write( + [ + `rows=${caseRows.length}`, + `matrix=${matrixPath}`, + `metrics=${metricsPath}`, + `report=${reportPath}` + ].join("\n") + ); +} + +main().catch((error) => { + process.stderr.write(`${error?.stack || error}\n`); + process.exitCode = 1; +}); + diff --git a/llm_normalizer/backend/scripts/runCompanyQuestionBatch.js b/llm_normalizer/backend/scripts/runCompanyQuestionBatch.js new file mode 100644 index 0000000..0635d78 --- /dev/null +++ b/llm_normalizer/backend/scripts/runCompanyQuestionBatch.js @@ -0,0 +1,233 @@ +#!/usr/bin/env node + +const fs = require("node:fs"); +const path = require("node:path"); +const request = require("supertest"); + +function parseArgs(argv) { + const args = { + questionsFile: "", + runDir: "", + rawFileName: "chat20_wave13_raw.json", + chatFileName: "Chat20.txt", + chatRuFileName: "Чат20.txt", + promptsFileName: path.join("prompt_dialogs", "chat20_prompts.md"), + useMock: true, + promptVersion: "normalizer_v2_0_2", + sessionId: "", + casePrefix: "q" + }; + + for (let i = 0; i < argv.length; i += 1) { + const token = argv[i]; + if (token === "--questions-file") { + args.questionsFile = String(argv[i + 1] ?? ""); + i += 1; + continue; + } + if (token === "--run-dir") { + args.runDir = String(argv[i + 1] ?? ""); + i += 1; + continue; + } + if (token === "--raw-file") { + args.rawFileName = String(argv[i + 1] ?? args.rawFileName); + i += 1; + continue; + } + if (token === "--chat-file") { + args.chatFileName = String(argv[i + 1] ?? args.chatFileName); + i += 1; + continue; + } + if (token === "--chat-ru-file") { + args.chatRuFileName = String(argv[i + 1] ?? args.chatRuFileName); + i += 1; + continue; + } + if (token === "--prompts-file") { + args.promptsFileName = String(argv[i + 1] ?? args.promptsFileName); + i += 1; + continue; + } + if (token === "--use-mock") { + const value = String(argv[i + 1] ?? "true").toLowerCase(); + args.useMock = value !== "0" && value !== "false" && value !== "no"; + i += 1; + continue; + } + if (token === "--prompt-version") { + args.promptVersion = String(argv[i + 1] ?? args.promptVersion); + i += 1; + continue; + } + if (token === "--session-id") { + args.sessionId = String(argv[i + 1] ?? ""); + i += 1; + continue; + } + if (token === "--case-prefix") { + args.casePrefix = String(argv[i + 1] ?? args.casePrefix); + i += 1; + } + } + + return args; +} + +function ensureDir(dirPath) { + fs.mkdirSync(dirPath, { recursive: true }); +} + +function readJson(filePath) { + const raw = fs.readFileSync(filePath, "utf8").replace(/^\uFEFF/, ""); + return JSON.parse(raw); +} + +function writeUtf8Bom(filePath, content) { + ensureDir(path.dirname(filePath)); + fs.writeFileSync(filePath, `\uFEFF${content}`, "utf8"); +} + +function asText(value) { + return value == null ? "" : String(value); +} + +function makeCaseId(prefix, index) { + return `${prefix}${String(index + 1).padStart(2, "0")}`; +} + +function buildPromptsMarkdown(questions) { + const lines = []; + for (let i = 0; i < questions.length; i += 1) { + lines.push(`${i + 1}. ${questions[i]}`); + lines.push(""); + } + return `${lines.join("\n").trim()}\n`; +} + +function buildChatTxt(sessionId, exportedAt, rows) { + const lines = []; + lines.push("# Assistant conversation export"); + lines.push(`session_id: ${sessionId}`); + lines.push(`exported_at: ${exportedAt}`); + lines.push(""); + + let messageCounter = 1; + for (const row of rows) { + lines.push(`## ${messageCounter}. user`); + lines.push("message_id: pending"); + lines.push("created_at: pending"); + lines.push("reply_type: n/a"); + lines.push(""); + lines.push(asText(row.user_message)); + lines.push(""); + messageCounter += 1; + + lines.push(`## ${messageCounter}. assistant`); + lines.push(`message_id: ${asText(row.message_id) || "n/a"}`); + lines.push(`created_at: ${asText(row.created_at) || "n/a"}`); + lines.push(`reply_type: ${asText(row.reply_type) || "n/a"}`); + if (row.trace_id) { + lines.push(`trace_id: ${asText(row.trace_id)}`); + } + lines.push(""); + lines.push(asText(row.assistant_reply)); + lines.push(""); + messageCounter += 1; + } + + return `${lines.join("\n").trim()}\n`; +} + +async function main() { + const args = parseArgs(process.argv.slice(2)); + if (!args.questionsFile) { + throw new Error("Missing required argument --questions-file"); + } + if (!args.runDir) { + throw new Error("Missing required argument --run-dir"); + } + + const questionsPath = path.resolve(args.questionsFile); + const runDir = path.resolve(args.runDir); + const backendRoot = path.resolve(__dirname, ".."); + + const questions = readJson(questionsPath); + if (!Array.isArray(questions) || questions.length === 0) { + throw new Error("Questions JSON must be a non-empty array of strings."); + } + + const { createApp } = require(path.join(backendRoot, "dist", "server.js")); + const app = createApp(); + + ensureDir(runDir); + ensureDir(path.join(runDir, "prompt_dialogs")); + + const rows = []; + let sessionId = args.sessionId || `wave13-chat20-${Date.now()}`; + + for (let i = 0; i < questions.length; i += 1) { + const userMessage = asText(questions[i]); + const response = await request(app).post("/api/assistant/message").send({ + useMock: args.useMock, + promptVersion: args.promptVersion, + session_id: sessionId, + user_message: userMessage + }); + + const body = response.body || {}; + sessionId = asText(body.session_id) || sessionId; + const item = body.conversation_item || {}; + rows.push({ + case_id: makeCaseId(args.casePrefix, i), + user_message: userMessage, + assistant_reply: asText(body.assistant_reply), + reply_type: asText(body.reply_type), + message_id: asText(item.message_id), + created_at: asText(item.created_at), + trace_id: asText(item.trace_id || body.debug?.trace_id), + http_status: response.status, + debug: body.debug || {} + }); + } + + const exportedAt = new Date().toISOString(); + const rawPayload = { + session_id: sessionId, + exported_at: exportedAt, + cases_total: rows.length, + rows + }; + + const rawPath = path.join(runDir, args.rawFileName); + const chatPath = path.join(runDir, args.chatFileName); + const chatRuPath = path.join(runDir, args.chatRuFileName); + const promptsPath = path.join(runDir, args.promptsFileName); + + writeUtf8Bom(rawPath, `${JSON.stringify(rawPayload, null, 2)}\n`); + const chatBody = buildChatTxt(sessionId, exportedAt, rows); + writeUtf8Bom(chatPath, chatBody); + if (args.chatRuFileName) { + writeUtf8Bom(chatRuPath, chatBody); + } + writeUtf8Bom(promptsPath, buildPromptsMarkdown(questions)); + + process.stdout.write( + [ + `run_dir=${runDir}`, + `session_id=${sessionId}`, + `cases_total=${rows.length}`, + `raw=${rawPath}`, + `chat=${chatPath}`, + `chat_ru=${chatRuPath}`, + `prompts=${promptsPath}` + ].join("\n") + ); +} + +main().catch((error) => { + process.stderr.write(`${error?.stack || error}\n`); + process.exitCode = 1; +}); + diff --git a/llm_normalizer/backend/src/services/answerComposer.ts b/llm_normalizer/backend/src/services/answerComposer.ts index 93e0eef..564e00a 100644 --- a/llm_normalizer/backend/src/services/answerComposer.ts +++ b/llm_normalizer/backend/src/services/answerComposer.ts @@ -9,6 +9,8 @@ import type { RouteHintSummary } from "../types/normalizer"; import type { AnswerStructureV11, EvidenceConfidence, EvidenceItem, EvidenceLimitationReasonCode } from "../types/stage1Contracts"; import type { ProblemUnit, ProblemUnitSummary, ProblemUnitType } from "../types/stage2ProblemUnits"; +import type { QuestionTypeClass } from "./questionTypeResolver"; +import type { CompanyAnchorSet } from "./companyAnchorResolver"; type ProblemAnswerMode = "stage1_policy_v11" | "stage2_problem_centric_v1" | "stage3_lifecycle_aware_v1"; @@ -20,6 +22,8 @@ interface ComposeAnswerInput { coverageReport: RequirementCoverageReport; groundingCheck: AnswerGroundingCheck; focusDomainHint?: string | null; + questionTypeHint?: QuestionTypeClass | null; + companyAnchors?: CompanyAnchorSet | null; enableAnswerPolicyV11?: boolean; enableProblemCentricAnswerV1?: boolean; enableLifecycleAnswerV1?: boolean; @@ -47,6 +51,123 @@ function uniqueStrings(values: string[], limit = 6): string[] { return Array.from(new Set(values.map((item) => item.trim()).filter(Boolean))).slice(0, limit); } +interface CompanyAnchorUsage { + present: string[]; + used: string[]; + unused: string[]; +} + +interface AnswerRenderContext { + questionType: QuestionTypeClass; + focusDomain: P0NarrativeDomain; + anchors: CompanyAnchorUsage; +} + +function withUniquePush(target: string[], value: string): void { + const normalized = String(value ?? "").trim(); + if (!normalized) { + return; + } + if (!target.includes(normalized)) { + target.push(normalized); + } +} + +function normalizeAnchorForMatch(value: string): string { + return String(value ?? "") + .toLowerCase() + .replace(/[^\p{L}\p{N}.:/-]+/gu, " ") + .replace(/\s+/g, " ") + .trim(); +} + +function collectCompanyAnchorTokens(anchors: CompanyAnchorSet | null | undefined): string[] { + if (!anchors) { + return []; + } + const tokens: string[] = []; + for (const item of anchors.contract_numbers ?? []) withUniquePush(tokens, item); + for (const item of anchors.document_numbers ?? []) withUniquePush(tokens, item); + for (const item of anchors.dates ?? []) withUniquePush(tokens, item); + for (const item of anchors.amounts ?? []) withUniquePush(tokens, item); + for (const item of anchors.accounts ?? []) withUniquePush(tokens, `\u0441\u0447\u0435\u0442 ${item}`); + for (const item of anchors.accounts ?? []) withUniquePush(tokens, item); + for (const item of anchors.periods ?? []) withUniquePush(tokens, item); + for (const item of anchors.document_types ?? []) withUniquePush(tokens, item); + for (const item of anchors.all ?? []) withUniquePush(tokens, item); + return uniqueStrings(tokens, 48); +} + +function collectRetrievalCorpus(results: UnifiedRetrievalResult[]): string { + const chunks: string[] = []; + for (const result of results) { + chunks.push(JSON.stringify(result.summary ?? {})); + for (const item of result.items.slice(0, 10)) { + chunks.push(JSON.stringify(item)); + } + for (const evidence of result.evidence.slice(0, 16)) { + chunks.push(JSON.stringify(evidence)); + } + chunks.push(...result.why_included.slice(0, 16)); + chunks.push(...result.selection_reason.slice(0, 16)); + chunks.push(...result.business_interpretation.slice(0, 16)); + } + return chunks.join(" ").toLowerCase(); +} + +function isAnchorMatchedInCorpus(anchor: string, corpus: string): boolean { + const normalized = normalizeAnchorForMatch(anchor); + if (!normalized) { + return false; + } + if (normalized.length < 3) { + return false; + } + if (corpus.includes(normalized)) { + return true; + } + const withoutPrefix = normalized + .replace(/^(?:\u0434\u043e\u0433\u043e\u0432\u043e\u0440|document|account|period|doc_type)\s*[:№#]?\s*/iu, "") + .trim(); + if (withoutPrefix.length >= 3 && corpus.includes(withoutPrefix)) { + return true; + } + if (/^\d+(?:[.,]\d{2})?$/.test(withoutPrefix)) { + const normalizedAmount = withoutPrefix.replace(",", "."); + return corpus.includes(withoutPrefix) || corpus.includes(normalizedAmount); + } + return false; +} + +function evaluateCompanyAnchorUsage( + anchors: CompanyAnchorSet | null | undefined, + retrievalResults: UnifiedRetrievalResult[] +): CompanyAnchorUsage { + const present = collectCompanyAnchorTokens(anchors); + if (present.length === 0) { + return { + present: [], + used: [], + unused: [] + }; + } + const corpus = normalizeAnchorForMatch(collectRetrievalCorpus(retrievalResults)); + const used: string[] = []; + const unused: string[] = []; + for (const anchor of present) { + if (isAnchorMatchedInCorpus(anchor, corpus)) { + withUniquePush(used, anchor); + } else { + withUniquePush(unused, anchor); + } + } + return { + present: uniqueStrings(present, 24), + used: uniqueStrings(used, 12), + unused: uniqueStrings(unused, 12) + }; +} + const UUID_PATTERN = /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi; const LONG_HEX_PATTERN = /\b[0-9a-f]{24,}\b/gi; const RAW_REF_BLOB_PATTERN = /\bevidence_source_ref_v1\|[^\s,;]+/gi; @@ -1129,6 +1250,12 @@ function isProblemUnitAlignedWithNarrativeDomain(unit: ProblemUnit, domain: P0Na } if (domain === "vat_document_register_book") { + const foreignVatDomain = ["period_close", "deferred_expense", "fixed_asset", "bank_settlement", "customer_settlement"].includes( + String(unit.lifecycle_domain ?? "") + ); + if (foreignVatDomain && !hasControlledCrossDomainHandoff(unit)) { + return false; + } if (unit.lifecycle_domain === "vat_flow") { return true; } @@ -1139,6 +1266,12 @@ function isProblemUnitAlignedWithNarrativeDomain(unit: ProblemUnit, domain: P0Na } if (domain === "month_close_costs_20_44") { + const foreignMonthCloseDomain = ["vat_flow", "bank_settlement", "customer_settlement", "fixed_asset"].includes( + String(unit.lifecycle_domain ?? "") + ); + if (foreignMonthCloseDomain && !hasControlledCrossDomainHandoff(unit)) { + return false; + } if ( unit.lifecycle_domain === "period_close" || unit.lifecycle_domain === "deferred_expense" || @@ -1775,12 +1908,178 @@ function mapDefectTokenToNarrative(value: string): string | null { return null; } +const KNOWN_ACCOUNT_PREFIXES = new Set([ + "01", + "02", + "07", + "08", + "10", + "13", + "19", + "20", + "21", + "23", + "25", + "26", + "28", + "29", + "41", + "43", + "44", + "45", + "50", + "51", + "52", + "55", + "57", + "58", + "60", + "62", + "66", + "67", + "68", + "69", + "70", + "71", + "73", + "76", + "90", + "91", + "94", + "96", + "97" +]); + +function collectDateLikeSpansForNarrative(text: string): Array<{ start: number; end: number }> { + const spans: Array<{ start: number; end: number }> = []; + const patterns = [ + /\b20\d{2}[./-](?:0[1-9]|1[0-2])(?:[./-](?:0[1-9]|[12]\d|3[01]))?\b/g, + /\b(?:0?[1-9]|[12]\d|3[01])[./-](?:0?[1-9]|1[0-2])[./-](?:\d{2}|\d{4})\b/g, + /\b(?:0?[1-9]|[12]\d|3[01])\s+(?:января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря)\b/giu + ]; + for (const pattern of patterns) { + let match: RegExpExecArray | null = null; + while ((match = pattern.exec(text)) !== null) { + spans.push({ + start: match.index, + end: match.index + match[0].length + }); + } + } + return spans; +} + +function collectAmountLikeSpansForNarrative(text: string): Array<{ start: number; end: number }> { + const spans: Array<{ start: number; end: number }> = []; + const pattern = /\b\d{1,3}(?:[ \u00A0]\d{3})+(?:[.,]\d{2})?\b/g; + let match: RegExpExecArray | null = null; + while ((match = pattern.exec(text)) !== null) { + spans.push({ + start: match.index, + end: match.index + match[0].length + }); + } + return spans; +} + +function intersectsNarrativeSpan( + start: number, + end: number, + spans: Array<{ start: number; end: number }> +): boolean { + return spans.some((span) => start < span.end && end > span.start); +} + +function hasAccountContextMarker(text: string, start: number, end: number): boolean { + const left = text.slice(Math.max(0, start - 24), start); + const right = text.slice(end, Math.min(text.length, end + 24)); + return /(?:счет|сч\.?|account|schet|по\s+60|по\s+62|по\s+19|по\s+68|по\s+20|по\s+25|по\s+26|по\s+44|расчет|ндс|закрыти|рбп|амортиз|settlement|vat|close)/iu.test( + `${left} ${right}` + ); +} + +function toKnownAccountToken(value: string): string | null { + const token = String(value ?? "").trim(); + const prefix = token.match(/^(\d{2})/)?.[1]; + if (!prefix || !KNOWN_ACCOUNT_PREFIXES.has(prefix)) { + return null; + } + return token; +} + function extractAccountNumbers(values: string[]): string[] { - const numbers = values.flatMap((value) => { - const matches = String(value ?? "").match(/\b\d{2}(?:\.\d{1,2})?\b/g); - return matches ?? []; - }); - return uniqueStrings(numbers, 12); + const tokens: string[] = []; + for (const value of values) { + const raw = String(value ?? ""); + const matches = raw.match(/\b\d{2}(?:\.\d{1,2})?\b/g) ?? []; + for (const match of matches) { + const account = toKnownAccountToken(match); + if (account) { + tokens.push(account); + } + } + } + return uniqueStrings(tokens, 16); +} + +function extractAccountNumbersFromNarrativeText(value: string): string[] { + const text = String(value ?? "").toLowerCase(); + if (!text.trim()) { + return []; + } + + const result: string[] = []; + const dateSpans = collectDateLikeSpansForNarrative(text); + const amountSpans = collectAmountLikeSpansForNarrative(text); + const blockedSpans = [...dateSpans, ...amountSpans]; + + const contextualPattern = + /(?:\b(?:счет(?:а|у|ом|ов)?|сч\.?|account(?:s)?|schet(?:a|u|om|ov)?)\b)\s*(?:№|#|:)?\s*([0-9./,\sиand]{2,96})/giu; + let contextualMatch: RegExpExecArray | null = null; + while ((contextualMatch = contextualPattern.exec(text)) !== null) { + const chunk = String(contextualMatch[1] ?? ""); + const chunkTokens = chunk.match(/\b\d{2}(?:\.\d{1,2})?\b/g) ?? []; + for (const token of chunkTokens) { + const account = toKnownAccountToken(token); + if (account) { + result.push(account); + } + } + } + + const accountPairPattern = /\b(\d{2}(?:\.\d{1,2})?)\s*\/\s*(\d{2}(?:\.\d{1,2})?)\b/g; + let pairMatch: RegExpExecArray | null = null; + while ((pairMatch = accountPairPattern.exec(text)) !== null) { + const left = toKnownAccountToken(String(pairMatch[1] ?? "")); + const right = toKnownAccountToken(String(pairMatch[2] ?? "")); + if (left) { + result.push(left); + } + if (right) { + result.push(right); + } + } + + const explicitPattern = /\b\d{2}(?:\.\d{1,2})?\b/g; + let explicitMatch: RegExpExecArray | null = null; + while ((explicitMatch = explicitPattern.exec(text)) !== null) { + const token = String(explicitMatch[0] ?? ""); + const account = toKnownAccountToken(token); + if (!account) { + continue; + } + const start = explicitMatch.index; + const end = start + token.length; + if (intersectsNarrativeSpan(start, end, blockedSpans)) { + continue; + } + if (!hasAccountContextMarker(text, start, end)) { + continue; + } + result.push(account); + } + + return uniqueStrings(result, 16); } function inferP0NarrativeDomain(units: ProblemUnit[]): P0NarrativeDomain { @@ -1914,8 +2213,8 @@ function collectSemanticProfileScopes(results: UnifiedRetrievalResult[]): { acco }; } -interface SettlementEvidenceGrounding { - has_settlement_primary: boolean; +interface P0DomainEvidenceGrounding { + has_primary: boolean; has_foreign_primary: boolean; foreign_primary_domains: string[]; blocked: boolean; @@ -1935,10 +2234,28 @@ function isSettlementDomainToken(value: string): boolean { return /(?:bank_settlement|customer_settlement|settlements?|supplier_payments|suppliers?|customers?)/i.test(String(value ?? "")); } +function isVatDomainToken(value: string): boolean { + return /(?:vat_flow|vat|nds|taxes?|purchase_book|sales_book|invoice|book_entry|register)/i.test(String(value ?? "")); +} + +function isMonthCloseDomainToken(value: string): boolean { + return /(?:period_close|month_close|close_operation|cost_close|cost_allocation|deferred_expense)/i.test(String(value ?? "")); +} + function isForeignToSettlementDomainToken(value: string): boolean { return /(?:vat_flow|vat|deferred_expense|period_close|fixed_asset|fixed_assets|taxes?)/i.test(String(value ?? "")); } +function isForeignToVatDomainToken(value: string): boolean { + return /(?:bank_settlement|customer_settlement|settlements?|period_close|deferred_expense|fixed_asset|fixed_assets|month_close)/i.test( + String(value ?? "") + ); +} + +function isForeignToMonthCloseDomainToken(value: string): boolean { + return /(?:bank_settlement|customer_settlement|settlements?|vat_flow|vat|fixed_asset|fixed_assets)/i.test(String(value ?? "")); +} + function collectResultAccounts(result: UnifiedRetrievalResult): string[] { const accounts: string[] = []; const semanticProfile = summaryValue(result, "semantic_profile"); @@ -1985,46 +2302,111 @@ function isSubstantiveResult(result: UnifiedRetrievalResult): boolean { return result.items.length > 0 || result.evidence.length > 0; } -function evaluateSettlementEvidenceGrounding(results: UnifiedRetrievalResult[]): SettlementEvidenceGrounding { - const substantive = results.filter((item) => isSubstantiveResult(item)); - if (substantive.length === 0) { +function evaluateP0DomainEvidenceGrounding( + results: UnifiedRetrievalResult[], + focusDomain: P0NarrativeDomain +): P0DomainEvidenceGrounding { + if (!focusDomain) { return { - has_settlement_primary: false, + has_primary: false, has_foreign_primary: false, foreign_primary_domains: [], blocked: false }; } - const classify = (result: UnifiedRetrievalResult): { settlement: boolean; foreignDomains: string[] } => { + const substantive = results.filter((item) => isSubstantiveResult(item)); + if (substantive.length === 0) { + return { + has_primary: false, + has_foreign_primary: false, + foreign_primary_domains: [], + blocked: false + }; + } + + const classify = (result: UnifiedRetrievalResult): { inDomain: boolean; foreignDomains: string[] } => { const accounts = collectResultAccounts(result); const domains = collectResultDomains(result); const relations = collectResultRelations(result); - const settlement = - accounts.some((item) => isSettlementAccountToken(item) || /^(?:51|76)(?:\.|$)/.test(item)) || - domains.some((item) => isSettlementDomainToken(item)) || - relations.some((item) => /payment_to_settlement|statement_to_document|contract_to_documents/.test(item)); - const foreignDomains = domains.filter((item) => isForeignToSettlementDomainToken(item)); + let inDomain = false; + let foreignDomains: string[] = []; + + if (focusDomain === "settlements_60_62") { + inDomain = + accounts.some((item) => isSettlementAccountToken(item) || /^(?:51|76)(?:\.|$)/.test(item)) || + domains.some((item) => isSettlementDomainToken(item)) || + relations.some((item) => /payment_to_settlement|statement_to_document|contract_to_documents|linked_to_settlement|settlement_closed/.test(item)); + foreignDomains = domains.filter((item) => isForeignToSettlementDomainToken(item)); + } else if (focusDomain === "vat_document_register_book") { + inDomain = + accounts.some((item) => isVatAccountToken(item)) || + domains.some((item) => isVatDomainToken(item)) || + relations.some((item) => + /invoice_to_vat|source_doc_present|invoice_linked|book_entry_generated|deduction_posted|register_to_book|vat_/i.test(item) + ); + foreignDomains = domains.filter((item) => isForeignToVatDomainToken(item)); + } else if (focusDomain === "month_close_costs_20_44") { + inDomain = + accounts.some((item) => isCloseCostsAccountToken(item)) || + domains.some((item) => isMonthCloseDomainToken(item)) || + relations.some((item) => + /costs_accumulated|allocation_rules_resolved|close_operation_runs|residuals_zero|close_operation|period_close|allocation|writeoff/i.test( + item + ) + ); + foreignDomains = domains.filter((item) => isForeignToMonthCloseDomainToken(item)); + } + return { - settlement, + inDomain, foreignDomains: uniqueStrings(foreignDomains, 8) }; }; const top = substantive[0]; const topClass = classify(top); - const hasAnySettlement = substantive.some((item) => classify(item).settlement); - const hasForeignPrimary = topClass.foreignDomains.length > 0 && !topClass.settlement; - const blocked = hasForeignPrimary && !hasAnySettlement && !hasControlledCrossDomainHandoffInResult(top); + const hasAnyPrimary = substantive.some((item) => classify(item).inDomain); + const hasForeignPrimary = topClass.foreignDomains.length > 0 && !topClass.inDomain; + const blocked = hasForeignPrimary && !hasAnyPrimary && !hasControlledCrossDomainHandoffInResult(top); return { - has_settlement_primary: hasAnySettlement, + has_primary: hasAnyPrimary, has_foreign_primary: hasForeignPrimary, foreign_primary_domains: topClass.foreignDomains, blocked }; } +function hasStrongNarrativeDomainSignalInText(userMessage: string, domain: P0NarrativeDomain): boolean { + if (!domain) { + return false; + } + const text = String(userMessage ?? "").toLowerCase(); + const accountTokens = extractAccountNumbersFromNarrativeText(text); + if (domain === "settlements_60_62") { + return ( + accountTokens.some((item) => isSettlementAccountToken(item)) || + /(60\.0[12]|62\.0[12]|долг|аванс|зач[её]т|взаимозач|расч[её]т)/i.test(text) + ); + } + if (domain === "vat_document_register_book") { + return ( + accountTokens.some((item) => isVatAccountToken(item)) || + /(ндс|vat|счет[-\s]?фактур|сч[её]т[-\s]?фактур|книг[аи]|регистр)/i.test(text) + ); + } + if (domain === "month_close_costs_20_44") { + return ( + accountTokens.some((item) => isCloseCostsAccountToken(item)) || + /(закрыти[ея]\s+месяц|закрытие\s+счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых\s+результат|month\s*close|period\s*close|close\s+operation)/i.test( + text + ) + ); + } + return false; +} + function inferP0FocusNarrativeDomain( userMessage: string, results: UnifiedRetrievalResult[], @@ -2032,20 +2414,30 @@ function inferP0FocusNarrativeDomain( focusDomainHint?: string | null ): P0NarrativeDomain { const fromHint = p0NarrativeDomainFromHint(focusDomainHint); + const fromMessage = inferNarrativeDomainFromText(userMessage); + const strongFromMessage = Boolean(fromMessage && hasStrongNarrativeDomainSignalInText(userMessage, fromMessage)); + const fromDomainGuard = inferP0NarrativeDomainFromDomainGuards(results); + if (fromHint && fromMessage && fromHint !== fromMessage) { + return strongFromMessage ? fromMessage : fromHint; + } if (fromHint) { return fromHint; } - const fromDomainGuard = inferP0NarrativeDomainFromDomainGuards(results); + if (fromDomainGuard && fromMessage && fromDomainGuard !== fromMessage) { + return strongFromMessage ? fromMessage : fromDomainGuard; + } if (fromDomainGuard) { return fromDomainGuard; } - const fromMessage = inferNarrativeDomainFromText(userMessage); + if (strongFromMessage) { + return fromMessage; + } if (fromMessage) { return fromMessage; } const semanticScopes = collectSemanticProfileScopes(results); - const messageAccounts = extractAccountNumbers([userMessage]); + const messageAccounts = extractAccountNumbersFromNarrativeText(userMessage); const hasExplicitP0AccountSignal = [...messageAccounts, ...semanticScopes.accounts].some( (item) => isSettlementAccountToken(item) || isVatAccountToken(item) || isCloseCostsAccountToken(item) ); @@ -2224,14 +2616,22 @@ function buildDirectAnswer(input: { mode: PolicyMode; retrievalResults: UnifiedRetrievalResult[]; policySignals: PolicySignals; + focusDomain: P0NarrativeDomain; }): string { const topFact = humanizeFactForDirectAnswer(firstMeaningfulFact(input.retrievalResults)); + const domainAnchor = domainNarrativeAnchor(input.focusDomain); + const topFactDomain = topFact ? inferNarrativeDomainFromText(topFact) : null; + const topFactAligned = Boolean(topFact) && (!input.focusDomain || topFactDomain === input.focusDomain); + const preferredFact = topFactAligned ? topFact : null; if (input.mode === "focused_grounded") { - return topFact ?? "Проблема подтверждена на текущей опоре и готова к точечной проверке."; + return preferredFact ?? domainAnchor ?? "Проблема подтверждена на текущей опоре и готова к точечной проверке."; } if (input.mode === "broad_partial") { - if (topFact) { - return `${topFact.replace(/[.!?]+$/u, "")}; подтверждение пока частичное.`; + if (preferredFact) { + return `${preferredFact.replace(/[.!?]+$/u, "")}; подтверждение пока частичное.`; + } + if (domainAnchor) { + return `${domainAnchor.replace(/[.!?]+$/u, "")}; подтверждение пока частичное.`; } return "Есть признаки проблемы, но опора частичная и вывод ограничен."; } @@ -2338,11 +2738,23 @@ function buildProblemCentricAnswerStructure(input: { 6 ); const evidenceIds = uniqueStrings(input.evidenceItems.map((item) => item.evidence_id), 10); + const aggregateEvidenceConfidence = aggregateConfidence(input.retrievalResults, input.evidenceItems); + const hasCriticalEvidenceLimitation = + input.limitationReasonCodes.includes("weak_source_mapping") || + input.limitationReasonCodes.includes("insufficient_detail"); + const confidenceLimited = + input.mode !== "focused_grounded" || + weakUnits || + input.domainLockMiss || + input.limitationReasonCodes.includes("missing_mechanism") || + input.limitationReasonCodes.includes("heuristic_inference") || + hasCriticalEvidenceLimitation || + aggregateEvidenceConfidence === "low"; const mechanismStatus: AnswerStructureV11["mechanism_block"]["status"] = unitMechanismNotes.length === 0 ? "unresolved" - : weakUnits || input.limitationReasonCodes.includes("missing_mechanism") + : confidenceLimited ? "limited" : "grounded"; @@ -2453,21 +2865,50 @@ function limitationReasonToUserText(code: EvidenceLimitationReasonCode): string function inferNarrativeDomainFromText(value: string): P0NarrativeDomain { const text = String(value ?? "").toLowerCase(); - const accountTokens = extractAccountNumbers([text]); - const hasSettlementLexicalSignal = /(оплат|долг|аванс|взаимозач|зачет|зачёт|поставщ|покупат|не\s+сход)/i.test(text); + const accountTokens = extractAccountNumbersFromNarrativeText(text); - if (accountTokens.some((token) => isSettlementAccountToken(token)) || hasSettlementLexicalSignal) { - return "settlements_60_62"; + let settlementScore = 0; + let vatScore = 0; + let monthCloseScore = 0; + + if (accountTokens.some((token) => isSettlementAccountToken(token))) { + settlementScore += 3; } - if (accountTokens.some((token) => isVatAccountToken(token)) || /(ндс|счет[-\s]?фактур|регистр|книг)/i.test(text)) { - return "vat_document_register_book"; + if (accountTokens.some((token) => isVatAccountToken(token))) { + vatScore += 3; + } + if (accountTokens.some((token) => isCloseCostsAccountToken(token))) { + monthCloseScore += 3; + } + + if (/(долг|аванс|взаимозач|зачет|зачёт|62\.01|62\.02|60\.01|60\.02|не\s+сход)/i.test(text)) { + settlementScore += 2; + } + if (/(ндс|vat|счет[-\s]?фактур|сч[её]т[-\s]?фактур|книг[аи]|регистр)/i.test(text)) { + vatScore += 3; } if ( - accountTokens.some((token) => isCloseCostsAccountToken(token)) || - /(закрыти[ея]\s+месяц|затрат|распределени|списан)/i.test(text) + /(закрыти[ея]\s+месяц|закрытие\s+счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых\s+результат|month\s*close|period\s*close|close\s+operation)/i.test( + text + ) ) { + monthCloseScore += 3; + } + + const maxScore = Math.max(settlementScore, vatScore, monthCloseScore); + if (maxScore <= 0) { + return null; + } + // Tie-break prioritizes explicit VAT and month-close lexical markers over broad settlement wording. + if (vatScore === maxScore) { + return "vat_document_register_book"; + } + if (monthCloseScore === maxScore) { return "month_close_costs_20_44"; } + if (settlementScore === maxScore) { + return "settlements_60_62"; + } return null; } @@ -2578,6 +3019,11 @@ function buildEvidenceSectionLines(structure: AnswerStructureV11): string[] { const claimLinks = Array.isArray(structure.evidence_block.claim_evidence_links) ? structure.evidence_block.claim_evidence_links.length : 0; + const reliabilityLimited = + structure.mechanism_block.status !== "grounded" || + structure.uncertainty_block.limitations.length > 0 || + structure.uncertainty_block.open_uncertainties.length > 0 || + structure.evidence_block.coverage_note === "coverage_partial_or_limited"; const lines: string[] = []; const coverageSplitLines = buildCoverageSplitLines(structure); @@ -2593,7 +3039,7 @@ function buildEvidenceSectionLines(structure: AnswerStructureV11): string[] { if (structure.evidence_block.coverage_note === "coverage_partial_or_limited") { lines.push("Опора частичная: часть требований покрыта не полностью."); } else if (evidenceCount > 0) { - lines.push("Опора достаточна для первичного вывода."); + lines.push(reliabilityLimited ? "Опора есть, но достаточна только для предварительного вывода." : "Опора достаточна для первичного вывода."); } if (lines.length === 0) { @@ -2678,6 +3124,8 @@ function humanizeLimitationToken(value: string): string | null { if (normalized === "missing_anchor:account") return "Счет или группа счетов не указаны."; if (normalized === "missing_anchor:document_or_object") return "Не указан документ или объект для трассировки."; if (normalized === "missing_anchor:counterparty") return "Не указан контрагент или договор."; + if (normalized === "primary_domain_evidence_not_confirmed") + return "Целевой механизм активного домена подтвержден частично; вывод ограничен."; if (normalized === "settlement_primary_evidence_not_confirmed") return "Опора по расчетному контуру не подтверждена: в приоритете были сигналы из смежных доменов."; if (normalized.includes("snapshot")) return "Вывод сделан по snapshot и может не включать часть цепочки."; @@ -2733,22 +3181,188 @@ function buildLimitationsSectionLines(structure: AnswerStructureV11): string[] { return ["Существенных ограничений в текущем срезе не выявлено."]; } -function renderPolicyReply(structure: AnswerStructureV11): string { +function domainNameForQuestionType(domain: P0NarrativeDomain): string { + if (domain === "settlements_60_62") return "\u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430"; + if (domain === "vat_document_register_book") return "\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u041d\u0414\u0421"; + if (domain === "month_close_costs_20_44") + return "\u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u0435\u0441\u044f\u0446\u0430"; + return "\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430"; +} + +function buildQuestionTypeShortLine(context: AnswerRenderContext): string | null { + const domainName = domainNameForQuestionType(context.focusDomain); + if (context.questionType === "where_break_is") { + return `\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u044b\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 ${domainName}.`; + } + if (context.questionType === "prove_or_guess") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u0440\u0430\u0437\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0438 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443."; + } + if (context.questionType === "what_is_it_grounded_on") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c."; + } + if (context.questionType === "which_chains_are_complete_vs_incomplete") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438."; + } + if (context.questionType === "what_to_check_first") { + return "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: \u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438."; + } + return null; +} + +function buildQuestionTypeBrokenLine(context: AnswerRenderContext): string | null { + if (context.questionType !== "where_break_is") { + return null; + } + if (context.focusDomain === "settlements_60_62") { + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430: \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043e\u043f\u043b\u0430\u0442\u044b \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f."; + } + if (context.focusDomain === "vat_document_register_book") { + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430: \u0441\u0432\u044f\u0437\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0441\u0447\u0435\u0442\u0430-\u0444\u0430\u043a\u0442\u0443\u0440\u044b \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043d\u0438\u0433\u0438."; + } + if (context.focusDomain === "month_close_costs_20_44") { + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430: \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0442\u0440\u0430\u0442 \u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e/\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044e."; + } + return "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e; \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u0447\u0435\u0447\u043d\u0430\u044f \u0441\u0432\u0435\u0440\u043a\u0430."; +} + +function buildQuestionTypeWhyLine(context: AnswerRenderContext): string | null { + if (context.questionType === "prove_or_guess") { + return "\u0417\u0434\u0435\u0441\u044c \u0447\u0435\u0441\u0442\u043d\u043e \u0440\u0430\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e \u0438 \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u043e\u0439."; + } + if (context.questionType === "which_chains_are_complete_vs_incomplete") { + return "\u0426\u0435\u043f\u043e\u0447\u043a\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u043f\u043e\u0440\u0435."; + } + return null; +} + +function buildQuestionTypeEvidenceLine(context: AnswerRenderContext): string | null { + if (context.questionType === "what_is_it_grounded_on") { + return "\u0412 \u044d\u0442\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430."; + } + if (context.questionType === "prove_or_guess") { + return "\u0421\u0438\u043b\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u043e\u0446\u0435\u043d\u0435\u043d\u0430 \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u043f\u043e\u0440\u0435, \u0430 \u043d\u0435 \u043f\u043e \u0434\u043e\u0433\u0430\u0434\u043a\u0430\u043c."; + } + return null; +} + +function formatAnchorList(anchors: string[], prefix: string): string | null { + if (anchors.length === 0) { + return null; + } + return `${prefix}: ${anchors.join(", ")}.`; +} + +function buildQuestionTypeCheckLine(context: AnswerRenderContext): string | null { + if (context.questionType === "what_to_check_first") { + return "\u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0438 \u043f\u0440\u043e\u0439\u0434\u0438\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u043a\u043e\u043a\u0430."; + } + return null; +} + +function buildQuestionTypeLimitationLine(context: AnswerRenderContext): string | null { + if (context.questionType === "prove_or_guess") { + return "\u0414\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u00ab\u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0438\u043b\u0438 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430\u00bb \u0432\u0441\u0435 \u043d\u0435\u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f."; + } + if (context.questionType === "which_chains_are_complete_vs_incomplete") { + return "\u0414\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u00abcomplete/incomplete\u00bb \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0441\u0440\u0435\u0437\u0435."; + } + return null; +} + +function applyQuestionTypeAndAnchorPolicy(input: { + shortLine: string; + brokenLines: string[]; + whyLines: string[]; + evidenceLines: string[]; + checkLines: string[]; + limitationLines: string[]; + context: AnswerRenderContext; +}): { + shortLine: string; + brokenLines: string[]; + whyLines: string[]; + evidenceLines: string[]; + checkLines: string[]; + limitationLines: string[]; +} { + const nextShort = buildQuestionTypeShortLine(input.context) ?? input.shortLine; + const nextBroken = dedupeNarrativeLines( + [buildQuestionTypeBrokenLine(input.context), ...input.brokenLines].filter((item): item is string => Boolean(item)), + 4 + ); + const nextWhy = dedupeNarrativeLines( + [buildQuestionTypeWhyLine(input.context), ...input.whyLines].filter((item): item is string => Boolean(item)), + 4 + ); + const anchorUsedLine = formatAnchorList( + input.context.anchors.used, + "\u0412 \u043e\u043f\u043e\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u044f\u043a\u043e\u0440\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u0430" + ); + const anchorUnusedLine = formatAnchorList( + input.context.anchors.unused, + "\u042f\u043a\u043e\u0440\u044f \u0438\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f" + ); + const nextEvidence = dedupeNarrativeLines( + [buildQuestionTypeEvidenceLine(input.context), ...input.evidenceLines, anchorUsedLine].filter( + (item): item is string => Boolean(item) + ), + 7 + ); + const nextChecks = dedupeNarrativeLines( + [buildQuestionTypeCheckLine(input.context), ...input.checkLines].filter((item): item is string => Boolean(item)), + 5 + ); + const nextLimitations = dedupeNarrativeLines( + [buildQuestionTypeLimitationLine(input.context), anchorUnusedLine, ...input.limitationLines].filter( + (item): item is string => Boolean(item) + ), + 6 + ); + + return { + shortLine: ensureSentence(nextShort), + brokenLines: nextBroken, + whyLines: nextWhy, + evidenceLines: nextEvidence, + checkLines: nextChecks, + limitationLines: nextLimitations + }; +} + +function renderPolicyReply(structure: AnswerStructureV11, context?: AnswerRenderContext): string { const shortLine = ensureSentence(buildShortSectionLine(structure)); const brokenLines = buildBrokenSectionLines(structure); const whyLines = buildWhySectionLines(structure); const evidenceLines = buildEvidenceSectionLines(structure); const checkLines = buildChecksSectionLines(structure); const limitationLines = buildLimitationsSectionLines(structure); + const enriched = context + ? applyQuestionTypeAndAnchorPolicy({ + shortLine, + brokenLines, + whyLines, + evidenceLines, + checkLines, + limitationLines, + context + }) + : { + shortLine, + brokenLines, + whyLines, + evidenceLines, + checkLines, + limitationLines + }; return sanitizeUserFacingReply( [ - `Коротко: ${shortLine}`, - `Что сломано:\n${formatList(brokenLines)}`, - `Почему это похоже на проблему:\n${formatList(whyLines)}`, - `На чем это основано:\n${formatList(evidenceLines)}`, - `Что проверить первым:\n${formatList(checkLines)}`, - `Ограничения:\n${formatList(limitationLines)}` + `Коротко: ${enriched.shortLine}`, + `Что сломано:\n${formatList(enriched.brokenLines)}`, + `Почему это похоже на проблему:\n${formatList(enriched.whyLines)}`, + `На чем это основано:\n${formatList(enriched.evidenceLines)}`, + `Что проверить первым:\n${formatList(enriched.checkLines)}`, + `Ограничения:\n${formatList(enriched.limitationLines)}` ] .filter(Boolean) .join("\n\n") @@ -2757,6 +3371,8 @@ function renderPolicyReply(structure: AnswerStructureV11): string { function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutput { const fallbackType = fallbackFromSummary(input.routeSummary); + const questionType: QuestionTypeClass = input.questionTypeHint ?? "unknown"; + const anchorUsage = evaluateCompanyAnchorUsage(input.companyAnchors, input.retrievalResults); const okResults = input.retrievalResults.filter((item) => item.status === "ok"); const partialResults = input.retrievalResults.filter((item) => item.status === "partial"); const emptyResults = input.retrievalResults.filter((item) => item.status === "empty"); @@ -2786,15 +3402,8 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp problemHeavyUnits, input.focusDomainHint ); - const settlementGrounding = focusNarrativeDomain === "settlements_60_62" - ? evaluateSettlementEvidenceGrounding(input.retrievalResults) - : { - has_settlement_primary: false, - has_foreign_primary: false, - foreign_primary_domains: [], - blocked: false - }; - const settlementGroundingBlocked = focusNarrativeDomain === "settlements_60_62" && settlementGrounding.blocked; + const focusDomainGrounding = evaluateP0DomainEvidenceGrounding(input.retrievalResults, focusNarrativeDomain); + const focusDomainGroundingBlocked = Boolean(focusNarrativeDomain && focusDomainGrounding.blocked); const rankedProblemUnits = rankProblemUnitsForAnswer(problemHeavyUnits, lifecycleAnswerEnabled, focusNarrativeDomain); const domainAlignedProblemUnits = focusNarrativeDomain === null @@ -2805,7 +3414,7 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp rankedProblemUnits.length > 0 && domainAlignedProblemUnits.length === 0 ); - const domainLockMiss = domainLockMissBase || settlementGroundingBlocked; + const domainLockMiss = domainLockMissBase || focusDomainGroundingBlocked; const selectedProblemUnits = ( focusNarrativeDomain === null ? rankedProblemUnits : domainAlignedProblemUnits ).slice(0, 4); @@ -2853,7 +3462,7 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp policySignals }); const guardedDecision: PolicyDecision = - settlementGroundingBlocked && + focusDomainGroundingBlocked && decision.mode !== "out_of_scope" && decision.mode !== "route_mismatch" && decision.mode !== "backend_error" @@ -2870,7 +3479,9 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp policySignals.minimum_evidence_failed || limitationReasonCodes.includes("missing_mechanism") || limitationReasonCodes.includes("weak_source_mapping") || + limitationReasonCodes.includes("insufficient_detail") || aggregateEvidenceConfidence === "low" || + domainLockMiss || lowConfidenceConcentration; const hardBlockedMode = guardedDecision.mode === "out_of_scope" || @@ -2907,7 +3518,11 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp const lifecycleModeActive = lifecycleAnswerEnabled && selectedProblemUnits.length > 0 && hasLifecycleResolution(selectedProblemUnits); return { - assistant_reply: renderPolicyReply(problemCentricStructure), + assistant_reply: renderPolicyReply(problemCentricStructure, { + questionType, + focusDomain: focusNarrativeDomain, + anchors: anchorUsage + }), fallback_type: guardedDecision.fallback_type, reply_type: guardedDecision.reply_type, answer_structure_v11: problemCentricStructure, @@ -2937,11 +3552,12 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp ...limitationReasonCodes.map((code) => limitationReasonToText(code)), ...extractLimitations(input.retrievalResults), ...input.groundingCheck.reasons, - ...(settlementGroundingBlocked + ...(focusDomainGroundingBlocked + ? ["Целевой механизм активного домена подтвержден частично; часть первичной опоры пришла из смежного контура."] + : []), + ...(anchorUsage.unused.length > 0 ? [ - `Primary settlement evidence is not confirmed; foreign domains dominate: ${ - settlementGrounding.foreign_primary_domains.join(", ") || "unknown" - }.` + `Часть якорей запроса пока не подтверждена в опоре: ${anchorUsage.unused.slice(0, 5).join(", ")}.` ] : []), ...(policySignals.minimum_evidence_failed ? ["Minimum evidence gate failed for current scope."] : []), @@ -2958,15 +3574,24 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp ...(guardedDecision.mode === "clarification_required" && missingAnchors.account ? ["missing_anchor:account"] : []), ...(guardedDecision.mode === "clarification_required" && missingAnchors.documentOrObject ? ["missing_anchor:document_or_object"] : []), ...(guardedDecision.mode === "clarification_required" && missingAnchors.counterparty ? ["missing_anchor:counterparty"] : []), - ...(settlementGroundingBlocked ? ["settlement_primary_evidence_not_confirmed"] : []) + ...(focusDomainGroundingBlocked ? ["primary_domain_evidence_not_confirmed"] : []) ], 8 ); + const confidenceLimited = + guardedDecision.mode !== "focused_grounded" || + limitationReasonCodes.includes("missing_mechanism") || + limitationReasonCodes.includes("heuristic_inference") || + limitationReasonCodes.includes("weak_source_mapping") || + limitationReasonCodes.includes("insufficient_detail") || + aggregateEvidenceConfidence === "low" || + focusDomainGroundingBlocked; + const mechanismStatus: AnswerStructureV11["mechanism_block"]["status"] = mechanismNotes.length === 0 ? "unresolved" - : limitationReasonCodes.includes("missing_mechanism") || limitationReasonCodes.includes("heuristic_inference") + : confidenceLimited ? "limited" : "grounded"; @@ -2976,7 +3601,8 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp direct_answer: buildDirectAnswer({ mode: guardedDecision.mode, retrievalResults: input.retrievalResults, - policySignals + policySignals, + focusDomain: focusNarrativeDomain }), mechanism_block: { status: mechanismStatus, @@ -3011,7 +3637,11 @@ function composeAssistantAnswerV11(input: ComposeAnswerInput): ComposeAnswerOutp }; return { - assistant_reply: renderPolicyReply(answerStructure), + assistant_reply: renderPolicyReply(answerStructure, { + questionType, + focusDomain: focusNarrativeDomain, + anchors: anchorUsage + }), fallback_type: guardedDecision.fallback_type, reply_type: guardedDecision.reply_type, answer_structure_v11: answerStructure, diff --git a/llm_normalizer/backend/src/services/assistantDataLayer.ts b/llm_normalizer/backend/src/services/assistantDataLayer.ts index 06f5fa2..efe65ad 100644 --- a/llm_normalizer/backend/src/services/assistantDataLayer.ts +++ b/llm_normalizer/backend/src/services/assistantDataLayer.ts @@ -108,6 +108,11 @@ const ENTITY_SPECIFIC_MARKERS = /(?:\u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442|supplier|buyer|\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442|invoice|posting|register|guid|id[:=\s])/iu; const EXACT_OBJECT_MARKERS = /(?:\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\s*(?:#|\u2116)|\bref\b|\bid\b|trx-\d+|inv-\d+)/iu; +const CONTRACT_MARKERS = + /(?:\u0434\u043e\u0433\u043e\u0432\u043e\u0440(?:\u0430|\u0443|\u043e\u043c|\u0435)?\s*(?:№|#|n)\s*[a-z\u0430-\u044f0-9./_-]+)/iu; +const DOCUMENT_NUMBER_MARKERS = + /(?:(?:\u0441\u0447(?:\u0435|\u0451)\u0442(?:-\u0444\u0430\u043a\u0442\u0443\u0440(?:\u0430|\u044b))?|\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446(?:\u0438\u044f|\u0438\u0438)|\u0430\u043a\u0442)\s*(?:№|#|n)\s*[a-z\u0430-\u044f0-9./_-]+)/iu; +const AMOUNT_MARKERS = /\b(?:\d{1,3}(?:[ \u00A0]\d{3})+(?:[.,]\d{2})?|\d+[.,]\d{2})\b/u; const ROUTE_MIN_EVIDENCE_GATE: Record = { hybrid_store_plus_live: { @@ -186,6 +191,9 @@ function detectBroadQuery(fragmentText: string, route: string): BroadQueryAssess const hasEntityAnchor = ENTITY_SPECIFIC_MARKERS.test(lower); const hasExactObjectAnchor = EXACT_OBJECT_MARKERS.test(lower); const hasGuidAnchor = extractGuids(lower).length > 0; + const hasContractAnchor = CONTRACT_MARKERS.test(lower); + const hasDocumentNumberAnchor = DOCUMENT_NUMBER_MARKERS.test(lower); + const hasAmountAnchor = AMOUNT_MARKERS.test(lower); let anchorScore = 0; if (hasGuidAnchor) anchorScore += 3; @@ -193,9 +201,16 @@ function detectBroadQuery(fragmentText: string, route: string): BroadQueryAssess if (hasPeriodAnchor) anchorScore += 1; if (hasEntityAnchor) anchorScore += 1; if (hasExactObjectAnchor) anchorScore += 1; + if (hasContractAnchor) anchorScore += 2; + if (hasDocumentNumberAnchor) anchorScore += 2; + if (hasAmountAnchor) anchorScore += 1; const weakAnchors = anchorScore <= 1; - const strongFocus = hasGuidAnchor || (hasAccountAnchor && hasPeriodAnchor) || anchorScore >= 4; + const strongFocus = + hasGuidAnchor || + (hasAccountAnchor && hasPeriodAnchor) || + (hasContractAnchor && hasDocumentNumberAnchor) || + anchorScore >= 4; const routeSensitiveBroad = route === "batch_refresh_then_store" || route === "hybrid_store_plus_live"; let broadnessLevel: BroadnessLevel = "low"; @@ -376,9 +391,7 @@ const P0_DOMAIN_CARDS: P0DomainCard[] = [ /\u0441\u0447[её]т.?фактур/i, /\u043a\u043d\u0438\u0433[аи]\s+\u043f\u043e\u043a\u0443\u043f/i, /\u043a\u043d\u0438\u0433[аи]\s+\u043f\u0440\u043e\u0434\u0430\u0436/i, - /\u0432\u044b\u0447\u0435\u0442/i, - /\b19\b/, - /\b68\b/ + /\u0432\u044b\u0447\u0435\u0442/i ] }, { @@ -394,19 +407,20 @@ const P0_DOMAIN_CARDS: P0DomainCard[] = [ expected_edges: ["document_to_posting", "deferred_expense_to_writeoff", "contract_to_documents"], forbidden_cross_domain_leakage: ["vat", "taxes", "bank", "settlements", "suppliers", "customers", "fixed_assets"], symptom_markers: [ - /\b20\b/, - /\b21\b/, - /\b23\b/, - /\b25\b/, - /\b26\b/, - /\b28\b/, - /\b29\b/, - /\b44\b/, /period\s*close/i, - /\u0437\u0430\u043a\u0440\u044b\u0442/i, + /month\s*close/i, + /close\s+period/i, + /закрыт[а-яё]*\s+период/i, + /close\s+operation/i, + /allocation/i, + /закр/i, + /перио/i, + /\u0437\u0430\u043a\u0440\u044b\u0442(?:\u0438|\u0438\u0435|\u044b|)\s*(?:\u043c\u0435\u0441\u044f\u0446|\u0441\u0447\u0435\u0442)/i, + /\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442/i, /\u0437\u0430\u0442\u0440\u0430\u0442/i, /\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b/i, - /\u043e\u0441\u0442\u0430\u0442\u043a/i + /\u0440\u0431\u043f/i, + /\u0430\u043c\u043e\u0440\u0442\u0438\u0437/i ] } ]; @@ -1241,6 +1255,28 @@ function extractAccountScopeFromText(text: string): string[] { } } + const closePairPattern = /\b(?:20|21|23|25|26|28|29|44)\s*[-/]\s*(?:20|21|23|25|26|28|29|44)\b/g; + let closePairMatch: RegExpExecArray | null = null; + while ((closePairMatch = closePairPattern.exec(lower)) !== null) { + const pair = closePairMatch[0]; + const pairAccounts = pair.match(/\b\d{2}(?:\.\d{1,2})?\b/g) ?? []; + for (const account of pairAccounts) { + pushAccount(account); + } + } + + const suffixAnchorPattern = /\b(?:51|60|62|68|76|97)(?:\.\d{1,2})?(?:-(?:му|й|го|м|х))?\b/giu; + let suffixAnchorMatch: RegExpExecArray | null = null; + while ((suffixAnchorMatch = suffixAnchorPattern.exec(lower)) !== null) { + const token = suffixAnchorMatch[0]; + const start = suffixAnchorMatch.index; + const end = start + token.length; + if (intersectsSpan(start, end, dateSpans)) { + continue; + } + pushAccount(token); + } + const explicitPattern = /\b\d{2}(?:\.\d{1,2})?\b/g; let explicitMatch: RegExpExecArray | null = null; const settlementLexicalAnchor = /(оплат|расчет|расч[её]т|аванс|долг|постав|покуп|settlement|payment|supplier|customer)/i.test( @@ -1405,31 +1441,55 @@ function buildSemanticRetrievalProfile(fragmentText: string): SemanticRetrievalP pushMany(entityTypes, ["counterparty", "contract", "document", "posting"]); pushMany(relationPatterns, ["payment_to_settlement", "statement_to_document", "document_to_posting"]); } - if (/постав|постав|supplier|vendor|60\b/i.test(lower)) { + const hasSettlementAccountScope = accountScope.some((item) => item === "51" || item === "60" || item === "62" || item === "76"); + const hasVatAccountScope = accountScope.some((item) => item === "19" || item === "68"); + const hasFixedAssetAccountScope = accountScope.some((item) => item === "01" || item === "02" || item === "08"); + const hasDeferredExpenseAccountScope = accountScope.some((item) => item === "97"); + const hasMonthCloseCostsAccountScope = accountScope.some((item) => CLOSE_COST_ACCOUNTS.includes(item)); + const hasExplicitMonthCloseLexicalMarker = + /(?:закрыти[ея]\s+месяц|закрыт[а-яё]*\s+период|закрытие\s+счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых\s+результат|month\s*close|period\s*close|close\s+period|close\s+operation)/i.test( + lower + ) || + (/закр/i.test(lower) && /перио/i.test(lower)); + + if (/постав|постав|supplier|vendor/i.test(lower) || hasSettlementAccountScope) { pushMany(domainScope, ["suppliers", "settlements"]); pushMany(documentTypes, ["supplier_receipt", "settlement_document"]); pushMany(entityTypes, ["counterparty", "contract", "document", "posting"]); pushMany(relationPatterns, ["payment_to_settlement", "contract_to_documents"]); } - if (/покупат|покупат|customer|buyer|62\b/i.test(lower)) { + if (/покупат|покупат|customer|buyer/i.test(lower) || hasSettlementAccountScope) { pushMany(domainScope, ["customers", "settlements"]); pushMany(documentTypes, ["sales_document", "settlement_document"]); pushMany(entityTypes, ["counterparty", "contract", "document", "posting"]); pushMany(relationPatterns, ["payment_to_settlement", "contract_to_documents"]); } - if (/РЅРґСЃ|ндс|vat|РєРЅРёРіР° РїРѕРєСѓРїРѕРє|РєРЅРёРіР° продаж|счет.?фактур|книг[аи]\s+покуп|книг[аи]\s+продаж|сч[её]т.?фактур|19\b|68\b/i.test(lower)) { + if ( + /РЅРґСЃ|ндс|vat|РєРЅРёРіР° РїРѕРєСѓРїРѕРє|РєРЅРёРіР° продаж|счет.?фактур|книг[аи]\s+покуп|книг[аи]\s+продаж|сч[её]т.?фактур/i.test( + lower + ) || + hasVatAccountScope + ) { pushMany(domainScope, ["vat", "taxes"]); pushMany(documentTypes, ["invoice", "vat_document"]); pushMany(entityTypes, ["document", "tax_entry", "posting"]); pushMany(relationPatterns, ["invoice_to_vat", "document_to_posting"]); } - if (/РѕСЃ|РѕСЃРЅРѕРІРЅ(ые|ых)\s+сред|(?:^|[^a-zа-яё])ос(?:$|[^a-zа-яё])|основн(ые|ых|ым)?\s+средств|fixed asset|amort|амортиз|амортиз|01\b|02\b|08\b/i.test(lower)) { + if ( + /РѕСЃ|РѕСЃРЅРѕРІРЅ(ые|ых)\s+сред|(?:^|[^a-zа-яё])ос(?:$|[^a-zа-яё])|основн(ые|ых|ым)?\s+средств|fixed asset|amort|амортиз|амортиз/i.test( + lower + ) || + hasFixedAssetAccountScope + ) { pushMany(domainScope, ["fixed_assets"]); pushMany(documentTypes, ["fixed_asset_card", "fixed_asset_acceptance", "depreciation_document"]); pushMany(entityTypes, ["fixed_asset", "document", "posting"]); pushMany(relationPatterns, ["asset_card_to_depreciation", "document_to_posting"]); } - if (/СЂР±Рї|расходы будущих периодов|рбп|расходы\s+будущих\s+периодов|deferred|writeoff|97\b/i.test(lower)) { + if ( + /СЂР±Рї|расходы будущих периодов|рбп|расходы\s+будущих\s+периодов|deferred|writeoff/i.test(lower) || + hasDeferredExpenseAccountScope + ) { pushMany(domainScope, ["deferred_expense", "period_close"]); pushMany(documentTypes, ["deferred_expense_document", "period_close_document"]); pushMany(entityTypes, ["document", "posting"]); @@ -1452,7 +1512,7 @@ function buildSemanticRetrievalProfile(fragmentText: string): SemanticRetrievalP pushMany(anomalyPatterns, ["repeated_anomaly"]); pushMany(rankingBasis, ["repeatability"]); } - if (/закрыт|закрытие|период|закрыт|закрытие|период|month close|period close|closure/i.test(lower)) { + if (hasExplicitMonthCloseLexicalMarker || hasMonthCloseCostsAccountScope || hasDeferredExpenseAccountScope) { pushMany(domainScope, ["period_close"]); pushMany(anomalyPatterns, ["closure_risk", "broken_lifecycle"]); pushMany(documentTypes, ["period_close_document"]); diff --git a/llm_normalizer/backend/src/services/assistantService.ts b/llm_normalizer/backend/src/services/assistantService.ts index 050a62e..c3c9a22 100644 --- a/llm_normalizer/backend/src/services/assistantService.ts +++ b/llm_normalizer/backend/src/services/assistantService.ts @@ -8,6 +8,8 @@ import * as assistantDataLayer_1 from "./assistantDataLayer"; import * as assistantSessionLogger_1 from "./assistantSessionLogger"; import * as investigationState_1 from "./investigationState"; import * as retrievalResultNormalizer_1 from "./retrievalResultNormalizer"; +import * as questionTypeResolver_1 from "./questionTypeResolver"; +import * as companyAnchorResolver_1 from "./companyAnchorResolver"; function retrievalSummaryForRoute(route) { if (route === "store_canonical") return "Canonical accounting data path selected."; @@ -832,6 +834,26 @@ function extractFollowupAccountAnchorsLoose(text) { } return Array.from(new Set(anchors)); } +function inferP0DomainFromMessage(text) { + const lower = String(text ?? "").toLowerCase(); + const accountTokens = extractAccountTokens(lower); + const hasVatAccount = accountTokens.some((token) => /^(?:19|68)(?:\.|$)/.test(token)); + const hasSettlementAccount = accountTokens.some((token) => /^(?:51|60|62|76)(?:\.|$)/.test(token)); + const hasMonthCloseAccount = accountTokens.some((token) => /^(?:97|2\d|3\d|4[0-4])(?:\.|$)/.test(token)); + const vatLexical = /(?:ндс|vat|счет[\s-]?фактур|сч[её]т[\s-]?фактур|книг[аи]\s+(?:покуп|продаж)|налогов)/i.test(lower); + const settlementLexical = /(?:долг|аванс|зач[её]т|взаимозач|расч[её]т|оплат|платеж|платёж|постав|покупател)/i.test(lower); + const monthCloseLexical = /(?:закрыти[ея]\s+месяц|закрытие счетов|регламентн|косвенн|затрат|распределени|рбп|амортиз|финансовых результат)/i.test(lower); + if (hasVatAccount || vatLexical) { + return "vat_document_register_book"; + } + if (monthCloseLexical || hasMonthCloseAccount) { + return "month_close_costs_20_44"; + } + if (hasSettlementAccount || settlementLexical) { + return "settlements_60_62"; + } + return null; +} function hasStrongFollowupAnchors(userMessage, state) { const explicitPeriod = extractNormalizedPeriodLiteral(userMessage); if (explicitPeriod && state.focus.period && explicitPeriod !== state.focus.period) { @@ -840,6 +862,14 @@ function hasStrongFollowupAnchors(userMessage, state) { return true; } } + const inferredDomain = inferP0DomainFromMessage(userMessage); + const activeDomain = compactWhitespace(state.followup_context?.active_domain ?? state.focus.domain ?? ""); + if (inferredDomain && activeDomain && inferredDomain !== activeDomain) { + const domainLooksLikeFollowupRefinement = hasFollowupMarker(userMessage) && hasReferentialPointer(userMessage); + if (!domainLooksLikeFollowupRefinement) { + return true; + } + } const explicitAccounts = extractAccountTokens(userMessage); const followupAccounts = explicitAccounts.length > 0 ? explicitAccounts : extractFollowupAccountAnchorsLoose(userMessage); if (followupAccounts.length > 0) { @@ -1155,6 +1185,8 @@ export class AssistantService { const focusDomainHint = followupBinding.usage?.applied ? session.investigation_state?.followup_context?.active_domain ?? session.investigation_state?.focus.domain ?? null : null; + const questionTypeClass = (0, questionTypeResolver_1.resolveQuestionType)(userMessage); + const companyAnchors = (0, companyAnchorResolver_1.resolveCompanyAnchors)(userMessage); const composition = (0, answerComposer_1.composeAssistantAnswer)({ userMessage, routeSummary: normalized.route_hint_summary, @@ -1163,6 +1195,8 @@ export class AssistantService { coverageReport: coverageEvaluation.coverage, groundingCheck, focusDomainHint, + questionTypeHint: questionTypeClass, + companyAnchors, enableAnswerPolicyV11: config_1.FEATURE_ASSISTANT_ANSWER_POLICY_V11, enableProblemCentricAnswerV1: config_1.FEATURE_ASSISTANT_PROBLEM_CENTRIC_ANSWER_V1, enableLifecycleAnswerV1: config_1.FEATURE_ASSISTANT_LIFECYCLE_ANSWER_V1 @@ -1213,6 +1247,8 @@ export class AssistantService { retrieval_results: retrievalResults, answer_grounding_check: groundingCheck, dropped_intent_segments: extractDiscardedIntentSegments(normalized.normalized), + question_type_class: questionTypeClass, + company_anchors: companyAnchors, ...(followupBinding.usage ? { followup_state_usage: followupBinding.usage } : {}), problem_centric_answer_applied: composition.problem_centric_answer_applied ?? false, problem_units_used_count: composition.problem_units_used_count ?? 0, @@ -1276,6 +1312,8 @@ export class AssistantService { route_subject_match: groundingCheck.route_subject_match, clarification_target: coverageEvaluation.coverage.clarification_needed_for, dropped_intent_segments: extractDiscardedIntentSegments(normalized.normalized), + question_type_class: questionTypeClass, + company_anchors: companyAnchors, ...(followupBinding.usage ? { followup_state_usage: followupBinding.usage } : {}), problem_centric_answer_applied: composition.problem_centric_answer_applied ?? false, problem_units_used_count: composition.problem_units_used_count ?? 0, diff --git a/llm_normalizer/backend/src/services/companyAnchorResolver.ts b/llm_normalizer/backend/src/services/companyAnchorResolver.ts new file mode 100644 index 0000000..cbe88d3 --- /dev/null +++ b/llm_normalizer/backend/src/services/companyAnchorResolver.ts @@ -0,0 +1,181 @@ +export interface CompanyAnchorSet { + contract_numbers: string[]; + document_numbers: string[]; + dates: string[]; + amounts: string[]; + accounts: string[]; + periods: string[]; + document_types: string[]; + all: string[]; +} + +const CONTRACT_PATTERN = + /(?:\u0434\u043e\u0433\u043e\u0432\u043e\u0440(?:\u0430|\u0443|ом|е)?\s*(?:№|#|n)?\s*([a-zа-я0-9./_-]+))/giu; +const DOCUMENT_NUMBER_PATTERN = + /(?:(?:\u0441\u0447(?:\u0435|\u0451)\u0442(?:-\u0444\u0430\u043a\u0442\u0443\u0440(?:а|ы))?|\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446(?:ия|ии)|\u0430\u043a\u0442)\s*(?:№|#|n)\s*([a-zа-я0-9./_-]+))/giu; +const DATE_PATTERN = + /\b(?:\d{1,2}[./]\d{1,2}[./]\d{2,4}|\d{1,2}\s+(?:\u044f\u043d\u0432\u0430\u0440\u044f|\u0444\u0435\u0432\u0440\u0430\u043b\u044f|\u043c\u0430\u0440\u0442\u0430|\u0430\u043f\u0440\u0435\u043b\u044f|\u043c\u0430\u044f|\u0438\u044e\u043d\u044f|\u0438\u044e\u043b\u044f|\u0430\u0432\u0433\u0443\u0441\u0442\u0430|\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f|\u043e\u043a\u0442\u044f\u0431\u0440\u044f|\u043d\u043e\u044f\u0431\u0440\u044f|\u0434\u0435\u043a\u0430\u0431\u0440\u044f))\b/giu; +const AMOUNT_PATTERN = + /\b(?:\d{1,3}(?:[ \u00A0]\d{3})+(?:[.,]\d{2})?|\d+[.,]\d{2})\b/gu; +const CONTEXTUAL_ACCOUNT_PATTERN = + /(?:\b(?:\u0441\u0447(?:\u0435|\u0451)\u0442(?:а|у|ом|ов)?|account|schet)\b\s*(?:№|#|:)?\s*)(\d{2}(?:\.\d{2})?)/giu; +const ACCOUNT_PAIR_PATTERN = /\b(\d{2}\.\d{2})\s*\/\s*(\d{2}\.\d{2})\b/gu; +const PERIOD_PATTERN = + /\b(?:20\d{2}(?:[-./](?:0?[1-9]|1[0-2]))?|(?:\u0438\u044e\u043b\u044c|\u0438\u044e\u043d\u044c|\u0430\u0432\u0433\u0443\u0441\u0442|\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c|\u043e\u043a\u0442\u044f\u0431\u0440\u044c|\u043d\u043e\u044f\u0431\u0440\u044c|\u0434\u0435\u043a\u0430\u0431\u0440\u044c|\u044f\u043d\u0432\u0430\u0440\u044c|\u0444\u0435\u0432\u0440\u0430\u043b\u044c|\u043c\u0430\u0440\u0442|\u0430\u043f\u0440\u0435\u043b\u044c|\u043c\u0430\u0439)\s+20\d{2})\b/giu; + +const DOCUMENT_TYPE_PATTERNS: Array<{ name: string; pattern: RegExp }> = [ + { name: "invoice", pattern: /\b(?:\u0441\u0447(?:\u0435|\u0451)\u0442-\u0444\u0430\u043a\u0442\u0443\u0440|invoice)\b/iu }, + { name: "realization", pattern: /\b(?:\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446|realization)\b/iu }, + { name: "payment", pattern: /\b(?:\u043e\u043f\u043b\u0430\u0442|payment|\u043f\u043b\u0430\u0442\u0435\u0436)\b/iu }, + { name: "receipt", pattern: /\b(?:\u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d|receipt)\b/iu }, + { name: "close", pattern: /\b(?:\u0437\u0430\u043a\u0440\u044b\u0442\u0438|\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442)\b/iu }, + { name: "rbp_writeoff", pattern: /\b(?:\u0440\u0431\u043f|\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435)\b/iu }, + { name: "amortization", pattern: /\b(?:\u0430\u043c\u043e\u0440\u0442\u0438\u0437|amortization)\b/iu } +]; + +const KNOWN_ACCOUNT_PREFIXES = new Set([ + "01", + "02", + "07", + "08", + "10", + "13", + "19", + "20", + "21", + "23", + "25", + "26", + "41", + "43", + "44", + "45", + "50", + "51", + "52", + "55", + "57", + "58", + "60", + "62", + "66", + "67", + "68", + "69", + "70", + "71", + "73", + "76", + "90", + "91", + "94", + "96", + "97" +]); + +function uniqueStrings(values: string[], limit = 48): string[] { + return Array.from(new Set(values.map((item) => String(item ?? "").trim()).filter(Boolean))).slice(0, limit); +} + +function normalizeAnchorToken(value: string): string { + return String(value ?? "") + .replace(/\s+/g, " ") + .trim(); +} + +function collectMatches(text: string, pattern: RegExp, useCaptures = true): string[] { + const values: string[] = []; + pattern.lastIndex = 0; + for (const match of text.matchAll(pattern)) { + if (!match) continue; + if (useCaptures && match.length > 1) { + for (let i = 1; i < match.length; i += 1) { + const token = normalizeAnchorToken(match[i] ?? ""); + if (token) values.push(token); + } + continue; + } + const token = normalizeAnchorToken(match[0] ?? ""); + if (token) values.push(token); + } + return uniqueStrings(values); +} + +function isKnownAccount(value: string): boolean { + const token = String(value ?? "").trim(); + const match = token.match(/^(\d{2})/); + if (!match) { + return false; + } + return KNOWN_ACCOUNT_PREFIXES.has(match[1]); +} + +function collectAccountAnchors(text: string): string[] { + const tokens = new Set(); + for (const token of collectMatches(text, CONTEXTUAL_ACCOUNT_PATTERN, true)) { + if (isKnownAccount(token)) { + tokens.add(token); + } + } + ACCOUNT_PAIR_PATTERN.lastIndex = 0; + for (const match of text.matchAll(ACCOUNT_PAIR_PATTERN)) { + const left = normalizeAnchorToken(match[1] ?? ""); + const right = normalizeAnchorToken(match[2] ?? ""); + if (left && isKnownAccount(left)) { + tokens.add(left); + } + if (right && isKnownAccount(right)) { + tokens.add(right); + } + } + return Array.from(tokens).slice(0, 24); +} + +function collectDocumentTypeAnchors(text: string): string[] { + return uniqueStrings( + DOCUMENT_TYPE_PATTERNS.filter((entry) => entry.pattern.test(text)).map((entry) => entry.name), + 12 + ); +} + +function flattenAnchors(input: Omit): string[] { + return uniqueStrings( + [ + ...input.contract_numbers, + ...input.document_numbers, + ...input.dates, + ...input.amounts, + ...input.accounts.map((item) => `account:${item}`), + ...input.periods.map((item) => `period:${item}`), + ...input.document_types.map((item) => `doc_type:${item}`) + ], + 64 + ); +} + +export function resolveCompanyAnchors(input: string): CompanyAnchorSet { + const text = String(input ?? ""); + + const contractNumbers = collectMatches(text, CONTRACT_PATTERN, true).map((item) => `\u0434\u043e\u0433\u043e\u0432\u043e\u0440 № ${item}`); + const documentNumbers = collectMatches(text, DOCUMENT_NUMBER_PATTERN, true).map((item) => `\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 № ${item}`); + const dates = collectMatches(text, DATE_PATTERN, false); + const amounts = collectMatches(text, AMOUNT_PATTERN, false); + const accounts = collectAccountAnchors(text); + const periods = collectMatches(text, PERIOD_PATTERN, false); + const documentTypes = collectDocumentTypeAnchors(text); + + const resultBase: Omit = { + contract_numbers: uniqueStrings(contractNumbers, 12), + document_numbers: uniqueStrings(documentNumbers, 16), + dates: uniqueStrings(dates, 16), + amounts: uniqueStrings(amounts, 16), + accounts: uniqueStrings(accounts, 24), + periods: uniqueStrings(periods, 12), + document_types: documentTypes + }; + + return { + ...resultBase, + all: flattenAnchors(resultBase) + }; +} diff --git a/llm_normalizer/backend/src/services/lifecycleRuntime.ts b/llm_normalizer/backend/src/services/lifecycleRuntime.ts index 01c56a2..f02a518 100644 --- a/llm_normalizer/backend/src/services/lifecycleRuntime.ts +++ b/llm_normalizer/backend/src/services/lifecycleRuntime.ts @@ -627,8 +627,14 @@ function inferLifecycleDomain(input: LifecycleResolverInput): LifecycleDomain { .join(" ") .toLowerCase(); + const hasExplicitVatHint = includesAny(unitTokens, [/domain_hint:vat_flow/]); + const hasExplicitDeferredHint = includesAny(unitTokens, [/domain_hint:deferred_expense/]); + const hasExplicitFixedAssetHint = includesAny(unitTokens, [/domain_hint:fixed_asset/]); + const hasExplicitPeriodCloseHint = includesAny(unitTokens, [/domain_hint:period_close/]); + const hasCustomerSettlementHint = includesAny(unitTokens, [/domain_hint:customer_settlement/]); + const hasBankSettlementHint = includesAny(unitTokens, [/domain_hint:bank_settlement/]); + const hasVatMarkers = includesAny(unitTokens, [ - /domain_hint:vat_flow/, /\binvoice_to_vat\b/, /\bvat_chain_conflict\b/, /(^|[^a-z0-9])nds([^a-z0-9]|$)/, @@ -637,7 +643,6 @@ function inferLifecycleDomain(input: LifecycleResolverInput): LifecycleDomain { /\baccount[_:\s-]?(19|68)\b/ ]); const hasDeferredMarkers = includesAny(unitTokens, [ - /domain_hint:deferred_expense/, /\bdeferred(?:_expense)?\b/, /\bdeferred_expense_to_writeoff\b/, /\bwriteoff\b/, @@ -646,7 +651,6 @@ function inferLifecycleDomain(input: LifecycleResolverInput): LifecycleDomain { /\baccount[_:\s-]?97\b/ ]); const hasFixedAssetMarkers = includesAny(unitTokens, [ - /domain_hint:fixed_asset/, /\bfixed[_\s-]?asset(?:s)?\b/, /\basset_card_to_depreciation\b/, /\bdepreciation(?:_active)?\b/, @@ -655,7 +659,6 @@ function inferLifecycleDomain(input: LifecycleResolverInput): LifecycleDomain { /\baccount[_:\s-]?(01|02|08)\b/ ]); const hasPeriodCloseMarkers = includesAny(unitTokens, [ - /domain_hint:period_close/, /\bperiod[_\s-]?close\b/, /\bperiod_close_risk\b/, /\bclose[_\s-]?risk\b/, @@ -665,6 +668,25 @@ function inferLifecycleDomain(input: LifecycleResolverInput): LifecycleDomain { /\bperiod_risk\b/ ]); + if (hasExplicitDeferredHint) { + return "deferred_expense"; + } + if (hasExplicitFixedAssetHint) { + return "fixed_asset"; + } + if (hasExplicitVatHint) { + return "vat_flow"; + } + if (hasExplicitPeriodCloseHint) { + return "period_close"; + } + if (hasCustomerSettlementHint) { + return "customer_settlement"; + } + if (hasBankSettlementHint) { + return "bank_settlement"; + } + if (hasDeferredMarkers) { return "deferred_expense"; } diff --git a/llm_normalizer/backend/src/services/problemUnitAssembler.ts b/llm_normalizer/backend/src/services/problemUnitAssembler.ts index b90b158..3e5c4cd 100644 --- a/llm_normalizer/backend/src/services/problemUnitAssembler.ts +++ b/llm_normalizer/backend/src/services/problemUnitAssembler.ts @@ -106,14 +106,67 @@ function stringArrayFromPayload(item: EvidenceItem, key: string): string[] { return stringArrayFromUnknown(item.payload[key]); } +function domainHintsFromSummary(summary: Record): string[] { + const hints: string[] = []; + const purityGuard = toObject(summary.domain_purity_guard); + const domainCardId = String(purityGuard?.domain_card_id ?? "").trim(); + if (domainCardId === "settlements_60_62") { + return ["bank_settlement", "customer_settlement"]; + } + if (domainCardId === "vat_document_register_book") { + return ["vat_flow"]; + } + if (domainCardId === "month_close_costs_20_44") { + return ["period_close"]; + } + + const semanticProfile = toObject(summary.semantic_profile); + const domainScope = stringArrayFromUnknown(semanticProfile?.domain_scope); + for (const domain of domainScope) { + const normalized = domain.toLowerCase(); + if ( + normalized === "bank" || + normalized === "settlements" || + normalized === "suppliers" || + normalized === "supplier_payments" || + normalized === "other_settlements" + ) { + hints.push("bank_settlement"); + continue; + } + if (normalized === "customers") { + hints.push("customer_settlement"); + continue; + } + if (normalized === "vat" || normalized === "taxes") { + hints.push("vat_flow"); + continue; + } + if (normalized === "period_close") { + hints.push("period_close"); + continue; + } + if (normalized === "deferred_expense") { + hints.push("deferred_expense"); + continue; + } + if (normalized === "fixed_assets") { + hints.push("fixed_asset"); + } + } + + return uniqueStrings(hints); +} + function extractSemanticProfile(summary: Record): { relation_patterns: string[]; anomaly_patterns: string[]; } { const semanticProfile = toObject(summary.semantic_profile); + const domainHints = domainHintsFromSummary(summary).map((item) => `domain_hint:${item}`); return { - relation_patterns: stringArrayFromUnknown(semanticProfile?.relation_patterns), - anomaly_patterns: stringArrayFromUnknown(semanticProfile?.anomaly_patterns) + relation_patterns: uniqueStrings([...stringArrayFromUnknown(semanticProfile?.relation_patterns), ...domainHints]), + anomaly_patterns: uniqueStrings([...stringArrayFromUnknown(semanticProfile?.anomaly_patterns), ...domainHints]) }; } diff --git a/llm_normalizer/backend/src/services/questionTypeResolver.ts b/llm_normalizer/backend/src/services/questionTypeResolver.ts new file mode 100644 index 0000000..dec3b58 --- /dev/null +++ b/llm_normalizer/backend/src/services/questionTypeResolver.ts @@ -0,0 +1,60 @@ +export type QuestionTypeClass = + | "why_breaks" + | "where_break_is" + | "prove_or_guess" + | "what_is_it_grounded_on" + | "which_chains_are_complete_vs_incomplete" + | "what_to_check_first" + | "unknown"; + +const QUESTION_TYPE_RULES: Array<{ type: QuestionTypeClass; pattern: RegExp }> = [ + { + type: "what_to_check_first", + pattern: + /(?:\bwhat\s+to\s+check\s+first\b|\bfirst\s+check\b|\bcheck\s+first\b|\u0441\s+\u0447\u0435\u0433\u043e\s+\u043d\u0430\u0447\u0430\u0442\u044c\s+\u043f\u0440\u043e\u0432\u0435\u0440\u043a|\u0447\u0442\u043e\s+\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\s+\u043f\u0435\u0440\u0432)/iu + }, + { + type: "what_is_it_grounded_on", + pattern: + /(?:\bwhat\s+is\s+it\s+grounded\s+on\b|\bgrounded\s+on\b|\bbased\s+on\b|\bwhat\s+evidence\b|\u043d\u0430\s+\u0447(?:\u0435|\u0451)\u043c\s+\u044d\u0442\u043e\s+\u043e\u0441\u043d\u043e\u0432\u0430\u043d|\u0447\u0435\u043c\s+\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434)/iu + }, + { + type: "prove_or_guess", + pattern: + /(?:\bprove\b|\bguess\b|\bprove\s+or\s+guess\b|\bis\s+it\s+proven\b|\u044d\u0442\u043e\s+\u0434\u043e\u043a\u0430\u0437\u0430\u043d|\u0438\u043b\u0438\s+\u0442\u043e\u043b\u044c\u043a\u043e\s+\u0433\u0438\u043f\u043e\u0442\u0435\u0437|\u0434\u043e\u043a\u0430\u0437\u0430\u043d|\u0434\u043e\u0433\u0430\u0434|\u0435\u0441\u0442\u044c\s+\u043b\u0438|\u043c\u043e\u0436\u0435\u0442\s+\u043b\u0438|\u044d\u0442\u043e\s+\u0443\u0436\u0435.*\u0438\u043b\u0438)/iu + }, + { + type: "which_chains_are_complete_vs_incomplete", + pattern: + /(?:\bcomplete(?:d)?\b.*\bincomplete\b|\bwhich\s+chains?\b|\bcomplete\s+vs\s+incomplete\b|\u043a\u0430\u043a\u0438\u0435\s+\u0446\u0435\u043f\u043e\u0447\u043a[аи]\s+.*\u0437\u0430\u0432\u0435\u0440\u0448|\u0447\u0442\u043e\s+\u0437\u0430\u043a\u0440\u044b\u0442\u043e.*\u0447\u0442\u043e\s+\u043d\u0435\u0442)/iu + }, + { + type: "where_break_is", + pattern: + /(?:\bwhere\s+is\s+the\s+break\b|\bwhere\s+exactly\b|\blocate\b|\u0433\u0434\u0435\s+\u0438\u043c\u0435\u043d\u043d\u043e|\u0433\u0434\u0435\s+\u0440\u0430\u0437\u0440\u044b\u0432|\u0432\s+\u043a\u0430\u043a\u043e\u043c\s+\u043c\u0435\u0441\u0442\u0435)/iu + }, + { + type: "why_breaks", + pattern: + /(?:\bwhy\b|\bwhy\s+does\s+it\s+break\b|\u043f\u043e\u0447\u0435\u043c\u0443|\u0432\s+\u0447(?:\u0435|\u0451)\u043c\s+\u043f\u0440\u0438\u0447\u0438\u043d\u0430|\u0438\u0437-\u0437\u0430\s+\u0447\u0435\u0433\u043e)/iu + } +]; + +export function resolveQuestionType(input: string): QuestionTypeClass { + const text = String(input ?? "").trim(); + if (!text) { + return "unknown"; + } + + for (const rule of QUESTION_TYPE_RULES) { + if (rule.pattern.test(text)) { + return rule.type; + } + } + + if (/[??]/u.test(text)) { + return "why_breaks"; + } + + return "unknown"; +} diff --git a/llm_normalizer/backend/tests/assistantWave12VatMonthCloseConsistencyRegression.test.ts b/llm_normalizer/backend/tests/assistantWave12VatMonthCloseConsistencyRegression.test.ts new file mode 100644 index 0000000..db19104 --- /dev/null +++ b/llm_normalizer/backend/tests/assistantWave12VatMonthCloseConsistencyRegression.test.ts @@ -0,0 +1,397 @@ +import { describe, expect, it } from "vitest"; +import { composeAssistantAnswer } from "../src/services/answerComposer"; +import type { AnswerGroundingCheck, RequirementCoverageReport, UnifiedRetrievalResult } from "../src/types/assistant"; +import type { ProblemUnit } from "../src/types/stage2ProblemUnits"; + +function buildRouteSummary() { + return { + mode: "deterministic_v2" as const, + message_in_scope: true, + scope_confidence: "high" as const, + planner: { + total_fragments: 1, + in_scope_fragments: 1, + out_of_scope_fragments: 0, + discarded_fragments: 0, + contains_multiple_tasks: false + }, + decisions: [], + fallback: { + type: "none" as const, + message: null + } + }; +} + +function buildCoverage(input?: Partial): RequirementCoverageReport { + return { + requirements_total: 1, + requirements_covered: 1, + requirements_uncovered: [], + requirements_partially_covered: [], + clarification_needed_for: [], + out_of_scope_requirements: [], + ...input + }; +} + +function buildGrounding(input?: Partial): AnswerGroundingCheck { + return { + status: "grounded", + route_subject_match: true, + missing_requirements: [], + reasons: [], + why_included_summary: ["wave12-test"], + selection_reason_summary: ["wave12-test"], + ...input + }; +} + +function buildProblemUnit(input: { + id: string; + type: ProblemUnit["problem_unit_type"]; + account: string; + defect: string; + lifecycleDomain?: ProblemUnit["lifecycle_domain"]; +}): ProblemUnit { + return { + schema_version: "problem_unit_v0_1", + problem_unit_id: input.id, + problem_unit_type: input.type, + title: "Wave12 problem unit", + mechanism_summary: `Mechanism candidate: ${input.defect}.`, + business_defect_class: input.defect, + severity: { + score: 0.72, + grade: "high" + }, + confidence: { + score: 0.58, + grade: "medium" + }, + affected_entities: ["Document:DOC-1"], + affected_documents: ["Document:DOC-1"], + affected_postings: ["Posting:POST-1"], + affected_accounts: [input.account], + affected_counterparties: ["Counterparty:CP-1"], + affected_contracts: ["Contract:CTR-1"], + failed_expected_edge: input.defect, + period_impact: { + is_period_sensitive: true, + impact_class: "close_risk" + }, + evidence_pack: ["cand-1"], + entity_backlinks: [{ entity: "Document", id: "DOC-1" }], + snapshot_limitations: [], + ...(input.lifecycleDomain + ? { + lifecycle_domain: input.lifecycleDomain + } + : {}) + }; +} + +function buildRetrieval(input: { + requirementId: string; + status: UnifiedRetrievalResult["status"]; + units?: ProblemUnit[]; + accountScope?: string[]; + domainScope?: string[]; + relationPatterns?: string[]; + limitations?: string[]; + confidence?: UnifiedRetrievalResult["confidence"]; + withEvidence?: boolean; +}): UnifiedRetrievalResult { + const units = input.units ?? []; + const withEvidence = input.withEvidence ?? input.status !== "empty"; + return { + fragment_id: `F-${input.requirementId}`, + requirement_ids: [input.requirementId], + route: "hybrid_store_plus_live", + status: input.status, + result_type: "chain", + items: + input.status === "empty" + ? [] + : [ + { + source_entity: "Document", + source_id: "DOC-1", + account_context: input.accountScope ?? ["60"], + graph_domain_scope: input.domainScope ?? ["bank_settlement"], + relation_pattern_hits: input.relationPatterns ?? ["payment_to_settlement"] + } + ], + summary: { + broad_query_detected: false, + broad_result_flag: false, + minimum_evidence_failed: false, + degraded_to: null, + narrowing_strength: "strong", + semantic_profile: { + account_scope: input.accountScope ?? ["60", "62"], + domain_scope: input.domainScope ?? ["bank_settlement", "customer_settlement"], + relation_patterns: input.relationPatterns ?? ["payment_to_settlement"] + } + }, + evidence: + input.status === "empty" || !withEvidence + ? [] + : [ + { + evidence_id: `ev-${input.requirementId}`, + claim_ref: `requirement:${input.requirementId}`, + source_type: "retrieval_item", + source_ref: { + schema_version: "evidence_source_ref_v1", + namespace: "snapshot_2020", + entity: "document", + id: "DOC-1", + period: "2020-07", + canonical_ref: "evidence_source_ref_v1|snapshot_2020|document|doc-1|2020-07" + }, + pointer: { + fragment_id: `F-${input.requirementId}`, + route: "hybrid_store_plus_live", + source: { + namespace: "snapshot_2020", + entity: "document", + id: "DOC-1", + period: "2020-07" + }, + locator: { + field_path: "risk_score", + item_index: 0 + } + }, + evidence_kind: "mechanism_link", + mechanism_note: (input.relationPatterns ?? ["payment_to_settlement"])[0], + confidence: input.status === "ok" ? "medium" : "low", + limitation: null, + payload: { + risk_score: 4 + } + } + ], + candidate_evidence: [], + problem_units: units, + problem_unit_summary: + units.length > 0 + ? { + schema_version: "problem_unit_summary_v0_1", + units_total: units.length, + duplicate_collapses: 0, + unit_types: units.map((unit) => unit.problem_unit_type), + type_distribution: { + [units[0]?.problem_unit_type ?? "broken_chain_segment"]: units.length + }, + severity_distribution: { + low: 0, + medium: 0, + high: units.length + }, + confidence_distribution: { + low: 0, + medium: units.length, + high: 0 + }, + primary_unit_type: units[0]?.problem_unit_type ?? null + } + : null, + why_included: ["wave12-test"], + selection_reason: ["wave12-test"], + risk_factors: ["wave12"], + business_interpretation: ["wave12"], + confidence: input.confidence ?? (input.status === "ok" ? "medium" : "low"), + limitations: input.limitations ?? [], + errors: [] + }; +} + +function composeCase(input: { + userMessage: string; + focusDomainHint: string | null; + retrievalResults: UnifiedRetrievalResult[]; + coverage?: Partial; + grounding?: Partial; +}) { + return composeAssistantAnswer({ + userMessage: input.userMessage, + routeSummary: buildRouteSummary(), + retrievalResults: input.retrievalResults, + requirements: [ + { + requirement_id: "R1", + source_fragment_id: "F-R1", + requirement_text: "Wave 12 requirement", + subject_tokens: [], + status: "covered", + route: "hybrid_store_plus_live" + } + ], + coverageReport: buildCoverage(input.coverage), + groundingCheck: buildGrounding(input.grounding), + focusDomainHint: input.focusDomainHint, + enableAnswerPolicyV11: true, + enableProblemCentricAnswerV1: true, + enableLifecycleAnswerV1: true + }); +} + +describe("wave12 vat/month-close consistency + confidence reconciliation", () => { + it("vat_query_with_strong_signal_must_override_stale_settlement_focus_hint", () => { + const vatUnit = buildProblemUnit({ + id: "pu-vat-1", + type: "cross_branch_inconsistency_cluster", + account: "68", + defect: "invoice_to_vat", + lifecycleDomain: "vat_flow" + }); + const output = composeCase({ + userMessage: "VAT chain July: invoice exists, but purchase book is empty for accounts 19/68. Why?", + focusDomainHint: "settlements_60_62", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [vatUnit], + accountScope: ["19", "68"], + domainScope: ["vat_flow"], + relationPatterns: ["invoice_to_vat"] + }) + ] + }); + + expect(output.assistant_reply).toMatch(/НДС|vat|книг|счет[-\s]?фактур/i); + expect(output.assistant_reply).not.toMatch(/60\/62|закрыти[ея]\s+расч[её]т/i); + }); + + it("month_close_query_with_strong_signal_must_override_stale_vat_focus_hint", () => { + const closeUnit = buildProblemUnit({ + id: "pu-close-1", + type: "period_risk_cluster", + account: "25", + defect: "close_operation_runs_missing", + lifecycleDomain: "period_close" + }); + const output = composeCase({ + userMessage: "Month close July: costs on accounts 20/44 were allocated partially. Where is the break?", + focusDomainHint: "vat_document_register_book", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [closeUnit], + accountScope: ["25", "26"], + domainScope: ["period_close"], + relationPatterns: ["close_operation_runs"] + }) + ] + }); + + expect(output.assistant_reply).toMatch(/закрыти|месяц|затрат|распредел|month close|20\/44/i); + expect(output.assistant_reply).not.toMatch(/НДС|счет[-\s]?фактур|книг/i); + }); + + it("vat_domain_with_foreign_primary_evidence_must_degrade_to_clarification", () => { + const output = composeCase({ + userMessage: "Проверь НДС-цепочку по июлю: документ -> регистр -> книга.", + focusDomainHint: "vat_document_register_book", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [], + accountScope: ["20"], + domainScope: ["period_close", "fixed_asset"], + relationPatterns: ["allocation_rules_resolved"] + }) + ] + }); + + expect(output.reply_type).toBe("clarification_required"); + expect(output.assistant_reply).toContain("Ограничения:"); + expect(output.assistant_reply).not.toContain("Опора достаточна для первичного вывода."); + }); + + it("month_close_domain_with_vat_primary_evidence_must_degrade_to_clarification", () => { + const output = composeCase({ + userMessage: "Проверь закрытие месяца и контур затрат 20-44 за июль.", + focusDomainHint: "month_close_costs_20_44", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [], + accountScope: ["19", "68"], + domainScope: ["vat_flow"], + relationPatterns: ["invoice_to_vat"] + }) + ] + }); + + expect(output.reply_type).toBe("clarification_required"); + expect(output.assistant_reply).toContain("Ограничения:"); + expect(output.assistant_reply).not.toContain("Опора достаточна для первичного вывода."); + }); + + it("confidence_limitation_must_not_contradict_each_other", () => { + const vatUnit = buildProblemUnit({ + id: "pu-vat-2", + type: "lifecycle_anomaly_node", + account: "68", + defect: "invoice_to_vat", + lifecycleDomain: "vat_flow" + }); + const output = composeCase({ + userMessage: "Почему по НДС есть сигнал, но механизм выглядит неполным?", + focusDomainHint: "vat_document_register_book", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [vatUnit], + accountScope: ["19", "68"], + domainScope: ["vat_flow"], + relationPatterns: ["invoice_to_vat"], + limitations: ["Source mapping is weak for part of the evidence."] + }) + ], + grounding: { + status: "partial", + reasons: ["Mechanism is unresolved for part of the evidence."] + } + }); + + expect(output.answer_structure_v11?.mechanism_block?.status).toBe("limited"); + expect(output.assistant_reply).toContain("Ограничения:"); + expect(output.assistant_reply).not.toContain("Опора достаточна для первичного вывода."); + }); + + it("settlement_regression_must_remain_pass", () => { + const settlementUnit = buildProblemUnit({ + id: "pu-settlement-1", + type: "broken_chain_segment", + account: "62", + defect: "failed_edge:payment_to_settlement", + lifecycleDomain: "customer_settlement" + }); + const output = composeCase({ + userMessage: "Оплата есть, но 62.01/62.02 не сходятся. Почему долг остался?", + focusDomainHint: "settlements_60_62", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [settlementUnit], + accountScope: ["62.01", "62.02"], + domainScope: ["customer_settlement"], + relationPatterns: ["payment_to_settlement"] + }) + ] + }); + + expect(output.assistant_reply).toMatch(/62\.01|62\.02|расч[её]т|зач[её]т/i); + expect(output.assistant_reply).not.toMatch(/НДС|книг|закрыти[ея]\s+месяц/i); + }); +}); diff --git a/llm_normalizer/backend/tests/assistantWave13DomainFitQuestionTypeAnchorRegression.test.ts b/llm_normalizer/backend/tests/assistantWave13DomainFitQuestionTypeAnchorRegression.test.ts new file mode 100644 index 0000000..1476f6f --- /dev/null +++ b/llm_normalizer/backend/tests/assistantWave13DomainFitQuestionTypeAnchorRegression.test.ts @@ -0,0 +1,405 @@ +import { describe, expect, it } from "vitest"; +import { composeAssistantAnswer } from "../src/services/answerComposer"; +import type { AnswerGroundingCheck, RequirementCoverageReport, UnifiedRetrievalResult } from "../src/types/assistant"; +import type { ProblemUnit } from "../src/types/stage2ProblemUnits"; +import type { QuestionTypeClass } from "../src/services/questionTypeResolver"; + +function buildRouteSummary() { + return { + mode: "deterministic_v2" as const, + message_in_scope: true, + scope_confidence: "high" as const, + planner: { + total_fragments: 1, + in_scope_fragments: 1, + out_of_scope_fragments: 0, + discarded_fragments: 0, + contains_multiple_tasks: false + }, + decisions: [], + fallback: { + type: "none" as const, + message: null + } + }; +} + +function buildCoverage(input?: Partial): RequirementCoverageReport { + return { + requirements_total: 1, + requirements_covered: 1, + requirements_uncovered: [], + requirements_partially_covered: [], + clarification_needed_for: [], + out_of_scope_requirements: [], + ...input + }; +} + +function buildGrounding(input?: Partial): AnswerGroundingCheck { + return { + status: "grounded", + route_subject_match: true, + missing_requirements: [], + reasons: [], + why_included_summary: ["wave13-test"], + selection_reason_summary: ["wave13-test"], + ...input + }; +} + +function buildProblemUnit(input: { + id: string; + type: ProblemUnit["problem_unit_type"]; + account: string; + defect: string; + lifecycleDomain: ProblemUnit["lifecycle_domain"]; +}): ProblemUnit { + return { + schema_version: "problem_unit_v0_1", + problem_unit_id: input.id, + problem_unit_type: input.type, + title: "Wave13 problem unit", + mechanism_summary: `Mechanism candidate: ${input.defect}.`, + business_defect_class: input.defect, + severity: { + score: 0.72, + grade: "high" + }, + confidence: { + score: 0.63, + grade: "medium" + }, + lifecycle_domain: input.lifecycleDomain, + affected_entities: ["Document:DOC-1"], + affected_documents: ["Document:DOC-1"], + affected_postings: ["Posting:POST-1"], + affected_accounts: [input.account], + affected_counterparties: ["Counterparty:CP-1"], + affected_contracts: ["Contract:CTR-1"], + failed_expected_edge: input.defect, + period_impact: { + is_period_sensitive: true, + impact_class: "close_risk" + }, + evidence_pack: ["cand-1"], + entity_backlinks: [{ entity: "Document", id: "DOC-1" }], + snapshot_limitations: [] + }; +} + +function buildRetrieval(input: { + requirementId: string; + status: UnifiedRetrievalResult["status"]; + units?: ProblemUnit[]; + accountScope?: string[]; + domainScope?: string[]; + relationPatterns?: string[]; + withEvidence?: boolean; + notes?: string[]; +}): UnifiedRetrievalResult { + const units = input.units ?? []; + const withEvidence = input.withEvidence ?? input.status !== "empty"; + const accountScope = input.accountScope ?? ["60", "62"]; + const domainScope = input.domainScope ?? ["bank_settlement"]; + const relationPatterns = input.relationPatterns ?? ["payment_to_settlement"]; + return { + fragment_id: `F-${input.requirementId}`, + requirement_ids: [input.requirementId], + route: "hybrid_store_plus_live", + status: input.status, + result_type: "chain", + items: + input.status === "empty" + ? [] + : [ + { + source_entity: "Document", + source_id: "DOC-1", + display_name: "Счет № 4 от 07.07.20", + account_context: accountScope, + graph_domain_scope: domainScope, + relation_pattern_hits: relationPatterns, + period: "2020-07", + amount: "276 873,60" + } + ], + summary: { + broad_query_detected: false, + broad_result_flag: false, + minimum_evidence_failed: false, + degraded_to: null, + narrowing_strength: "strong", + semantic_profile: { + account_scope: accountScope, + domain_scope: domainScope, + relation_patterns: relationPatterns, + period_scope: { + from: "2020-07-01", + to: "2020-07-31", + granularity: "month" + } + } + }, + evidence: + input.status === "empty" || !withEvidence + ? [] + : [ + { + evidence_id: `ev-${input.requirementId}`, + claim_ref: `requirement:${input.requirementId}`, + source_type: "retrieval_item", + source_ref: { + schema_version: "evidence_source_ref_v1", + namespace: "snapshot_2020_07", + entity: "document", + id: "DOC-1", + period: "2020-07", + canonical_ref: "evidence_source_ref_v1|snapshot_2020_07|document|doc-1|2020-07" + }, + pointer: { + fragment_id: `F-${input.requirementId}`, + route: "hybrid_store_plus_live", + source: { + namespace: "snapshot_2020_07", + entity: "document", + id: "DOC-1", + period: "2020-07" + }, + locator: { + field_path: "risk_score", + item_index: 0 + } + }, + evidence_kind: "mechanism_link", + mechanism_note: relationPatterns[0], + confidence: input.status === "ok" ? "medium" : "low", + limitation: null, + payload: { + notes: input.notes ?? [], + contract: "договор № 01/19-ПТ", + amount: "276 873,60", + date: "07.07.20" + } + } + ], + candidate_evidence: [], + problem_units: units, + problem_unit_summary: + units.length > 0 + ? { + schema_version: "problem_unit_summary_v0_1", + units_total: units.length, + duplicate_collapses: 0, + unit_types: units.map((unit) => unit.problem_unit_type), + type_distribution: { + [units[0]?.problem_unit_type ?? "broken_chain_segment"]: units.length + }, + severity_distribution: { + low: 0, + medium: 0, + high: units.length + }, + confidence_distribution: { + low: 0, + medium: units.length, + high: 0 + }, + primary_unit_type: units[0]?.problem_unit_type ?? null + } + : null, + why_included: ["wave13-test"], + selection_reason: ["wave13-test"], + risk_factors: ["wave13"], + business_interpretation: ["wave13"], + confidence: input.status === "ok" ? "medium" : "low", + limitations: [], + errors: [] + }; +} + +function composeCase(input: { + userMessage: string; + questionType: QuestionTypeClass; + focusDomainHint: string | null; + retrievalResults: UnifiedRetrievalResult[]; + coverage?: Partial; + grounding?: Partial; +}) { + return composeAssistantAnswer({ + userMessage: input.userMessage, + routeSummary: buildRouteSummary(), + retrievalResults: input.retrievalResults, + requirements: [ + { + requirement_id: "R1", + source_fragment_id: "F-R1", + requirement_text: "Wave13 requirement", + subject_tokens: [], + status: "covered", + route: "hybrid_store_plus_live" + } + ], + coverageReport: buildCoverage(input.coverage), + groundingCheck: buildGrounding(input.grounding), + focusDomainHint: input.focusDomainHint, + questionTypeHint: input.questionType, + companyAnchors: { + contract_numbers: ["договор № 01/19-ПТ"], + document_numbers: ["документ № 4"], + dates: ["07.07.20", "13.07.20"], + amounts: ["276 873,60"], + accounts: ["62.02"], + periods: ["июль 2020"], + document_types: ["payment", "invoice"], + all: [ + "договор № 01/19-ПТ", + "документ № 4", + "07.07.20", + "13.07.20", + "276 873,60", + "account:62.02", + "period:июль 2020" + ] + }, + enableAnswerPolicyV11: true, + enableProblemCentricAnswerV1: true, + enableLifecycleAnswerV1: true + }); +} + +describe("wave13 domain fit + question-type fit + company-anchor grounding", () => { + it("settlement_query_must_keep_settlement_domain_even_if_retrieval_contains_vat_noise", () => { + const settlementUnit = buildProblemUnit({ + id: "pu-settlement-1", + type: "broken_chain_segment", + account: "62.02", + defect: "failed_edge:payment_to_settlement", + lifecycleDomain: "customer_settlement" + }); + const output = composeCase({ + userMessage: + "Почему по договору № 01/19-ПТ от 09.01.2019 оплата 276 873,60 есть, а 62.01/62.02 все равно не сходятся?", + questionType: "why_breaks", + focusDomainHint: "vat_document_register_book", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [settlementUnit], + accountScope: ["62.01", "62.02", "19"], + domainScope: ["customer_settlement", "vat_flow"], + relationPatterns: ["payment_to_settlement", "invoice_to_vat"] + }) + ] + }); + + expect(output.assistant_reply).toMatch(/расчет|62\.01|62\.02|зачет|зачёт/i); + expect(output.assistant_reply).not.toMatch(/переход от документа к регистру и книге|цепочке ндс/i); + }); + + it("question_type_where_break_is_must_produce_localization_style_line", () => { + const settlementUnit = buildProblemUnit({ + id: "pu-settlement-2", + type: "broken_chain_segment", + account: "62.02", + defect: "failed_edge:payment_to_settlement", + lifecycleDomain: "customer_settlement" + }); + const output = composeCase({ + userMessage: + "Где именно разрыв по договору № 01/19-ПТ: в договоре, объекте расчетов или в связке документов?", + questionType: "where_break_is", + focusDomainHint: "settlements_60_62", + retrievalResults: [buildRetrieval({ requirementId: "R1", status: "ok", units: [settlementUnit] })] + }); + + expect(output.assistant_reply).toMatch(/локализ|узел разрыва|где именно/i); + }); + + it("question_type_prove_or_guess_must_explicitly_separate_proven_vs_hypothesis", () => { + const vatUnit = buildProblemUnit({ + id: "pu-vat-1", + type: "cross_branch_inconsistency_cluster", + account: "68", + defect: "invoice_to_vat", + lifecycleDomain: "vat_flow" + }); + const output = composeCase({ + userMessage: + "По НДС это доказано по данным или это только гипотеза? На чем основано утверждение?", + questionType: "prove_or_guess", + focusDomainHint: "vat_document_register_book", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + units: [vatUnit], + accountScope: ["19", "68"], + domainScope: ["vat_flow"], + relationPatterns: ["invoice_to_vat"] + }) + ], + grounding: { + status: "partial", + reasons: ["Mechanism is unresolved for part of the evidence."] + } + }); + + expect(output.assistant_reply).toMatch(/доказан|гипотез|ограничени/i); + }); + + it("anchor_usage_lines_must_be_present_when_company_anchors_are_used", () => { + const output = composeCase({ + userMessage: + "Оплата по счету № 4 от 07.07.20 на 276 873,60 пришла 13 июля. Что проверить первым по 62.02?", + questionType: "what_to_check_first", + focusDomainHint: "settlements_60_62", + retrievalResults: [buildRetrieval({ requirementId: "R1", status: "ok" })] + }); + + expect(output.assistant_reply).toMatch(/якоря вопроса/i); + expect(output.assistant_reply).toMatch(/договор|07\.07\.20|276 873,60|62\.02/i); + }); + + it("anchor_usage_must_be_honest_when_part_of_anchors_not_confirmed", () => { + const output = composeCase({ + userMessage: + "Почему по договору № 01/19-ПТ не сходится 62.02 в июле 2020, если была оплата 276 873,60?", + questionType: "what_is_it_grounded_on", + focusDomainHint: "settlements_60_62", + retrievalResults: [ + buildRetrieval({ + requirementId: "R1", + status: "ok", + accountScope: ["60"], + domainScope: ["bank_settlement"], + relationPatterns: ["payment_recorded"], + withEvidence: true + }) + ] + }); + + expect(output.assistant_reply).toMatch(/без прямого подтверждения|ограничени/i); + }); + + it("answers_for_different_question_types_must_not_collapse_to_same_generic_pattern", () => { + const baseRetrieval = [buildRetrieval({ requirementId: "R1", status: "ok" })]; + const whereOutput = composeCase({ + userMessage: "Где именно разрыв по 62.01/62.02?", + questionType: "where_break_is", + focusDomainHint: "settlements_60_62", + retrievalResults: baseRetrieval + }); + const checkFirstOutput = composeCase({ + userMessage: "Что проверить первым по 62.01/62.02?", + questionType: "what_to_check_first", + focusDomainHint: "settlements_60_62", + retrievalResults: baseRetrieval + }); + + expect(whereOutput.assistant_reply).not.toEqual(checkFirstOutput.assistant_reply); + expect(whereOutput.assistant_reply).toMatch(/локализ|разрыв/i); + expect(checkFirstOutput.assistant_reply).toMatch(/первый маршрут проверки|начните с первого пункта/i); + }); +}); diff --git a/llm_normalizer/data/eval_cases/eval-7Sx8faOQpm.report.json b/llm_normalizer/data/eval_cases/eval-7Sx8faOQpm.report.json new file mode 100644 index 0000000..e6ad0f7 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-7Sx8faOQpm.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-7Sx8faOQpm", + "timestamp": "2026-03-28T09:54:19.332Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "1wEfvoR_2DJrlV", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по НДС и по закрытию", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "wp-jtQq3mp7uMk", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-DI-aCpLWqK.report.json b/llm_normalizer/data/eval_cases/eval-DI-aCpLWqK.report.json new file mode 100644 index 0000000..6aea3cb --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-DI-aCpLWqK.report.json @@ -0,0 +1,137 @@ +{ + "run_id": "eval-DI-aCpLWqK", + "timestamp": "2026-03-28T09:54:17.753Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 3 + }, + "cases_total": 3, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 33.33, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 33.33, + "routed_fragment_rate": 66.67, + "no_route_fragment_rate": 33.33, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 66.67, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 3, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 1, + "no_route": 1, + "batch_refresh_then_store": 1 + }, + "fallback_distribution": { + "none": 1, + "out_of_scope": 1, + "clarification": 1 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь хвосты по поставщикам и разложи цепочку", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "LQSTgr_jZDLKSE", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Как вообще по ФСБУ", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 1, + "unclear_fragments": 0, + "fallback_type": "out_of_scope", + "predicted_route_status": "no_route", + "expected_route_status": null, + "predicted_no_route_reason": "out_of_scope", + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "C_DgPdm03zoNRm", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-003", + "raw_question": "Покажи топ рисков за июнь 2020", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 0, + "unclear_fragments": 1, + "fallback_type": "clarification", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "ou478il0iFNsIQ", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-KEtQ8SYPKI.report.json b/llm_normalizer/data/eval_cases/eval-KEtQ8SYPKI.report.json new file mode 100644 index 0000000..0d65fdd --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-KEtQ8SYPKI.report.json @@ -0,0 +1,137 @@ +{ + "run_id": "eval-KEtQ8SYPKI", + "timestamp": "2026-03-28T09:23:28.807Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 3 + }, + "cases_total": 3, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 33.33, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 33.33, + "routed_fragment_rate": 66.67, + "no_route_fragment_rate": 33.33, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 66.67, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 3, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 1, + "no_route": 1, + "batch_refresh_then_store": 1 + }, + "fallback_distribution": { + "none": 1, + "out_of_scope": 1, + "clarification": 1 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь хвосты по поставщикам и разложи цепочку", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "wKL8CXbPIJDi5V", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Как вообще по ФСБУ", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 1, + "unclear_fragments": 0, + "fallback_type": "out_of_scope", + "predicted_route_status": "no_route", + "expected_route_status": null, + "predicted_no_route_reason": "out_of_scope", + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "VGu1HWqb9Ka5QF", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-003", + "raw_question": "Покажи топ рисков за июнь 2020", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 0, + "unclear_fragments": 1, + "fallback_type": "clarification", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "rvXo7PioBUelzY", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-KSX4Dsn7Xg.report.json b/llm_normalizer/data/eval_cases/eval-KSX4Dsn7Xg.report.json new file mode 100644 index 0000000..31a4429 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-KSX4Dsn7Xg.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-KSX4Dsn7Xg", + "timestamp": "2026-03-28T09:54:19.191Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "airV6dR4a5sk0p", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по счету 97", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "FpNPo_qn_TakTC", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-O1pl1uP_Kc.report.json b/llm_normalizer/data/eval_cases/eval-O1pl1uP_Kc.report.json new file mode 100644 index 0000000..00f8c10 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-O1pl1uP_Kc.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-O1pl1uP_Kc", + "timestamp": "2026-03-28T09:09:42.733Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "DYfGFpealu2tnx", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по НДС и по закрытию", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "ZweuomcToD_MJn", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-WTP_zUxzSk.report.json b/llm_normalizer/data/eval_cases/eval-WTP_zUxzSk.report.json new file mode 100644 index 0000000..19df6c2 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-WTP_zUxzSk.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-WTP_zUxzSk", + "timestamp": "2026-03-28T09:23:30.429Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "pgJG_e5WDfRPGr", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по НДС и по закрытию", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "0iHAq9Sf3LQoGv", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-XunNzxsTLF.report.json b/llm_normalizer/data/eval_cases/eval-XunNzxsTLF.report.json new file mode 100644 index 0000000..9aeea47 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-XunNzxsTLF.report.json @@ -0,0 +1,137 @@ +{ + "run_id": "eval-XunNzxsTLF", + "timestamp": "2026-03-28T09:43:10.148Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 3 + }, + "cases_total": 3, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 33.33, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 33.33, + "routed_fragment_rate": 66.67, + "no_route_fragment_rate": 33.33, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 66.67, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 3, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 1, + "no_route": 1, + "batch_refresh_then_store": 1 + }, + "fallback_distribution": { + "none": 1, + "out_of_scope": 1, + "clarification": 1 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь хвосты по поставщикам и разложи цепочку", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "iwEKj8yXXL_94j", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Как вообще по ФСБУ", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 1, + "unclear_fragments": 0, + "fallback_type": "out_of_scope", + "predicted_route_status": "no_route", + "expected_route_status": null, + "predicted_no_route_reason": "out_of_scope", + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "Ww5O8UQ8xVYdqX", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-003", + "raw_question": "Покажи топ рисков за июнь 2020", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 0, + "unclear_fragments": 1, + "fallback_type": "clarification", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "U2ODfQtj3y9ieS", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-XyP2pAdsJB.report.json b/llm_normalizer/data/eval_cases/eval-XyP2pAdsJB.report.json new file mode 100644 index 0000000..cf05b44 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-XyP2pAdsJB.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-XyP2pAdsJB", + "timestamp": "2026-03-28T09:58:48.945Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "KH-f-MZ4cm--WR", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по счету 97", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "yiAsfJaSW5Qm3o", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-a3v4udOWPA.report.json b/llm_normalizer/data/eval_cases/eval-a3v4udOWPA.report.json new file mode 100644 index 0000000..cf568f3 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-a3v4udOWPA.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-a3v4udOWPA", + "timestamp": "2026-03-28T09:43:11.528Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "YGuB_vMi7qg803", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по счету 97", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "snXRfmWFgVHm3i", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-do0FoiH-Xe.report.json b/llm_normalizer/data/eval_cases/eval-do0FoiH-Xe.report.json new file mode 100644 index 0000000..cef8e2d --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-do0FoiH-Xe.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-do0FoiH-Xe", + "timestamp": "2026-03-28T09:43:11.767Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "dOLnE76GCDaC7H", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по НДС и по закрытию", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "cTDkKra0xTEPWK", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-gt_MR9X37J.report.json b/llm_normalizer/data/eval_cases/eval-gt_MR9X37J.report.json new file mode 100644 index 0000000..fdfd18f --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-gt_MR9X37J.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-gt_MR9X37J", + "timestamp": "2026-03-28T09:09:42.504Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "u0PbQMwXMrEkkc", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по счету 97", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "HzY3_UubbqgLW1", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-nBbn-LjIiA.report.json b/llm_normalizer/data/eval_cases/eval-nBbn-LjIiA.report.json new file mode 100644 index 0000000..d118b70 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-nBbn-LjIiA.report.json @@ -0,0 +1,137 @@ +{ + "run_id": "eval-nBbn-LjIiA", + "timestamp": "2026-03-28T09:09:41.153Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 3 + }, + "cases_total": 3, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 33.33, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 33.33, + "routed_fragment_rate": 66.67, + "no_route_fragment_rate": 33.33, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 66.67, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 3, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 1, + "no_route": 1, + "batch_refresh_then_store": 1 + }, + "fallback_distribution": { + "none": 1, + "out_of_scope": 1, + "clarification": 1 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь хвосты по поставщикам и разложи цепочку", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "-H_wQprzOS7_Id", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Как вообще по ФСБУ", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 1, + "unclear_fragments": 0, + "fallback_type": "out_of_scope", + "predicted_route_status": "no_route", + "expected_route_status": null, + "predicted_no_route_reason": "out_of_scope", + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "fQOvPenqT3TF8w", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-003", + "raw_question": "Покажи топ рисков за июнь 2020", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 0, + "unclear_fragments": 1, + "fallback_type": "clarification", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "Z3MSiUIB6-qCqJ", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-qsqmRe1REB.report.json b/llm_normalizer/data/eval_cases/eval-qsqmRe1REB.report.json new file mode 100644 index 0000000..f1566ef --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-qsqmRe1REB.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-qsqmRe1REB", + "timestamp": "2026-03-28T09:23:30.226Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "t27mUt40DZkNxA", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по счету 97", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "SRUJifR4MwjGqq", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-vXCfmE5dFG.report.json b/llm_normalizer/data/eval_cases/eval-vXCfmE5dFG.report.json new file mode 100644 index 0000000..6defae4 --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-vXCfmE5dFG.report.json @@ -0,0 +1,111 @@ +{ + "run_id": "eval-vXCfmE5dFG", + "timestamp": "2026-03-28T09:58:49.158Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 2 + }, + "cases_total": 2, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 100, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 0, + "routed_fragment_rate": 100, + "no_route_fragment_rate": 0, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 100, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 2, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 2 + }, + "fallback_distribution": { + "none": 2 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь счет 60 за июнь 2020", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "ZU34_DiRow0vZ5", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Покажи риски по НДС и по закрытию", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "Nojaq_kesX2XGI", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/data/eval_cases/eval-xytqNgINxK.report.json b/llm_normalizer/data/eval_cases/eval-xytqNgINxK.report.json new file mode 100644 index 0000000..9b7899c --- /dev/null +++ b/llm_normalizer/data/eval_cases/eval-xytqNgINxK.report.json @@ -0,0 +1,137 @@ +{ + "run_id": "eval-xytqNgINxK", + "timestamp": "2026-03-28T09:58:47.522Z", + "mode": "single-pass-strict", + "use_mock": true, + "prompt_version": "normalizer_v2_0_2", + "schema_version": "v2_0_2", + "dataset": { + "source": "inline_raw_questions", + "file": null, + "raw_questions_count": 3 + }, + "cases_total": 3, + "metrics": { + "schema_validation_pass_rate": 100, + "scope_detection_accuracy": null, + "scope_in_scope_rate": 33.33, + "multi_intent_detected_rate": 0, + "clarification_required_rate": 0, + "avg_fragments_per_message": 1, + "out_of_scope_fragment_rate": 33.33, + "routed_fragment_rate": 66.67, + "no_route_fragment_rate": 33.33, + "route_resolution_accuracy": null, + "no_route_precision": null, + "false_no_route_rate": null, + "execution_state_consistency_rate": 66.67, + "executable_with_soft_assumptions_rate": 100, + "soft_assumption_used_fragment_rate": 100, + "clarification_precision": null, + "clarification_recall": null, + "false_clarification_rate": null + }, + "budget": { + "requests_total": 0, + "retries_used": 0 + }, + "clarification_eval": { + "labeled_cases": 0, + "true_positive": 0, + "false_positive": 0, + "false_negative": 0 + }, + "route_eval": { + "labeled_cases": 0, + "correct_cases": 0, + "expected_routed_cases": 0, + "no_route_true_positive": 0, + "no_route_false_positive": 0 + }, + "scope_eval": { + "labeled_cases": 0, + "correct_cases": 0 + }, + "execution_state_eval": { + "checks_total": 3, + "checks_passed": 2 + }, + "route_distribution": { + "hybrid_store_plus_live": 1, + "no_route": 1, + "batch_refresh_then_store": 1 + }, + "fallback_distribution": { + "none": 1, + "out_of_scope": 1, + "clarification": 1 + }, + "results": [ + { + "case_id": "BQ-001", + "raw_question": "Проверь хвосты по поставщикам и разложи цепочку", + "validation_passed": true, + "message_in_scope": true, + "scope_confidence": "high", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 1, + "out_of_scope_fragments": 0, + "unclear_fragments": 0, + "fallback_type": "none", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 1, + "trace_id": "JUjGkgksG-QX_y", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-002", + "raw_question": "Как вообще по ФСБУ", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 1, + "unclear_fragments": 0, + "fallback_type": "out_of_scope", + "predicted_route_status": "no_route", + "expected_route_status": null, + "predicted_no_route_reason": "out_of_scope", + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "9Os3edsGypmVvr", + "request_count_for_case": 0 + }, + { + "case_id": "BQ-003", + "raw_question": "Покажи топ рисков за июнь 2020", + "validation_passed": true, + "message_in_scope": false, + "scope_confidence": "low", + "contains_multiple_tasks": false, + "fragments_total": 1, + "in_scope_fragments": 0, + "out_of_scope_fragments": 0, + "unclear_fragments": 1, + "fallback_type": "clarification", + "predicted_route_status": "routed", + "expected_route_status": null, + "predicted_no_route_reason": null, + "expected_no_route_reason": null, + "predicted_clarification_required": false, + "expected_clarification_required": null, + "executable_with_soft_assumptions_fragments": 0, + "trace_id": "FgsR4vO6BqpNvV", + "request_count_for_case": 0 + } + ] +} \ No newline at end of file diff --git a/llm_normalizer/docs/runs/2026-03-28_Stage_04_Wave_14_Domain_Regression_Rollback_Domain_Locked_Anchor_Usage.zip b/llm_normalizer/docs/runs/2026-03-28_Stage_04_Wave_14_Domain_Regression_Rollback_Domain_Locked_Anchor_Usage.zip new file mode 100644 index 0000000000000000000000000000000000000000..30422e15d52bec036b649a973ad3f9fd6ab27836 GIT binary patch literal 472177 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

vI3Yyi;?nx#TDe3(wN3gNS9aHRg!9r|b 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 _HQh1cibR}U>l;CAzbDYxHBry48?t(mu z2*OS)Yy0{dzvL4tUkjVVi_22+S@slhd7+AgBo&*(?vnA0PUHr;eN%#&YS#K}stCQz z(2V0Pt9azKXxY?}*HqFn@v&TcYZqG;D;Kn69DJ@8aS1h-3*N2}uCkUY_5aSu^>jg$ zxvf}h)KG~7ddbIRPsS{bdyi~v~FC}EPNhVCX0!_FwhD{7`~*EljDd~(d6V`Nd;zq5Id;4!6WEd7p*aHhd@|k=2(`vEm&dZxGfxg#gZZ` zo0rJrQ7}x{8kaa)Q!cxzjB)s`6y4Zg&JJ%>|OB;q+F2@0{VhP%EN}=ru8!we*4~ghLX58tTyFIAr4`4~-X{uC2 zDnnKOlBfVa)mtRW9|!fHix!RtH*b*?x<1}oe%l@^zn^b6WW-G_iOf00On3^^n_(=l6FLsP|g4UFnwIANrOk-z)8=q?s9IwIyKPdM!c7K=RHU`Ws7JezWegR zj|`L+qKQg^)V5@BD5s9k@60+m2-3>3(bP0Rkqw`?BPSe%*Bn>)Z-JXqAT2|{@CE^y zEQ)vmky3Z%{b}$Yfoo(Ptx0-1L#F6RGi3>C)5}rp)~$Wr;&9E^R1o%dtZSB$7b#YQVXtvpVUD=DrabzRKZo{O`GAhUiR`O&`|E@^>cE9)E+%#X zh48HF)zpy9J(7fNn#Y;kwxn}QcvVJwaJuQV>ymEyK(CIyw4@gNFPs!UJV~XqvmJANLBKz0|JzLs zzYoShB(U!1Gfa@n`OTv|&~Ji#Mfjj=ZbSRi0yPZhHY|n)-+CUnG@ZL)GBGZZ&x7;w6iU-vXRt-PXCZMd|O`*T#d6PBuKX3>O2CZ*(nepHJU z`Zs?6hTcUmHwKmIf1q4&B^v;gJJfk=D_sQC%r@sv%1iH2#}%1Z#I>5ExZ;?Yp0kiM zrT`zwX553?8J44HrsNh?z|>x(*shawFU=uk=h*(>mYMyZVakFW7ylT$44OU|>Bp4{ z^~I<1WWs8<8B){=-8N<&b{l5Jv5ySZkZ#RisAnZw5x>34FL3K8p%+M$p?qRV9Sd)o zTy)&!+FD7H32;dXCM2nEb!^dgt)Sf^Y9P&cqYjwrz7_+qP{?Y}>Y-Ozcc- zYhoL3&-~7N@44rB?)j&x_v*c>YS-?5x_8xgeU?DG?oX5$Y!Sn>>E%LWMm@Tbo50D0 zusW)IX=yg<#)Cf`zy~2O{Xy>7#mVSgaA={Z;E_h-{9o+nck#~~=H9jkx!9CCzrpx_ z_&ACsh8aUtG3nOKOsj(+Qrz*QAVe$Ta7GR)J3YkVG0D=gM%A!4saQQn?!h%<3okcULJe`2k#lD|4kG`FV&w1^+EkLMKK~#;zUA_L&%F-q{+hCjjQB+7 z`Se(1U?kY%BlBHE?nS6*W0u;uc*uDURvFmxy<@D%QE7xjvf$G>W{$4u;Dt)6CdFaL z$p0OSDRCrZL9C!mpNE2vJyzfe)khgie)pi5L?CRX>^qhS2N%hDz}&S~Q+HObssKTy zri+2wu76(MPD_Rt(ZATM&MoI2eo)o^NIEs9nCZ*(`x#W8)Pnz zYx}}T@_i^+E{s;B@(!h3A&o!QIcQ!G2>R)V$x-U0#AF)c$t&p5?&E7=c7o;sIqvtCxZ*e0XUU31c>arPZn3a!h=M0o&iC11+J9~j^tM!B4sS9D z;s>|fTL82oKTHm11!07hq7#YYUp@7^-3d=pgn0g6r&1}G>%^4hs()L%#o$fA{<)=f7>`5u z!;7T$G~U^6oY(^lUh*aVWJQ*T8V+funD8NR(n&JIL>37t;ko51U15haK33brP2_U) z?BSWP^*4Unh}{J9@AX>Liz_8?@QW*M0>9h~E5F>wC*0^>IY))i$0rLvJsanmneDL1 z8LOu!!q>FNr~FU8JKv%YpKibffARq?c)Rq&XXNB+{qF_)zq|*g!WYMt$cw?5J{-P1n;YQWA6UOXc~!p8e)3*y&;Kpf0ki$Lw)#8USA?Ev zk5?97TYqQ!lNZo=Z|R5E$jSD<&cAYMKfKm@0i8d*KH)?T%6`w3%;My8FmSD+nX+cS z=gpj>`1x1SDsdB`d$A3=Taq?;?f&kyUW<6KtppDIUp>x$cI!Z){5|MCI@#d-!pr!r z{`S=5X9uIvVfU3&r1|eHqx&lx0#CbSKl*=T#V)%mLHZW@zdf07T}t%q;TZ3xCs?y#kdJ;gynyW_P?K9K)w3+vl}PE!gLY006$i3{HF&uA;Gd)Sdp6~ z_BUaBz{%zo;p%gzin|h!vTkcj9fqUEk=|a-1hQBI7@c}NrT3~sQg+dqQyLF&-aMrM zteU<|6VCMa=aUL|dM$jH;n!ePe%al|A(9m8A}SR@xiIg6Vn2m^F}BswJd9#1L`)6$ zm+#+$eAri#uoNrVAS!FEVV4vShqLI(ym@sNIduk1xwK^T5lg!!Nju=zQ~ZAkG}Vik z%yEal+OyhpD;HxCG9K_up>Z2YzWCRDPAxa)5Q0L(KW-dCfw4K}PC@;^S4KhW2t0FF zNHA=60rR1EA!G>{`_`1dQ2D|oa-veIW3lIO(V(oNOoeE>VzOB{X^Pa_N?4*aOOTdT z4XcsWU{kxNj9Z98?j;eiiAo7|`Uem>^@Jtcp`DvMgI*PIGv6^ZFWpU}EaD}+V?A{! z*@NA;Hm;VAW!}=807SM=iL*azGB?+HR#{wV$F7@@;pQFhH6jjkd21@>P@$*EcbwsdRT{p1}x_`eAb=(Z|qE<+OHll86m0{lWUPm`x9o{(vdtahP2 zpILNeFwg@Lx%eRSK>MH6Es>K{UGswrPK|x`OXM_cDk@`&=EzWeFN`yx<-oT~giwtq z<3?QNpU&&wz(4MokSy-xVCy<6ftwn6(P$pdv5D zn;%9N1f*L_WPnt&XxeI8Z1smgzoBKh{2q*s322HEC*=N}a;0oIYRQ4Y7he?DX27@V zL-Y�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 Z~Lb*DRd3Su@)tSL)Qu{$-Y~8jr^v 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%0DMHn$93#55srLaPI+ql^{VksZY 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