集成 OpenHub 与 WeKnora Page AI
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env node
|
||||
"use strict";
|
||||
|
||||
const assert = require("node:assert");
|
||||
const fs = require("node:fs");
|
||||
const path = require("node:path");
|
||||
|
||||
const ROOT = process.cwd();
|
||||
const OUTPUT_DIR = path.join(ROOT, "tmp", "task783-weknora-kb-settings-ui-static-smoke");
|
||||
const RESULT_PATH = path.join(OUTPUT_DIR, "result.json");
|
||||
const SETTINGS_RUNTIME = "rust/crates/mnote-web/browser/sidebar-page-settings-runtime.js";
|
||||
const SIDEBAR_RUNTIME = "rust/crates/mnote-web/browser/sidebar-tree-runtime.js";
|
||||
|
||||
function read(relativePath) {
|
||||
return fs.readFileSync(path.join(ROOT, relativePath), "utf8");
|
||||
}
|
||||
|
||||
function assertContains(content, needle, label) {
|
||||
assert(content.includes(needle), `${label} 缺少: ${needle}`);
|
||||
}
|
||||
|
||||
function assertOrdered(content, first, second, label) {
|
||||
const firstIndex = content.indexOf(first);
|
||||
const secondIndex = content.indexOf(second);
|
||||
assert(firstIndex >= 0, `${label} 缺少: ${first}`);
|
||||
assert(secondIndex >= 0, `${label} 缺少: ${second}`);
|
||||
assert(firstIndex < secondIndex, `${label} 顺序错误: ${first} 应早于 ${second}`);
|
||||
}
|
||||
|
||||
function main() {
|
||||
fs.mkdirSync(OUTPUT_DIR, { recursive: true });
|
||||
const settings = read(SETTINGS_RUNTIME);
|
||||
const sidebar = read(SIDEBAR_RUNTIME);
|
||||
|
||||
for (const required of [
|
||||
"data-mnote-weknora-page-replacement=\"true\"",
|
||||
"mnote-weknora-kb-page",
|
||||
"data-testid=\"mnote-weknora-kb-list-pane\"",
|
||||
"data-testid=\"mnote-weknora-kb-card-list\"",
|
||||
"data-knowledge-rag-action=\"select-kb\"",
|
||||
"data-testid=\"mnote-weknora-kb-detail-pane\"",
|
||||
"data-testid=\"mnote-weknora-kb-detail-hero\"",
|
||||
"data-weknora-document-list-view=\"true\"",
|
||||
"知识库列表",
|
||||
"创建知识库",
|
||||
"上传/索引到 WeKnora",
|
||||
"data-testid=\"mnote-weknora-kb-summary\"",
|
||||
"data-knowledge-rag-kb-provider=\"weknora\"",
|
||||
"data-knowledge-rag-kb-id",
|
||||
"data-knowledge-rag-kb-ids",
|
||||
"data-knowledge-rag-processing-count",
|
||||
"data-knowledge-rag-source-picker=\"mnote-filetree\"",
|
||||
"data-knowledge-rag-source-kind=\"local-file-or-folder\"",
|
||||
"本地文件或文件夹,例如 docs/book.pdf / docs",
|
||||
"providerKnowledgeBaseId",
|
||||
"providerKnowledgeId",
|
||||
"provider_mapped",
|
||||
"data-knowledge-rag-kb-id",
|
||||
"data-knowledge-rag-chunk-id",
|
||||
"data-kb-rag-search-result=\"true\"",
|
||||
"data-knowledge-rag-action=\"open-source-reference\"",
|
||||
"data-knowledge-rag-open-reference-mode=\"search-result-open-reference\"",
|
||||
"data-mnote-knowledge-rag-open-reference-mode",
|
||||
"source-registry-reference",
|
||||
"openPrimaryDocument",
|
||||
"resourcePath",
|
||||
"删除 provider index 与 registry 映射,不删除本地文件",
|
||||
]) {
|
||||
assertContains(settings, required, SETTINGS_RUNTIME);
|
||||
}
|
||||
|
||||
assertContains(sidebar, "openKnowledgeRagSourceReference", SIDEBAR_RUNTIME);
|
||||
assertContains(sidebar, "knowledgeRagActionName === 'open-source-reference'", SIDEBAR_RUNTIME);
|
||||
assertContains(sidebar, "knowledgeRagActionName === 'select-kb'", SIDEBAR_RUNTIME);
|
||||
assertContains(sidebar, "knowledgeRagActionName === 'focus-create-kb'", SIDEBAR_RUNTIME);
|
||||
|
||||
assertOrdered(
|
||||
settings,
|
||||
"knowledgeRagKbSummaryHtml(status, entries, providerDocs)",
|
||||
"<div><span>Provider</span><code>",
|
||||
"KB summary 应显示在 provider 详情前",
|
||||
);
|
||||
assertOrdered(
|
||||
settings,
|
||||
"data-knowledge-rag-action=\"open-source-reference\"",
|
||||
"data-knowledge-rag-action=\"delete-source\"",
|
||||
"source row 应先提供打开引用,再提供删除索引",
|
||||
);
|
||||
|
||||
const result = {
|
||||
ok: true,
|
||||
checkedFiles: [SETTINGS_RUNTIME, SIDEBAR_RUNTIME],
|
||||
assertions: {
|
||||
kbSummaryVisible: true,
|
||||
weknoraPageReplacementVisible: true,
|
||||
weknoraKbListPaneVisible: true,
|
||||
weknoraKbDetailPaneVisible: true,
|
||||
weknoraDocumentListViewVisible: true,
|
||||
fileTreePickerBoundary: true,
|
||||
processingStateVisible: true,
|
||||
searchResultOpenReference: true,
|
||||
sourceRowOpenReference: true,
|
||||
deletePreservesLocalFileCopy: true,
|
||||
noBackendKnowledgeRagEditRequired: true,
|
||||
},
|
||||
};
|
||||
fs.writeFileSync(RESULT_PATH, `${JSON.stringify(result, null, 2)}\n`, "utf8");
|
||||
console.log(JSON.stringify(result, null, 2));
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user