Этап 4 / Пакет по РБП восстановление живого контура сбора данных и доказательной базы
This commit is contained in:
@@ -122,6 +122,86 @@ describe.sequential("assistant MCP runtime bridge", () => {
|
||||
const summary = result.summary as Record<string, unknown>;
|
||||
const liveSummary = summary.live_mcp as Record<string, unknown>;
|
||||
expect(liveSummary.status).toBe("error");
|
||||
expect(result.limitations.some((item) => item.includes("Live MCP"))).toBe(true);
|
||||
expect(result.limitations.some((item) => /live/i.test(item))).toBe(true);
|
||||
});
|
||||
|
||||
it("does not inject out-of-scope rows when account filter matched zero", async () => {
|
||||
process.env[MCP_FLAG] = "1";
|
||||
process.env[MCP_PROXY] = "http://127.0.0.1:6003";
|
||||
process.env[MCP_CHANNEL] = "default";
|
||||
|
||||
const payload = JSON.stringify({
|
||||
success: true,
|
||||
data: [
|
||||
{
|
||||
Период: "2026-03-01T00:00:00",
|
||||
Регистратор: "Операция бухгалтерская 0002",
|
||||
СчетДт: "91.02",
|
||||
СчетКт: "51",
|
||||
Сумма: 900
|
||||
}
|
||||
]
|
||||
});
|
||||
const fetchMock = vi.fn(async () => new Response(payload, { status: 200 }));
|
||||
vi.stubGlobal("fetch", fetchMock);
|
||||
|
||||
const { AssistantDataLayer } = await import("../src/services/assistantDataLayer");
|
||||
const dataLayer = new AssistantDataLayer(createSnapshotRoot());
|
||||
const result = await dataLayer.executeRouteRuntime("hybrid_store_plus_live", "Check account 60 only");
|
||||
|
||||
const summary = result.summary as Record<string, unknown>;
|
||||
const liveSummary = summary.live_mcp as Record<string, unknown>;
|
||||
expect(fetchMock).toHaveBeenCalledTimes(1);
|
||||
expect(Array.isArray(liveSummary.account_scope)).toBe(true);
|
||||
expect((liveSummary.account_scope as string[]).some((item) => String(item).includes("60"))).toBe(true);
|
||||
expect(liveSummary.matched_rows).toBe(0);
|
||||
expect(liveSummary.returned_rows).toBe(0);
|
||||
expect(result.items).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("uses claim-bound live call sequence for RBP lifecycle query", async () => {
|
||||
process.env[MCP_FLAG] = "1";
|
||||
process.env[MCP_PROXY] = "http://127.0.0.1:6003";
|
||||
process.env[MCP_CHANNEL] = "default";
|
||||
|
||||
const payload = JSON.stringify({
|
||||
success: true,
|
||||
data: [
|
||||
{
|
||||
Период: "2020-07-31T00:00:00",
|
||||
Регистратор: "Списание РБП за Июль 2020",
|
||||
СчетДт: "20.01",
|
||||
СчетКт: "97.01",
|
||||
Сумма: 5000
|
||||
},
|
||||
{
|
||||
Период: "2020-07-31T00:00:00",
|
||||
Регистратор: "Закрытие месяца Июль 2020",
|
||||
СчетДт: "97.01",
|
||||
СчетКт: "20.01",
|
||||
Сумма: 5000
|
||||
}
|
||||
]
|
||||
});
|
||||
const fetchMock = vi.fn(async () => new Response(payload, { status: 200 }));
|
||||
vi.stubGlobal("fetch", fetchMock);
|
||||
|
||||
const { AssistantDataLayer } = await import("../src/services/assistantDataLayer");
|
||||
const dataLayer = new AssistantDataLayer(createSnapshotRoot());
|
||||
const result = await dataLayer.executeRouteRuntime(
|
||||
"hybrid_store_plus_live",
|
||||
"31 июля прошло Списание РБП за июль 2020 на 5000. Есть ли хвост РБП?"
|
||||
);
|
||||
|
||||
expect(fetchMock).toHaveBeenCalledTimes(4);
|
||||
const summary = result.summary as Record<string, unknown>;
|
||||
const liveSummary = summary.live_mcp as Record<string, unknown>;
|
||||
expect(liveSummary.claim_type).toBe("prove_rbp_tail_state");
|
||||
expect(Array.isArray(liveSummary.required_live_calls)).toBe(true);
|
||||
expect((liveSummary.required_live_calls as unknown[]).length).toBe(4);
|
||||
expect(Array.isArray(liveSummary.executed_live_calls)).toBe(true);
|
||||
expect((liveSummary.executed_live_calls as unknown[]).length).toBe(4);
|
||||
expect(liveSummary.matched_rows).toBeGreaterThan(0);
|
||||
expect(result.items.some((item) => Array.isArray((item as Record<string, unknown>).relation_pattern_hits))).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user