fix(kb): 完善知识库入库和重建索引
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
var sourceTable = document.getElementById("knowledgeSourceTable");
|
||||
var documentFileInput = document.getElementById("knowledgeDocumentFile");
|
||||
var uploadDropzone = document.getElementById("knowledgeUploadDropzone");
|
||||
var rebuildButton = document.getElementById("knowledgeRebuildIndexButton");
|
||||
var rebuildStatus = document.getElementById("knowledgeRebuildStatus");
|
||||
|
||||
function csrfToken() {
|
||||
var cookie = document.cookie.split("; ").find(function (item) {
|
||||
@@ -68,6 +70,17 @@
|
||||
return response.json();
|
||||
}
|
||||
|
||||
async function rebuildIndex() {
|
||||
var response = await fetch(page.getAttribute("data-rebuild-url"), {
|
||||
method: "POST",
|
||||
headers: { "X-CSRFToken": csrfToken() },
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error("法规索引重建失败。");
|
||||
}
|
||||
return response.json();
|
||||
}
|
||||
|
||||
function renderResults(payload) {
|
||||
if (!results) {
|
||||
return;
|
||||
@@ -196,6 +209,59 @@
|
||||
});
|
||||
}
|
||||
|
||||
async function handleRebuild(trigger) {
|
||||
if (!page.getAttribute("data-rebuild-url")) {
|
||||
return;
|
||||
}
|
||||
var originalText = trigger ? trigger.textContent : "";
|
||||
if (trigger) {
|
||||
trigger.disabled = true;
|
||||
trigger.textContent = "入库中";
|
||||
}
|
||||
if (rebuildButton && trigger !== rebuildButton) {
|
||||
rebuildButton.disabled = true;
|
||||
}
|
||||
if (rebuildStatus) {
|
||||
rebuildStatus.textContent = "正在重建法规 RAG 索引...";
|
||||
}
|
||||
try {
|
||||
var payload = await rebuildIndex();
|
||||
if (rebuildStatus) {
|
||||
rebuildStatus.textContent = "重建完成,入库片段 " + (payload.chunk_count || 0) + " 个。";
|
||||
}
|
||||
window.setTimeout(function () {
|
||||
window.location.reload();
|
||||
}, 600);
|
||||
} catch (error) {
|
||||
if (rebuildStatus) {
|
||||
rebuildStatus.textContent = error.message || "法规索引重建失败。";
|
||||
}
|
||||
if (trigger) {
|
||||
trigger.disabled = false;
|
||||
trigger.textContent = originalText;
|
||||
}
|
||||
if (rebuildButton) {
|
||||
rebuildButton.disabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rebuildButton) {
|
||||
rebuildButton.addEventListener("click", function () {
|
||||
handleRebuild(rebuildButton);
|
||||
});
|
||||
}
|
||||
|
||||
if (sourceTable) {
|
||||
sourceTable.addEventListener("click", function (event) {
|
||||
var button = event.target.closest("[data-source-action='index']");
|
||||
if (!button) {
|
||||
return;
|
||||
}
|
||||
handleRebuild(button);
|
||||
});
|
||||
}
|
||||
|
||||
if (searchForm && queryInput) {
|
||||
searchForm.addEventListener("submit", async function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user