Improve local evidence search and AI capabilities
This commit is contained in:
@@ -740,8 +740,15 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
|
||||
var status = summary.status || {};
|
||||
var settings = status.settings && typeof status.settings === 'object' ? status.settings : {};
|
||||
var includePaths = Array.isArray(settings.includePaths) ? settings.includePaths : ['.'];
|
||||
statusNode.textContent = '索引 ' + Number(status.documentCount || 0) + ' 个页面 / ' + Number(status.resourceCount || 0) + ' 个资源 / ' + Number(status.evidenceBlockCount || 0) + ' 个证据块' + (status.scheduledDue ? ',已到计划时间' : '');
|
||||
var savedIncludePaths = Array.isArray(settings.includePaths) ? settings.includePaths : [];
|
||||
var indexedPaths = Array.isArray(status.indexedPaths) ? status.indexedPaths : [];
|
||||
var includePaths = savedIncludePaths.length ? savedIncludePaths : indexedPaths;
|
||||
var hasIndexCache = status.indexExists === true || status.evidenceIndexExists === true;
|
||||
if (!savedIncludePaths.length && !hasIndexCache) {
|
||||
statusNode.textContent = '未设置索引范围';
|
||||
} else {
|
||||
statusNode.textContent = '索引 ' + Number(status.documentCount || 0) + ' 个页面 / ' + Number(status.resourceCount || 0) + ' 个资源 / ' + Number(status.evidenceBlockCount || 0) + ' 个证据块' + (status.scheduledDue ? ',已到计划时间' : '');
|
||||
}
|
||||
if (!(rangesNode instanceof HTMLElement) || !rangesNode.contains(document.activeElement)) {
|
||||
renderLocalIndexRangeRows(popover, includePaths, localIndexStatusKind(status), false, status);
|
||||
}
|
||||
@@ -762,6 +769,9 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
|
||||
function localIndexStatusKind(status) {
|
||||
if (!status || typeof status !== 'object') return 'fault';
|
||||
var settings = status.settings && typeof status.settings === 'object' ? status.settings : {};
|
||||
var includePaths = Array.isArray(settings.includePaths) ? settings.includePaths : [];
|
||||
if (!includePaths.length && status.indexExists !== true && status.evidenceIndexExists !== true) return 'indexed';
|
||||
if (status.indexExists !== true) return 'fault';
|
||||
if (status.cacheMatchesSettings === true && status.scheduledDue !== true) return 'indexed';
|
||||
return 'indexing';
|
||||
@@ -774,10 +784,10 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
}
|
||||
|
||||
function localIndexPathStatusKind(path, status, fallbackKind) {
|
||||
if (fallbackKind === 'fault' || fallbackKind === 'indexing') return fallbackKind;
|
||||
var indexedPaths = Array.isArray(status && status.indexedPaths) ? status.indexedPaths : [];
|
||||
var normalizedPath = String(path || '').trim() || '.';
|
||||
if (indexedPaths.indexOf(normalizedPath) >= 0 && status.cacheMatchesSettings === true) return 'indexed';
|
||||
if (indexedPaths.indexOf(normalizedPath) >= 0 && status.indexExists === true) return 'indexed';
|
||||
if (fallbackKind === 'fault' || fallbackKind === 'indexing') return fallbackKind;
|
||||
if (status.indexExists === true) return 'indexing';
|
||||
return 'fault';
|
||||
}
|
||||
@@ -789,13 +799,26 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
return String(value || '').trim();
|
||||
}) : [];
|
||||
var paths = disabled ? rawPaths.filter(Boolean) : rawPaths;
|
||||
if (!paths.length && !disabled) paths = ['.'];
|
||||
var savedPaths = Array.isArray(status && status.settings && status.settings.includePaths)
|
||||
? status.settings.includePaths.map(function(value) { return String(value || '').trim(); }).filter(Boolean)
|
||||
: [];
|
||||
var indexedPaths = Array.isArray(status && status.indexedPaths)
|
||||
? status.indexedPaths.map(function(value) { return String(value || '').trim(); }).filter(Boolean)
|
||||
: [];
|
||||
rangesNode.innerHTML = paths.map(function(path, index) {
|
||||
var isPersisted = savedPaths.indexOf(path) >= 0 || indexedPaths.indexOf(path) >= 0;
|
||||
var inputDisabled = disabled || isPersisted;
|
||||
var kind = localIndexPathStatusKind(path, status || {}, fallbackKind || 'fault');
|
||||
var normalizedPath = String(path || '').trim() || '.';
|
||||
var displayPath = inputDisabled && normalizedPath === '.' ? '工作区根目录(全部)' : path;
|
||||
var rootScopeHint = normalizedPath === '.'
|
||||
? '<span class="wolai-page-settings-index-root-hint">当前工作区全部</span>'
|
||||
: '';
|
||||
return '' +
|
||||
'<div class="wolai-page-settings-index-range-row" data-local-index-range-row="true">' +
|
||||
'<span class="wolai-page-settings-index-status-dot" data-index-status="' + kind + '" title="' + escapeHtml(localIndexStatusLabel(kind)) + '"></span>' +
|
||||
'<input type="text" class="wolai-page-settings-index-path" data-local-index-range-input="true" value="' + escapeHtml(path) + '" spellcheck="false"' + (disabled ? ' disabled' : '') + ' />' +
|
||||
'<input type="text" class="wolai-page-settings-index-path" data-local-index-range-input="true" data-local-index-value="' + escapeHtml(normalizedPath) + '" value="' + escapeHtml(displayPath) + '" spellcheck="false"' + (inputDisabled ? ' disabled' : '') + (isPersisted ? ' data-local-index-persisted="true" title="已保存的索引目录不能直接修改;删除后重新新增范围"' : '') + ' />' +
|
||||
rootScopeHint +
|
||||
'<button type="button" class="wolai-page-settings-index-remove" data-local-index-action="remove-path" data-local-index-path-index="' + String(index) + '"' + (disabled ? ' disabled' : '') + ' aria-label="删除索引范围">×</button>' +
|
||||
'</div>';
|
||||
}).join('');
|
||||
@@ -860,16 +883,17 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
|
||||
function localIndexIncludePathsFromForm() {
|
||||
var popover = ensureLocalIndexSettingsPopover();
|
||||
var values = currentLocalIndexRangeValues(popover).map(function(value) {
|
||||
return currentLocalIndexRangeValues(popover).map(function(value) {
|
||||
return value.trim();
|
||||
}).filter(Boolean);
|
||||
return values.length ? values : ['.'];
|
||||
}
|
||||
|
||||
function currentLocalIndexRangeValues(popover) {
|
||||
var root = popover || ensureLocalIndexSettingsPopover();
|
||||
return Array.from(root.querySelectorAll('[data-local-index-range-input]')).map(function(input) {
|
||||
return input instanceof HTMLInputElement ? input.value : '';
|
||||
if (!(input instanceof HTMLInputElement)) return '';
|
||||
if (input.disabled && input.dataset.localIndexValue) return input.dataset.localIndexValue;
|
||||
return input.value;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -901,7 +925,6 @@ export function createSidebarPageSettingsRuntime(context) {
|
||||
var summary = pageUiState.localIndexSummary || {};
|
||||
var values = currentLocalIndexRangeValues(popover);
|
||||
values.splice(Number(index || 0), 1);
|
||||
if (!values.length) values = [''];
|
||||
renderLocalIndexRangeRows(popover, values, localIndexStatusKind(summary.status || {}), false, summary.status || {});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user