test(commands): 添加知识库统计接口的E2E测试

- 在topic-routes中新增knowledge stats路由映射
- 在j2-content-ops测试中添加知识库统计命令调用
- 验证接口返回的存储限制和请求速率监控数据结构有效
- 记录存储限制和请求窗口数量作为测试备注
- 引入parseStdoutJson辅助函数解析JSON输出
This commit is contained in:
zeyu.fz
2026-08-05 20:13:42 +08:00
parent 54da9aa29a
commit e3bb5a7fa0
2 changed files with 26 additions and 1 deletions
@@ -4,7 +4,7 @@
// Note: there is no "append documents to an existing base" command (kb update takes
// no doc-id), so incremental semantics are expressed as a two-document create + deleting one.
import { describe, expect, test } from "vite-plus/test";
import { isKbAdminE2EReady } from "../../helpers.ts";
import { isKbAdminE2EReady, parseStdoutJson } from "../../helpers.ts";
import { JOURNEY_J2_ROUTES } from "../../topic-routes.ts";
import {
cleanupKbFixture,
@@ -67,6 +67,30 @@ describe.skipIf(!isKbAdminE2EReady())("journey J2: 内容运维 (live, 自清理
expect(docStatusRun.exitCode, docStatusRun.stderr).toBe(0);
expect(docStatusRun.stdout.trim()).toBe("COMPLETED");
// 2.5) knowledge stats — monitor endpoint returns valid structure (hard)
const statsRun = await reporter.runStep("kb stats", JOURNEY_J2_ROUTES, [
"knowledge",
"stats",
"--index-id",
kb.indexId,
"--workspace-id",
workspaceId,
"--output",
"json",
]);
expect(statsRun.exitCode, statsRun.stderr).toBe(0);
const statsData = parseStdoutJson<{
data?: {
storageMonitorData?: { indexStorageLimit?: number };
qpsMonitorData?: { monitorData?: unknown[] };
};
}>(statsRun.stdout);
expect(typeof statsData.data?.storageMonitorData?.indexStorageLimit).toBe("number");
expect(Array.isArray(statsData.data?.qpsMonitorData?.monitorData)).toBe(true);
reporter.recordNote(
`storage limit=${statsData.data?.storageMonitorData?.indexStorageLimit} qps windows=${statsData.data?.qpsMonitorData?.monitorData?.length ?? 0}`,
);
// 3) doc tag on doc2 (tagging succeeds: hard; tag read-back: soft — server-side
// display lag or the API not echoing tags are both tolerable)
const tagValue = `e2e-j2-${Date.now() % 100000000}`;
@@ -294,6 +294,7 @@ export const JOURNEY_J2_ROUTES: E2eRouteExports = {
"knowledge doc status": "knowledgeDocStatus",
"knowledge doc tag": "knowledgeDocTag",
"knowledge doc delete": "knowledgeDocDelete",
"knowledge stats": "knowledgeKbStats",
};
export const JOURNEY_J3_ROUTES: E2eRouteExports = {