Закрепить расширенный AGENT-прогон качества 1С-ассистента

This commit is contained in:
2026-05-23 09:07:24 +03:00
parent 50d938b8f1
commit e38223e33e
10 changed files with 647 additions and 50 deletions
@@ -382,7 +382,7 @@ function classifyBankOperationSemanticBucket(row) {
}
function bankOperationSemanticBucketLabel(bucket) {
if (bucket === "commission") {
return "комиссии и банковое обслуживание";
return "комиссии и банковское обслуживание";
}
if (bucket === "deposit_or_credit") {
return "депозиты, кредиты или проценты";
@@ -3886,6 +3886,7 @@ function composeFactualReplyBody(intent, rows, options = {}) {
(String(right.period ?? "").localeCompare(String(left.period ?? ""), "ru")))
.slice(0, Math.min(rows.length, 5));
const semanticSummary = summarizeBankOperationSemantics(rows);
const compactRoleAnswer = /(?:клиент|поставщик|финансов|роль|коротко)/iu.test(String(options.userMessage ?? ""));
const compactEvidenceRows = visibleRows.map((row, index) => {
const direction = bankOperationDirectionLabel(bankOperationDirection(row));
const amount = formatMoneyRub(row.amount ?? 0);
@@ -3901,13 +3902,13 @@ function composeFactualReplyBody(intent, rows, options = {}) {
`Коротко: найдено банковских операций${counterparty ? ` по ${counterparty}` : " по контрагенту"}${rows.length}.`,
summarizeBankOperationDirections(rows),
roleBoundary ?? "Показываю подтвержденные банковские операции из текущего среза.",
bankOperationEvidenceLine(rows, preferredBankEvidenceDirection(options.userMessage)),
...(semanticSummary ? [semanticSummary] : []),
"Примеры строк 1С:",
...compactEvidenceRows,
"Следующий шаг: могу отдельно разложить назначения платежа, договоры или отделить банковский контур от клиентского/поставщицкого."
...(semanticSummary ? [semanticSummary] : [])
];
if (rows.length > visibleRows.length) {
if (!compactRoleAnswer) {
lines.push(bankOperationEvidenceLine(rows, preferredBankEvidenceDirection(options.userMessage)), "Примеры строк 1С:", ...compactEvidenceRows);
}
lines.push("Следующий шаг: могу отдельно разложить назначения платежа, договоры или отделить банковский контур от клиентского/поставщицкого.");
if (!compactRoleAnswer && rows.length > visibleRows.length) {
lines.push(`Показаны первые ${visibleRows.length} из ${rows.length}; полный список остается в подтвержденном срезе.`);
}
return {
@@ -1212,22 +1212,16 @@ function derivedValueFlowConfirmedLine(pilot) {
const organization = organizationScope ? ` по организации ${organizationScope}` : "";
const counterparty = flow.counterparty ? ` по контрагенту ${flow.counterparty}` : "";
const period = flow.period_scope ? ` за период ${flow.period_scope}` : " в проверенном окне";
const movementLabel = flow.value_flow_direction === "outgoing_supplier_payout"
? "исходящих платежей/списаний"
: "входящих денежных поступлений";
const totalLabel = flow.value_flow_direction === "outgoing_supplier_payout"
? "сумма исходящих платежей/списаний составляет"
: "сумма входящих денежных поступлений составляет";
? "исходящие платежи/списания"
: "входящие денежные поступления";
const caveat = flow.value_flow_direction === "outgoing_supplier_payout"
? "Это расчет по найденным строкам 1С, а не подтверждение полного объема платежей вне проверенного окна."
: "Это расчет по найденным строкам 1С, а не подтверждение полного объема поступлений вне проверенного окна.";
const dates = flow.first_movement_date && flow.latest_movement_date
? ` Первая найденная дата движения: ${flow.first_movement_date}; последняя: ${flow.latest_movement_date}.`
: "";
? "Граница: это проверенный денежный срез по найденным списаниям в 1С, не внешний аудит всех платежей вне этого окна."
: "Граница: это проверенный денежный срез по найденным поступлениям в 1С, не внешний аудит всех поступлений вне этого окна.";
const limitCaveat = flow.coverage_limited_by_probe_limit
? " Лимит строк проверки достигнут; полный запрошенный период может быть покрыт не полностью."
? " Проверка уперлась в лимит строк, поэтому полный период может быть покрыт не полностью."
: "";
return `По найденным строкам ${movementLabel} в 1С${counterparty}${period} ${totalLabel} ${flow.total_amount_human_ru} Учтено строк с суммой: ${flow.rows_with_amount} из ${flow.rows_matched}.${dates}${limitCaveat} ${caveat}`;
return `${totalLabel}${counterparty || organization}${period}: ${flow.total_amount_human_ru}.${limitCaveat} ${caveat}`;
}
function derivedValueFlowMonthlyLines(pilot) {
const flow = pilot.derived_value_flow;
@@ -1831,7 +1825,7 @@ function buildAssistantMcpDiscoveryAnswerDraft(pilot) {
: pilot.derived_ranked_value_flow && derivedValueLine
? [derivedValueLine]
: derivedValueLine
? [...pilot.evidence.confirmed_facts, derivedValueLine, ...monthlyConfirmedLines]
? [derivedValueLine, ...monthlyConfirmedLines]
: valueFlowZeroResultConfirmedLine(pilot)
? [valueFlowZeroResultConfirmedLine(pilot)]
: derivedEntityResolutionLine
@@ -520,14 +520,12 @@ function businessOverviewInventoryLine(overview) {
}
const amount = moneyText(inventory.total_amount_human_ru);
const rows = Number(inventory.rows_matched);
const quantity = Number(inventory.total_quantity);
if (!amount && !Number.isFinite(rows)) {
return null;
}
const pieces = [
Number.isFinite(rows) ? `${rows} позиций` : null,
amount ? `на ${sentenceAmount(amount) ?? amount}` : null,
Number.isFinite(quantity) && quantity > 0 ? `количество ${quantity}` : null
amount ? `на ${sentenceAmount(amount) ?? amount}` : null
].filter((item) => Boolean(item));
return pieces.length > 0 ? `Склад: ${pieces.join(", ")}.` : null;
}
@@ -919,7 +917,7 @@ function buildCompactBusinessOverviewReply(entryPoint, draft) {
}
if (customerName && customerAmount) {
lines.push(topCustomerLooksFinancial
? `- крупнейший входящий источник: ${customerName}${sentenceAmount(customerAmount) ?? customerAmount}; это похоже на финансовый контур, не на обычную клиентскую выручку;`
? `- крупнейший входящий источник: ${customerName}${sentenceAmount(customerAmount) ?? customerAmount}; это похоже на финансовый контур, не на обычную клиентскую выручку;${nonFinancialCustomer ? ` крупнейший небанковский входящий контрагент: ${nonFinancialCustomer};` : ""}`
: `- крупнейший источник денег: ${customerName}${sentenceAmount(customerAmount) ?? customerAmount}; это сигнал концентрации на крупном заказчике;`);
}
if (topSupplier) {
@@ -549,7 +549,7 @@ function classifyBankOperationSemanticBucket(row: ComposeStageRow): BankOperatio
function bankOperationSemanticBucketLabel(bucket: BankOperationSemanticBucket): string {
if (bucket === "commission") {
return "комиссии и банковое обслуживание";
return "комиссии и банковское обслуживание";
}
if (bucket === "deposit_or_credit") {
return "депозиты, кредиты или проценты";
@@ -4940,6 +4940,7 @@ function composeFactualReplyBody(
)
.slice(0, Math.min(rows.length, 5));
const semanticSummary = summarizeBankOperationSemantics(rows);
const compactRoleAnswer = /(?:клиент|поставщик|финансов|роль|коротко)/iu.test(String(options.userMessage ?? ""));
const compactEvidenceRows = visibleRows.map((row, index) => {
const direction = bankOperationDirectionLabel(bankOperationDirection(row));
const amount = formatMoneyRub(row.amount ?? 0);
@@ -4955,13 +4956,17 @@ function composeFactualReplyBody(
`Коротко: найдено банковских операций${counterparty ? ` по ${counterparty}` : " по контрагенту"}${rows.length}.`,
summarizeBankOperationDirections(rows),
roleBoundary ?? "Показываю подтвержденные банковские операции из текущего среза.",
bankOperationEvidenceLine(rows, preferredBankEvidenceDirection(options.userMessage)),
...(semanticSummary ? [semanticSummary] : []),
"Примеры строк 1С:",
...compactEvidenceRows,
"Следующий шаг: могу отдельно разложить назначения платежа, договоры или отделить банковский контур от клиентского/поставщицкого."
...(semanticSummary ? [semanticSummary] : [])
];
if (rows.length > visibleRows.length) {
if (!compactRoleAnswer) {
lines.push(
bankOperationEvidenceLine(rows, preferredBankEvidenceDirection(options.userMessage)),
"Примеры строк 1С:",
...compactEvidenceRows
);
}
lines.push("Следующий шаг: могу отдельно разложить назначения платежа, договоры или отделить банковский контур от клиентского/поставщицкого.");
if (!compactRoleAnswer && rows.length > visibleRows.length) {
lines.push(`Показаны первые ${visibleRows.length} из ${rows.length}; полный список остается в подтвержденном срезе.`);
}
return {
@@ -1392,26 +1392,18 @@ function derivedValueFlowConfirmedLine(pilot: AssistantMcpDiscoveryPilotExecutio
const organization = organizationScope ? ` по организации ${organizationScope}` : "";
const counterparty = flow.counterparty ? ` по контрагенту ${flow.counterparty}` : "";
const period = flow.period_scope ? ` за период ${flow.period_scope}` : " в проверенном окне";
const movementLabel =
flow.value_flow_direction === "outgoing_supplier_payout"
? "исходящих платежей/списаний"
: "входящих денежных поступлений";
const totalLabel =
flow.value_flow_direction === "outgoing_supplier_payout"
? "сумма исходящих платежей/списаний составляет"
: "сумма входящих денежных поступлений составляет";
? "исходящие платежи/списания"
: "входящие денежные поступления";
const caveat =
flow.value_flow_direction === "outgoing_supplier_payout"
? "Это расчет по найденным строкам 1С, а не подтверждение полного объема платежей вне проверенного окна."
: "Это расчет по найденным строкам 1С, а не подтверждение полного объема поступлений вне проверенного окна.";
const dates =
flow.first_movement_date && flow.latest_movement_date
? ` Первая найденная дата движения: ${flow.first_movement_date}; последняя: ${flow.latest_movement_date}.`
: "";
? "Граница: это проверенный денежный срез по найденным списаниям в 1С, не внешний аудит всех платежей вне этого окна."
: "Граница: это проверенный денежный срез по найденным поступлениям в 1С, не внешний аудит всех поступлений вне этого окна.";
const limitCaveat = flow.coverage_limited_by_probe_limit
? " Лимит строк проверки достигнут; полный запрошенный период может быть покрыт не полностью."
? " Проверка уперлась в лимит строк, поэтому полный период может быть покрыт не полностью."
: "";
return `По найденным строкам ${movementLabel} в 1С${counterparty}${period} ${totalLabel} ${flow.total_amount_human_ru} Учтено строк с суммой: ${flow.rows_with_amount} из ${flow.rows_matched}.${dates}${limitCaveat} ${caveat}`;
return `${totalLabel}${counterparty || organization}${period}: ${flow.total_amount_human_ru}.${limitCaveat} ${caveat}`;
}
function derivedValueFlowMonthlyLines(pilot: AssistantMcpDiscoveryPilotExecutionContract): string[] {
@@ -2109,7 +2101,7 @@ export function buildAssistantMcpDiscoveryAnswerDraft(
: pilot.derived_ranked_value_flow && derivedValueLine
? [derivedValueLine]
: derivedValueLine
? [...pilot.evidence.confirmed_facts, derivedValueLine, ...monthlyConfirmedLines]
? [derivedValueLine, ...monthlyConfirmedLines]
: valueFlowZeroResultConfirmedLine(pilot)
? [valueFlowZeroResultConfirmedLine(pilot)!]
: derivedEntityResolutionLine
@@ -602,14 +602,12 @@ function businessOverviewInventoryLine(overview: Record<string, unknown>): strin
}
const amount = moneyText(inventory.total_amount_human_ru);
const rows = Number(inventory.rows_matched);
const quantity = Number(inventory.total_quantity);
if (!amount && !Number.isFinite(rows)) {
return null;
}
const pieces = [
Number.isFinite(rows) ? `${rows} позиций` : null,
amount ? `на ${sentenceAmount(amount) ?? amount}` : null,
Number.isFinite(quantity) && quantity > 0 ? `количество ${quantity}` : null
amount ? `на ${sentenceAmount(amount) ?? amount}` : null
].filter((item): item is string => Boolean(item));
return pieces.length > 0 ? `Склад: ${pieces.join(", ")}.` : null;
}
@@ -1098,7 +1096,7 @@ function buildCompactBusinessOverviewReply(
if (customerName && customerAmount) {
lines.push(
topCustomerLooksFinancial
? `- крупнейший входящий источник: ${customerName}${sentenceAmount(customerAmount) ?? customerAmount}; это похоже на финансовый контур, не на обычную клиентскую выручку;`
? `- крупнейший входящий источник: ${customerName}${sentenceAmount(customerAmount) ?? customerAmount}; это похоже на финансовый контур, не на обычную клиентскую выручку;${nonFinancialCustomer ? ` крупнейший небанковский входящий контрагент: ${nonFinancialCustomer};` : ""}`
: `- крупнейший источник денег: ${customerName}${sentenceAmount(customerAmount) ?? customerAmount}; это сигнал концентрации на крупном заказчике;`
);
}
@@ -1,4 +1,82 @@
[
{
"generation_id": "gen-ag05230604-098bda",
"created_at": "2026-05-23T06:04:40+00:00",
"mode": "saved_user_sessions",
"title": "AGENT | Autonomy business quality pack",
"count": 14,
"domain": "autonomy_business_quality",
"questions": [
"Сколько входящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?",
"Сколько исходящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?",
"А всего сколько денег пришло в ООО Альтернатива Плюс за 2020, без топов и без контрагентов?",
"Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток.",
"скока денег альтернатива заработала за 20 год?",
"а это чистая прибыль?",
"А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам.",
"какое нетто по деньгам с Группа СВК за 2020 год: сколько получили и сколько заплатили?",
"кому мы должны на конец 2020?",
"а нам кто должен на конец 2020?",
"сколько НДС надо заплатить в налоговую за декабрь 2019?",
"Как ты оценишь деятельность компании?",
"Какая номенклатура товара реализована с высокой прибылью какая с низкой?",
"май 2020"
],
"generated_by": "codex_agent",
"saved_case_set_file": "assistant_autogen_saved_user_sessions_20260523060440_gen-ag05230604-098bda.json",
"context": {
"llm_provider": null,
"model": null,
"assistant_prompt_version": null,
"decomposition_prompt_version": null,
"prompt_fingerprint": null,
"autogen_personality_id": null,
"autogen_personality_prompt": null,
"source_session_id": null,
"saved_session_file": "assistant_saved_session_20260523060440_gen-ag05230604-098bda.json",
"saved_case_set_kind": "agent_semantic_scenario",
"agent_run": true,
"agent_focus": "Expanded targeted AGENT replay for the current autonomy milestone: value-flow hot handoff must survive realistic business questions, while final answers must read like a useful 1C analyst instead of runtime/debug prose.",
"architecture_phase": "turnaround_11",
"source_spec_file": "X:\\1C\\NDC_1C\\docs\\orchestration\\agent_autonomy_business_quality_20260523.json",
"scenario_id": "agent_autonomy_business_quality_20260523",
"semantic_tags": [
"autonomy_core",
"bank_boundary",
"bank_classification",
"business_answer_quality",
"business_evaluation",
"business_overview",
"cashflow_overview",
"cashflow_vs_profit",
"clarification",
"colloquial_money",
"colloquial_total",
"counterparty_value_flow",
"debt_answer_quality",
"domain_purity",
"followup_context",
"incoming_total",
"limit_honesty",
"limited_answer",
"net_flow",
"next_action",
"no_profit_substitution",
"no_top_guard",
"nomenclature_margin",
"outgoing_total",
"payables",
"profit_vs_cashflow",
"receivables",
"technical_garbage_guard",
"value_flow",
"vat"
],
"validation_status": "accepted_live_replay",
"validated_run_dir": "artifacts\\domain_runs\\agent_autonomy_business_quality_live4",
"saved_after_validated_replay": true
}
},
{
"generation_id": "gen-ag05221957-713bbd",
"created_at": "2026-05-22T19:57:37+00:00",
@@ -0,0 +1,275 @@
{
"saved_at": "2026-05-23T06:04:40+00:00",
"generation_id": "gen-ag05230604-098bda",
"mode": "saved_user_sessions",
"title": "AGENT | Autonomy business quality pack",
"agent_run": true,
"questions": [
"Сколько входящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?",
"Сколько исходящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?",
"А всего сколько денег пришло в ООО Альтернатива Плюс за 2020, без топов и без контрагентов?",
"Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток.",
"скока денег альтернатива заработала за 20 год?",
"а это чистая прибыль?",
"А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам.",
"какое нетто по деньгам с Группа СВК за 2020 год: сколько получили и сколько заплатили?",
"кому мы должны на конец 2020?",
"а нам кто должен на конец 2020?",
"сколько НДС надо заплатить в налоговую за декабрь 2019?",
"Как ты оценишь деятельность компании?",
"Какая номенклатура товара реализована с высокой прибылью какая с низкой?",
"май 2020"
],
"metadata": {
"assistant_prompt_version": null,
"decomposition_prompt_version": null,
"prompt_fingerprint": null,
"agent_focus": "Expanded targeted AGENT replay for the current autonomy milestone: value-flow hot handoff must survive realistic business questions, while final answers must read like a useful 1C analyst instead of runtime/debug prose.",
"architecture_phase": "turnaround_11",
"source_spec_file": "X:\\1C\\NDC_1C\\docs\\orchestration\\agent_autonomy_business_quality_20260523.json",
"scenario_id": "agent_autonomy_business_quality_20260523",
"semantic_tags": [
"autonomy_core",
"bank_boundary",
"bank_classification",
"business_answer_quality",
"business_evaluation",
"business_overview",
"cashflow_overview",
"cashflow_vs_profit",
"clarification",
"colloquial_money",
"colloquial_total",
"counterparty_value_flow",
"debt_answer_quality",
"domain_purity",
"followup_context",
"incoming_total",
"limit_honesty",
"limited_answer",
"net_flow",
"next_action",
"no_profit_substitution",
"no_top_guard",
"nomenclature_margin",
"outgoing_total",
"payables",
"profit_vs_cashflow",
"receivables",
"technical_garbage_guard",
"value_flow",
"vat"
],
"validation_status": "accepted_live_replay",
"validated_run_dir": "artifacts\\domain_runs\\agent_autonomy_business_quality_live4",
"saved_after_validated_replay": true,
"save_gate": {
"schema_version": "agent_semantic_save_gate_v1",
"validation_status": "accepted_live_replay",
"validated_run_dir": "artifacts\\domain_runs\\agent_autonomy_business_quality_live4",
"final_status": "accepted",
"review_overall_status": "pass",
"business_overall_status": "pass",
"steps_total": 14,
"steps_passed": 14,
"steps_failed": 0,
"steps_with_business_failures": 0,
"steps_with_business_warnings": 0,
"acceptance_gate_passed": true,
"saved_after_validated_replay": true
}
},
"source_session_id": null,
"session": {
"session_id": null,
"mode": "agent_semantic_run",
"items": [
{
"message_id": "agent-user-001",
"role": "user",
"text": "Сколько входящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-002",
"role": "user",
"text": "Сколько исходящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-003",
"role": "user",
"text": "А всего сколько денег пришло в ООО Альтернатива Плюс за 2020, без топов и без контрагентов?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-004",
"role": "user",
"text": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток.",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-005",
"role": "user",
"text": "скока денег альтернатива заработала за 20 год?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-006",
"role": "user",
"text": "а это чистая прибыль?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-007",
"role": "user",
"text": "А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам.",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-008",
"role": "user",
"text": "какое нетто по деньгам с Группа СВК за 2020 год: сколько получили и сколько заплатили?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-009",
"role": "user",
"text": "кому мы должны на конец 2020?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-010",
"role": "user",
"text": "а нам кто должен на конец 2020?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-011",
"role": "user",
"text": "сколько НДС надо заплатить в налоговую за декабрь 2019?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-012",
"role": "user",
"text": "Как ты оценишь деятельность компании?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-013",
"role": "user",
"text": "Какая номенклатура товара реализована с высокой прибылью какая с низкой?",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
},
{
"message_id": "agent-user-014",
"role": "user",
"text": "май 2020",
"created_at": "2026-05-23T06:04:40+00:00",
"reply_type": null,
"trace_id": null,
"debug": null
}
],
"agent_run": true,
"metadata": {
"assistant_prompt_version": null,
"decomposition_prompt_version": null,
"prompt_fingerprint": null,
"agent_focus": "Expanded targeted AGENT replay for the current autonomy milestone: value-flow hot handoff must survive realistic business questions, while final answers must read like a useful 1C analyst instead of runtime/debug prose.",
"architecture_phase": "turnaround_11",
"source_spec_file": "X:\\1C\\NDC_1C\\docs\\orchestration\\agent_autonomy_business_quality_20260523.json",
"scenario_id": "agent_autonomy_business_quality_20260523",
"semantic_tags": [
"autonomy_core",
"bank_boundary",
"bank_classification",
"business_answer_quality",
"business_evaluation",
"business_overview",
"cashflow_overview",
"cashflow_vs_profit",
"clarification",
"colloquial_money",
"colloquial_total",
"counterparty_value_flow",
"debt_answer_quality",
"domain_purity",
"followup_context",
"incoming_total",
"limit_honesty",
"limited_answer",
"net_flow",
"next_action",
"no_profit_substitution",
"no_top_guard",
"nomenclature_margin",
"outgoing_total",
"payables",
"profit_vs_cashflow",
"receivables",
"technical_garbage_guard",
"value_flow",
"vat"
],
"validation_status": "accepted_live_replay",
"validated_run_dir": "artifacts\\domain_runs\\agent_autonomy_business_quality_live4",
"saved_after_validated_replay": true,
"save_gate": {
"schema_version": "agent_semantic_save_gate_v1",
"validation_status": "accepted_live_replay",
"validated_run_dir": "artifacts\\domain_runs\\agent_autonomy_business_quality_live4",
"final_status": "accepted",
"review_overall_status": "pass",
"business_overall_status": "pass",
"steps_total": 14,
"steps_passed": 14,
"steps_failed": 0,
"steps_with_business_failures": 0,
"steps_with_business_warnings": 0,
"acceptance_gate_passed": true,
"saved_after_validated_replay": true
}
}
}
}
@@ -0,0 +1,67 @@
{
"suite_id": "assistant_saved_session_gen-ag05230604-098bda",
"suite_version": "0.1.0",
"schema_version": "assistant_saved_session_suite_v0_1",
"generated_at": "2026-05-23T06:04:40+00:00",
"generation_id": "gen-ag05230604-098bda",
"mode": "saved_user_sessions",
"title": "AGENT | Autonomy business quality pack",
"domain": "autonomy_business_quality",
"scenario_count": 1,
"case_ids": [
"SAVED-001"
],
"cases": [
{
"case_id": "SAVED-001",
"scenario_tag": "agent_saved_user_sessions",
"title": "AGENT | Autonomy business quality pack",
"question_type": "followup",
"broadness_level": "medium",
"turns": [
{
"user_message": "Сколько входящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?"
},
{
"user_message": "Сколько исходящих денег за 2020 год по ООО Альтернатива Плюс без разреза по контрагентам?"
},
{
"user_message": "А всего сколько денег пришло в ООО Альтернатива Плюс за 2020, без топов и без контрагентов?"
},
{
"user_message": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток."
},
{
"user_message": "скока денег альтернатива заработала за 20 год?"
},
{
"user_message": "а это чистая прибыль?"
},
{
"user_message": "А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам."
},
{
"user_message": "какое нетто по деньгам с Группа СВК за 2020 год: сколько получили и сколько заплатили?"
},
{
"user_message": "кому мы должны на конец 2020?"
},
{
"user_message": "а нам кто должен на конец 2020?"
},
{
"user_message": "сколько НДС надо заплатить в налоговую за декабрь 2019?"
},
{
"user_message": "Как ты оценишь деятельность компании?"
},
{
"user_message": "Какая номенклатура товара реализована с высокой прибылью какая с низкой?"
},
{
"user_message": "май 2020"
}
]
}
]
}