feat(admin): 「数据源 & RAG」页做实 —— admin 三 mock 页清零 (P1)

审计 P1「admin 三页纯 mock」最后一页。此前 DatasourcesPage 的 GraphRAG 拓扑图
写死节点、「向量/全文/图谱权重滑块」纯 mock——而且权重概念本身虚构:mcp-go 的
RRF 融合是各路等权的倒排互惠融合(rrfK=60 平滑常数),根本没有"每路占几成"。

- store/datasource_query.go:AllDatasources(全平台 KB + 各库文档数/总字数,
  按 (space_id,name) 关联 doc,WithoutTenant);GET /admin/datasources(含
  SystemCounts 平台计数)。
- DatasourcesPage 重写:保留真实 Embedding 模型配置(ModelManager) + 诚实的
  混合检索管线说明(三路 Milvus/Bleve/Neo4j + RRF 等权融合 k=60,非可调权重) +
  平台计数卡片 + 真知识库清单表。删假滑块+假拓扑(~200行 mock)。

诚实边界:RRF 无每路权重,不摆假滑块;检索参数在 mcp-go 代码中。

live:/admin/datasources 返 34用户/25库/53文档,清单带真实文档数字数;
浏览器渲染全对。tsc+41 vitest 全绿。**admin 三 mock 页(Evals/Guardrails/
Datasources)全部做实。**

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-07-18 12:26:16 +08:00
parent c02ebc7bce
commit e29bc9a91e
5 changed files with 173 additions and 222 deletions
+19
View File
@@ -365,6 +365,25 @@ export async function guardrailEvents(limit = 100): Promise<GuardrailEvent[]> {
return d.events ?? [];
}
// ---- 数据源清单(真数据,全平台知识库)----
export interface DatasourceKB {
id: string;
name: string;
kind: string;
tenant_id: string;
tenant_name: string;
owner: string;
doc_count: number;
total_words: number;
}
export async function adminDatasources(): Promise<{ counts: { users: number; kbs: number; docs: number }; datasources: DatasourceKB[] }> {
const res = guard(await fetch(`${ADMIN}/datasources`, { headers: authHeaders() }));
const d = (await res.json().catch(() => ({}))) as { counts?: { users: number; kbs: number; docs: number }; datasources?: DatasourceKB[]; error?: string };
if (!res.ok) throw new Error(d.error ?? `datasources failed: ${res.status}`);
return { counts: d.counts ?? { users: 0, kbs: 0, docs: 0 }, datasources: d.datasources ?? [] };
}
// gatewayOnline 用公开的 /healthz 探活(不受鉴权影响)。
export async function gatewayOnline(): Promise<boolean> {
try {